buzzsprout / buzzsprout-api Goto Github PK
View Code? Open in Web Editor NEWThe official documentation for the Buzzsprout API (http://www.buzzsprout.com).
The official documentation for the Buzzsprout API (http://www.buzzsprout.com).
Is there a way currently or a property to be added to denote what type the episode is (full, trailer or bonus)?
I can add it to a tag, but ideally there would be a cleaner way to know since Buzzsprout's UI already gives the option to set that flag.
Hi,
Today, we can not access artwork_url
content from our site.
Yesterday, It worked
Ex: https://storage.buzzsprout.com/variants/7kon9841dpy4ggc6ximnbqiiafwe/0f95c46b012ee16829275052a5437910393899d65a5a9fc329ee783c2bb4e05c.jpeg
Thanks.
I am currently working on an Android app that, among other things, I am pulling all the episodes of my podcast into so that users can listen without being redirected to something like iTunes or Spotify.
In my testing, I have noticed that hitting the audio_url
attribute doesn't update the number listed in the total_plays
field, so I presume no download is logged for the episode this way.
Is there a way of hitting the BuzzSprout API to log a download and have the numbers update accordingly? Thanks
Looking at episodes.md doesn't seem like we can pull stats about an episode.
For creating a simple viewing script in say Vim or VS Code it would be helpful to also pull the stats about an episode.
Hi,
I'm trying to get episode creation working. I am POSTing the example given in the docs and all I get back is a 200 OK with a list of all episodes.
Here's what I'm sending:
curl --location --request POST 'https://buzzsprout.com/api/XXXXXXX/episodes.json?api_token=XXXXX' \ --header 'Content-Type: application/json' \ --data-raw '{ "title":"Too many or too few?", "description":"", "summary":"", "artist":"Muffin Man", "tags":"", "published_at":"2019-09-12T03:00:00.000-04:00", "duration":23462, "hq":false, "guid":"Buzzsprout788880", "inactive_at":null, "episode_number":400, "season_number":5, "explicit":true, "private":true, "email_user_after_audio_processed": true, "audio_url": "https://www.google.com/my_audio_file.mp4", "artwork_url": "https://www.google.com/my_artwork_file.jpeg" }'
Note, I've tried sending Auth headers, too, but that seems to not work, at least when GETting.
Greetings! Thank you for creating this API to allow me to programmatically get the content from my podcast. I'm curious if might be possible to return the transcript of each episode? There's just so much content in there that would be extremely useful for me to have access to.
Hello! We are using the Buzzsprout API to fetch all videos right now. But as our episode list continues to grow, it seems unnecessary to load all our data at once. Are pagination queries supported with the current API? If not what is the recommended course of action?
Hi ๐
According to some of our listeners, as well as external feed validation services (e.g. https://www.castfeedvalidator.com ) it is super helpful to have the "Custom Episode Webpage" set for each episode in the feed.
When editing an episode (via https://www.buzzsprout.com/XXXXX/podcast/edit ) it is already possible to set that. That field however is not exposed via the API and cannot be set via the API (see here: https://github.com/buzzsprout/buzzsprout-api/blob/master/sections/episodes.md#create-episode ).
Given that our publishing workflow is completely automated, it is not really feasible for us to set this manually for every episode.
Thus, I kindly ask you to enable setting this field via the API.
All the best from Bad Nauheim, Germany!
https://www.buzzsprout.com/api/9999/episodes.json
to create a new episode of how we pass audio files?
i have tried file headers.
Hi, thank you for sharing this great API.
I am using POST API to upload new episode to my podcast.
I tried both audio_url
key and audio_file
key to upload audio file but both of them fails to work.
audio_url
key to POSTThis is my python code.
import requests
url = "https://www.buzzsprout.com/api/{MY_PODCAST_ID}/episodes"
payload = {'title': 'Test2',
'description': 'test',
'summary': '',
'artist': 'TEST',
'tags': '',
'published_at': '2019-01-15 04:00:00 -0500',
'hq': 'false',
'episode_number': '10',
'season_number': '1',
'private': 'true',
'explicit': 'false',
'audio_url': 'https://laughing-singularity.s3.ap-northeast-2.amazonaws.com/2023_06_23_4_Scarlett%20Johansson_vjro0xCuGcWzKwXCFKeg_final.mp3?response-content-disposition=inline&X-Amz-Security-Token=IQoJb3JpZ2luX2VjEMD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDmFwLW5vcnRoZWFzdC0yIkcwRQIgJrhqyYVSSMTxcXAeT%2FicQhXjiWlKDQvbrBnQeElayrECIQCqpUWTjjhAm2t7I0j4jvSYNxMIof001myAHkiwH7WC9yrkAggpEAAaDDA2NDc1MTkzMzEzNSIM4TpkCTyPAk8cfY8WKsEC6%2BtdF4Y92T3885yRT%2B0dyUjaKkb7LqwzEwmPqZXvDiBvZ0RIuhOEsmyDtAjxqwynug00SiOHtQcHzRvE8LMSXXdHsdsYLrz6g7bqFuAlCZRLy9xzymbmWCOi595yK5VwbeZ%2BZL52KsZU8ySEaNlaDGt2Dy2rcKtTe%2Ft8v%2Baer4oR1gpyxb7Wd1zzS2zEBg%2FKuMqywDqC7SVuUCdYSLUkYFZs%2Fr%2FUMxbcsTeGLJ2Ehhlu7uXId7oxh%2FhBhZwE9jeRy1wP9kywaoVXbX12l3Av5wAD27lhqT9G0M5%2FDK6s36p7t%2FivCxmtI2PYWJr8XwrhRmbhs4jxWbkKGkH69%2FKVY78LZsibAFEGDaCy84QqeMxKm9Y6pea%2F%2Be7Wn77oTq3gDYXEciSPWJww66wKoNXrtXQK3lMfFeyL4rVrIjtdkdu%2FMMzk36QGOrMCLg1hc7BWDZRwNG2XfUPlWd1gn78I6IbdGVoRlNoeZUe8uMRJrTTXbg2GSMR04LL17jOuR%2FfAwbnkhAfAVI3%2FNdtvS10YmckLMeZfTqfKUpvdyJAuyybkVThUFeRqkyW2IEjF6VlSuF2d6%2F9PRUmwF3Y2z1oHQBsAm%2F1wisRi%2FKyksjd0H34NveR7s3YWSyOtPMr4xdyHKTztx7cTrBVvu5vR8yPY7O%2FKNwEp1ZrcpBSSa8aqZ3EWNjWBQzRP4dal0PtmP7MiwXQ6VvG9uUAZCKFRx8N8pxZ9hdjY%2F4wQ1U%2FSd6IcBgArTasehTlj8qyellAIPyj4K5ycy1zfNv1V140Fzvt%2FX2RfsrIx%2Fl4PMr%2FVfOg81LS4hTa9vM%2F5iV8joAcSuenk3FNydjnSdNIbsw5wIg%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230625T075311Z&X-Amz-SignedHeaders=host&X-Amz-Expires=43200&X-Amz-Credential=ASIAQ6E4EC3HW7Y4KSLX%2F20230625%2Fap-northeast-2%2Fs3%2Faws4_request&X-Amz-Signature=5e1ec9d289da5b8439239d87579d8f501392b20aa77f25b38631ec65b96ad576' }
headers = {
'Authorization': 'Bearer MY_TOKEN_ID'
}
response = requests.request("POST", url, headers=headers, data=payload, files=files)
Value of audio_url
is presigned public URL of audio file in AWS S3 bucket. (This URL might will expire after 12 hours).
Request works fine (status 201), but when I checked Buzzsprout webpage, I see below image.
This icon is not even clickable so I cannot delete this episode.
audio_file
key to POSTimport requests
url = "https://www.buzzsprout.com/api/{MY_PODCAST_ID}/episodes"
payload = {'title': 'Test2',
'description': 'test',
'summary': '',
'artist': 'TEST',
'tags': '',
'published_at': '2019-01-15 04:00:00 -0500',
'hq': 'false',
'episode_number': '10',
'season_number': '1',
'private': 'true',
'explicit': 'false',
}
headers = {
'Authorization': 'Bearer MY_TOKEN_ID'
}
# `audio_file_path` is local path where mp3 file exists.
audio_file_path = "./intro.mp3"
files=[
('audio_file',('file',open(audio_file_path, 'rb'),'application/octet-stream'))
]
response = requests.request("POST", url, headers=headers, data=payload, files=files)
POST fails with Request failed with status code: 422 Unprocessable Entity error.
Can you help me?
Thanks so much for releasing an API. Just getting around to rebooting my podcast and this is going to be a huge help for the new site!
Proposing a slight enhancement to add an examples directory to the documentation with some other implementations. I created a quick plugin for Gatsby.js that might be useful for some examples using JS/Node. https://github.com/chancestrickland/gatsby-source-buzzsprout
Happy to throw up a PR in the next few days myself if you're open to collaborating!
Hey there! Thanks for creating such an easy API to work with. I wanted to provide folks with a link to the episode on Buzzsprout. I found that I could construct a URL to that, and I thought I'd document it for other folks. It'd be great if this could be a property returned by the API, too.
$episode->url = sprintf("https://www.buzzsprout.com/%s/%s", $podcast_id, $episode->id);
This is a PHP snippet where $podcast_id
is your podcast's ID as determined by Buzzsprout, and the $episode->id
is in the API response.
Thanks!
The current API doesn't provide access to transcripts. On our site, we want to sync the transcript to playback. Keeping all of the podcast assets on Buzzsprout would be preferred to keeping the transcript in multiple locations.
The only supported GET endpoint I see mentioned here is episodes.json
(for getting all episodes).
I assume it's possible to get a single episode? If so, how?
Hi all,
How get the duration of video/media via APIs or Embed?
Would it be possible to get a working example of a post using audio_file instead of audio_url?
Would be a huge help.
Is there any parameter for the episodes.json api so that we can add pagination to the api.
i want to episodes in chunks
To get the information behind podcast episodes, a podcast ID is required. This is trivial to get by hand, however, it cannot be done programmatically. This is an issue if we're building an implementation in which there could be multiple podacsts, and therefore multiple podcast ID's.
The only current workaround is to get the podcast ID manually and hardcode it within the implementation.
Currently, there is no way to GET a list of podcasts.
Implement a get request for getting podcast information.
To return a podcasts.json as a response:
[
{
"id":"xxxxxx",
"title":"The nice podcast",
"description":"this is the nice podcast",
"category":"tech",
"language":"EN-GB",
"artwork_url":"https://storage.buzzsprout.com/variants/NABbMDx7JN5bSLzLPXyj67jA/8d66eb17bb7d02ca4856ab443a78f2148cafbb129f58a3c81282007c6fe24ff2",
"website_url":"https://example.com",
"episodeCount":5,
"description":"",
"total_plays":150,
"directories": [
{"spotify":{"directory_link":"..." },
} ]
},
Hello, my team would like to pass a startdate/enddate datetime parameter to the endpoint https://www.buzzsprout.com/api/9999999/episodes.json so that we can get aggregate results for the start to end datetime period. Is this possible? and if so could you provide a sample url with this parameter applied for an example time period.
Hi,
I saw there is a way to upload a local audio file as an attachment. Can you elaborate on how to do that?
For example, how to do it in python?
Hello,
I've noticed recently that the API doesn't respond with a description for a good bit with new episodes. I noticed it occur twice now, where every other episode loads the description but the newer episode (usually the day it is posted) is missing its description. Nonetheless, it does appear after like a day or so of being up. Not sure if this was known or not but just wanted to report it.
Hey team,
We are using Buzzsprout for our podcasts, and we need to know when each episode is published and available to our listeners. However, every time we receive a full list, we are unable to determine the status of each episode (whether it's already available or not). Is it possible to consider this request for your roadmap or do you have any workaround suggestions we could try on our end?
Hi, as the title says, how can I retrieve spotify URL of podcasts?
Hello!
So we are using the Buzzsprout API like so:
axios.get('https://www.buzzsprout.com/api/1888595/episodes/${id}.json',{ headers with auth })
Everything works and we get a response with data. However some users have been experiencing CORS issues with the audio url that gets returned. I have not been able to replicate on my end but they sent screenshots of their error messages:
Would anyone know what the issue may be?
Thanks,
Mason
The availability for the Buzzsprout player itself is not compact enough for what I'm trying to accomplish (see screenshot for an idea).
So what I plan on doing is fetching the audio URL and playing it through an <audio>
element on the page as shown.
There's previous issues filed where it's mentioned the total_plays prop is based on the User Agent and play time of at least 60 seconds when the logs are scrapped.
How does the User Agent play into this exactly (so I can track unique plays)?
Hey team,
We are using Buzzsprout for our podcasts and we need to have Stats via API. I believe that this would be beneficial for you and your all customers. Is it possible to have this request on your roadmap?
I'm trying to use Postman to test things, and I've made an account and got my API token, but when I pass it to http://buzzsprout.com/api/2/episodes.json?token=TOKEN
, it gives me a 401 error with bad credentials. What am I doing wrong?
How do I implement push notification for newly available episode(s)?
Hello. I am working on a project that uses the Buzzsprout API, and I would like to be able to upload an episode without publishing it. I assume it has something to do with the private or published-at values, but I would appreciate further clarification. I don't mean to cause offense, but the documentation about the different values in episodes.json feels rather incomplete. Thank you in advance!
Would love to have an option to filter episodes by episode date so that it is easier to see if there are NEW episodes.
could be as simple as ?startdate=20230101 or alternatively season/episode?
I'm trying to keep a list of episodes update to date in my system and now have to request all episodes all the time and then figure out which ones I don't have yet.
Hello, how are you?
I tried to make a GET request to the episodes.json
endpoint using the browsers fetch API, but I was blocked by CORS.
I wonder if there is a way to work around it.
What I'm trying to do:
fetch ('https://www.buzzsprout.com/api/**********/episodes.json', {
method: "GET",
headers: {
"Authorization": "Token token = *******************"
}
})
.then (function (data) {
console.log (data);
})
.catch (function (error) {
console.error (error)
});
The error I'm getting:
Access to fetch at 'https://www.buzzsprout.com/api/*******/episodes.json' from origin 'https://www.google.com' has been blocked by CORS policy: Response Access-Control-Allow-Origin header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
VM62: 11 TypeError: Failed to fetch
Thanks. :)
I am working on a website with the embed player. How can I jump to a specific time of the episode?
Can we retrieve a transcript through the API? I do not see a property for it.
Hi,
Thanks for your API!
We are working on our website podcast, but we dont understand how to use the duration value from your API.
For example, with our test episode that is 20min57 long, your API gives us a duration value of 1257.
How do we need to handle this value?
As the title says, a way to add the sponsors the a podcast episode.
Is there webhook support for the API?
I.e.: when a new episode is published a request is made out.
Or do I just have to query the API every so often?
Add a way to upload the transcript of podcast with the API, preferably in the POST /episodes.json.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.