GithubHelp home page GithubHelp logo

buzzsprout-api's People

Contributors

johnloringpollard avatar johnlpollard avatar realies avatar tomrossi7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

buzzsprout-api's Issues

Detect if episode is trailer?

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.

get all list of podcast

i have list of podcast like this

image

is there a way to get all list of podcast (i want to get list of podcast id) so that i can make request to get all episodes based on podcast id ?

Can not access `artwork_url`

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.

Log a download/listen when an episode is accessed and played through an integration

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

Get download/listening stats for an episode

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.

Docs up to date?

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.

Return the Transcript in GET

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.

Pagination for Account Videos

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?

Enable setting of "Custom Episode Webpage" via API

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!

POST API cannot find audio files

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.

  1. Using audio_url key to POST

This 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.

Screenshot 2023-06-25 at 5 28 12 PM

  1. Using audio_file key to POST
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',
}

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?

Examples directory

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!

Provide link to episode page hosted by Buzzsprout

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!

Need endpoint to access transcript

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.

How to GET a single episode

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?

Audio File Example

Would it be possible to get a working example of a post using audio_file instead of audio_url?

Would be a huge help.

Buzzsprout Parameter

Is there any parameter for the episodes.json api so that we can add pagination to the api.

i want to episodes in chunks

Endpoint for GET'ing list of podcasts

Issue

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.

Workaround

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.

Proposed Solution

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":"..." },
         } ]
  },

Elaborate on audio_file

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?

Description property taking longer than others to be posted

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.

Episode Status Information

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?

CORS Issues from downloading Audio from url generated by API

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:

Screen Shot 2022-11-08 at 2 45 50 PM

Screen Shot 2022-11-08 at 2 38 45 PM

Would anyone know what the issue may be?

Thanks,
Mason

How to capture play count when loading the audio_url for an episode?

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)?

image

Stats on the API?

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?

Bad credentials when passing token to example URL

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?

Upload but not publish an episode

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!

Get 'the next issue'

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.

Request for list of episodes blocked by CORS

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. :)

Weird duration value

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?

Webhook support?

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?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.