8 ms·
Show HN: Podcast API
- dtran 6y agoGreat work Wenbin! What's the hardest part about maintaining this API?
- wenbin 6y agoThanks for asking! The hardest part is to make small incremental improvements over a long period of time :) Like most software projects, this API is never a finished product. It's always work-in-progress. Small incremental improvements are not glamorous, typically not newsworthy to share to the public. Some examples of small incremental improvements: 1. Improve API docs. I heard that many API-focused startups have a dedicated team to maintain their API doc page. 2. Dealing with edge cases. As more apps/websites use our API, we'll see some edge cases that we would never know, which could be as simple as adding a data field in the response with 2 lines code change, or changing search index that requires to re-index the whole thing for a few days. There could also be some strange edge cases with billing, e.g. what if a user subscribe to the paid plan, then unsubscribe, then subscribe again, then do something strange, then unsubscribe... 3. Customer support. This involves adding FAQ (tweaking the texts) and preparing email templates to answer frequently asked questions from users. 4. Doing things to keep the service robust & performant, e.g., adding new alerts via Datadog/Pagerduty so we can know what go wrong in time. We also need to have mechanism to be able to know if a particular app sends tons of requests (e.g., send request in an infinite loop) in a short amount of time and we should be able to do something about it (e.g., suspend the account).
- hashamali 6y agoAre the docs custom or are you using a third party product? Doesn’t look like Swagger UI or Slate.
- wenbin 6y agoIt's built from scratch, which was easier than customizing from some open source projects back then (early 2019). But the doc is codified in openapi format: https://www.listennotes.com/api/docs/#openapi https://www.listennotes.com/api/docs/#openapi So you can feed the openapi spec into other doc viewers, e.g., Postman, or redoc https://listen-api.listennotes.com/api/v2/openapi.html https://listen-api.listennotes.com/api/v2/openapi.html
- dsco 6y agoWe used ListenNotes a while back in a web based podcast player and have only good things to say about the API. It's reasonably priced, much easier to deal with than Apple's API and email support is speedy!
- deleted 6y ago[deleted]
- mikece 6y agoIs this service cooperating with or in competition to the Podcast Index? https://podcastindex.org/ https://podcastindex.org/
- a_brawling_boo 6y agoI was wondering the same thing. This one is a paid $$$ API.
- jamescridland 6y agoIt's in competition, it seems to me.
- stevoski 6y agoAs an avid podcast creator and consumer, I’d love to take a full look at this, but I kept getting the full captcha experience. You know what I mean, “select the squares with sidewalks” :( OP, are you aware of this?
- mongol 6y agoSuggestion for pivot: add a podcast playing web application (basically podcast subscriptions, you have already most other in place), and charge a more reasonable amount for that plus unlimited regular search. The pro subscription is way too expensive for me. Edit: I didn't notice that this is about a new API service
- colinprince 6y agoWhen trying the Postman Web View I get: Profile cannot be found This public profile may have been disabled or deleted
- wenbin 6y agoAlready contacted Postman customer support :)
- jcims 6y agoI was tinkering a bit recently in an effort to build a simple system that finds 'related' podcasts and see if I can see the network effect play out over time. I did this by building a graph of people (hosts/guests) and episodes and started folding in tags/topics. None of this is in my wheelhouse, and I found: - It takes a lot of work to curate a substantial collection of podcasts. There are lists all over the place but it's hard to know what's really in there. - I attmpmted to use SpaCy and/or NLTK to do some 'Named Entity Recognition' in order to extract topics/people/orgnaziations from episode titles and descriptions. This was surprisingly brittle. The string 'Sean Carroll', for example, wasn't detected as a person by either framework (IIRC). It also seems quite brittle to punctuation and other context (e.g. beginning or end of a sentence). This was using the default models shipped with both. I started off with just the english models but expanded as there were lots of names being skipped silently. That helped less than I had hoped. - I have yet to find a good UI for exploring a graph. I used Neo4j and the built in 'browser' is not intended for that purpose. Gephi has good capability for filtering and analytics, but it takes quite a bit of getting used to and the graph itself isn't amenable to dynamic navigation. That's all. Bookmarking this as it would really help.
- wenbin 6y agoMany people use our Listen Later playlists to curate podcasts / episodes by topics. Here are some examples: https://www.listennotes.com/podcast-playlists/ https://www.listennotes.com/podcast-playlists/ Each playlist has a rss feed. So you can subscribe to the playlist on any podcast app (except for spotify or the like)
- cjlm 6y agoI’ve been thinking of doing the same for my graph visualization newsletter source/target [0]. I’d love to connect if you’re interested in collaborating! sourcetarget@cjlm.ca [0] https://sourcetarget.email https://sourcetarget.email
- ccvannorman 6y agoSuper happy to see a BoostVC "cockroach" still at it 2.5 years later! Keep up the good work. I use ListenNotes myself to discover and play podcasts.
- praveenperera 6y agoI wish there was a question in the FAQ asking: "Why would I use this over the iTunes API?"
- wenbin 6y agoGreat question! Will add. For itunes api: 1. You can't search episodes 2. You can't get a lot of search results of podcasts. 3. Their terms of use may not allow you to do what you want to do
- bredren 6y agoIf that is what the official Podcasts app returns, it’s bad search results.
- bastawhiz 6y agoThe iTunes api gives you almost no useful data. And it's rate limited to 20req/min, with no alternative.
- parondea 6y agoLove seeing development in the podcast space. One specific problem I've been wanting solved for a long while is difficulty with sharing podcasts with friends across podcast apps. If you're not using the same podcast app as your friend, it's always a pain to manually search and find the podcast in your own app. I'd love a universal podcast url, something like `podcast://<podcast_url>` that individual podcast apps can understand, which links you to the podcast within your desired app, similar to the "default browser" behaviour on mobile and desktop. Has anyone come across something like this?
- DoctorOW 6y agoI mean podcasts are an extension of RSS if I recall correctly... I don't see why this wouldn't be possible.
- Macha 6y agoPodcasts are just RSS feeds. Nothing stopping a app registering itself as a handler for the RSS mime type, at least on desktop/Android (I don't know how iOS works here). I doubt most users would have a RSS reader installed at this stage, so most users wouldn't even have a risk of getting it revealed as a list of links to audio files by using the wrong app.
- adolph 6y agoThis is a big problem for iOS. My spouse uses the default Podcast app. I use Overcast. Anytime she sends me something to listen iOS tries to open it in Podcasts. When I send something from Overcast it gets sent as an Overcast URL.
- chrismorgan 6y agoIn the distant past (2009 or so), podcast://… would open in iTunes or similar, being equivalent to http://… http://xn--rvg. So you’d have something like podcast://example.com/podcast.xml. I haven’t the foggiest idea whether this still works, or how HTTPS might have been integrated or not.
- bredren 6y agoGreat work. I first heard about Listen Notes when you were interviewed on the Django chat podcast. Here’s that episode if people want to learn more about the tech behind the site. https://lnns.co/Td9vzk47qQ3 https://lnns.co/Td9vzk47qQ3
- OJFord 6y ago> Trusted by 2,007 companies and developers. Haven't seen this before, an actual figure rather than 'these big names' (and you have no idea if it's just some small team somewhere for some toy test/demo, or a significant piece of the whole organisation's puzzle). I'm (just idly) curious what number you waited for (assuming you did) before making that public. Because, and obviously it'll vary a bit for different people, there's going to be some number below which it has negative impact, not just (probably some other, with a 'meh' range between, number) above which it has the positive impact that is it's raison d'être.
- cbowal 6y agoWhen I see usage figures touted in the form "Trusted by X companies" I assume X is the total number of signups they've had.
- OJFord 6y agoYes I assume that's the same. What I mean is '0' obviously looks bad, '2007' as it was when I commented sounds good (to me anyway). If you knew you wanted to have that copy on day zero, you probably wouldn't launch with it, because it doesn't look good, so I just wonder at what point people think it starts to be positive, or at least not negative.
- CGamesPlay 6y agoAlthough, they do actually list 51 customers with links to their websites. It's a pretty compelling "social proof" take, IMO.
- deleted 6y ago[deleted]
- OJFord 6y ago> API Terms of Use > Applications using the Listen API must not pre-fetch, cache, index, or store any content on the server side. Note that the id and the pub_date (e.g., latest_pub_date_ms, pub_date_ms...) of a podcast or an episode are exempt from the caching restriction. Is that.. common? I've never knowingly come across anything like that before, seems weird to me. Sort of makes sense, in a 'you must not try to avoid needing to pay us more because we want more money' sort of way, but.. really? Also, almost entirely (basically, except OSS) undetectable, surely. [Edit: failure to read my own quote correctly, thanks xd1936] --- And if you really take it seriously - 'must not [...] store any content' - it really limits what you could even use it for, not being able to store the `id` even for a later reference. I don't think that's what's intended, but it seems to be what's written. --- (Just so I don't sound like a grumpy old git (I'm not old, at least!) - I really really really like the docs page https://www.listennotes.com/api/docs/ https://www.listennotes.com/api/docs/ only thing I'd suggest perhaps is embedding the OpenAPI 'HTML' contents below the other options, rather than it being a link to follow. Awesome though.)
- hombre_fatal 6y agoMap tiling APIs do this, like Mapbox and Google. Else you could circumvent all but their lowest-tier subscription plans with a brain-dead caching proxy and a large disk which is what they want to avoid. Amazon's API famously does this as well (or used to, it's been a while) by requiring any prices you show to be no more out of date than N minutes forcing you to basically request on demand every time you need to show it. They'd rather you just send the traffic their way for people to see the price.
- klysm 6y agoDepending on the use case, possibly a whole lot of disks.
- ehsankia 6y agoRight, I would assume that even just the tiles for the biggest cities alone would still be way more than most would want to store. On the other hand, let's assume on the client-side, can you not even cache a tile a user just saw 10s ago but went off screen? Or is it assumed the browser will cache that tile?
- pedro1976 6y agoCool project! I wonder if your price points are randomly picked or if 100 is the sweet spot, which would be odd. Do you plan to add some text-to-speech magic, so one can search for the actual podcast content? That would be a killer feature for me :)
- nshm 6y agoYeah, modern open source speech recognition like Vosk can have the cost like $2c per hour (70 times less than Google STT cost $1.4/hour) and should be just enough for search. @wenbin do you need any help with it?
- mrweasel 6y agoSo like Podcastindex.org, but not free?
- droopybuns 6y agoMore interesting alternative: https://podcastindex.org/?utm_source=podnews.net&utm_medium=web&utm_campaign=podcast-page https://podcastindex.org/?utm_source=podnews.net&utm_medium=...
- pkamb 6y agoI'd like to see a crowdsourced "Genius for Podcasts". Most podcast producers are terrible about correctly adding metadata: Chapters, images, episode notes, descriptions, etc. Let the superfans upload custom metadata to be displayed alongside the episode as it's playing in your podcast player.
- willcodeforfoo 6y agoI'm building something very similar to this!
- petercooper 6y agoIt's not a replacement for this by any means, but in case anyone would find a reasonably up to date list of around 600,000 podcasts useful, here you go: https://gofile.io/d/MjYVy7 https://gofile.io/d/MjYVy7 - No episodes, just the name, creator, and feed URLs for further crawling on your own.
- darrenwestall 6y agoHappy customer here. I’ve seen a few people suggest a free service but from our testing this is far more comprehensive and with better search quality. We use the service in conjunction with iframely to load podcast episodes that can be listened to with ease. Great product, customer service and documention. Thanks from team Paiger <3
- jcims 6y ago@wenbin what do you think about adding the ability to comment at specific portions of at podcast (in the player obviously) similar to soundcloud (assuming there's no patent issues).
- jabo 6y agoIf you ever get tired of managing an ElasticSearch cluster, have a look at Typesense: https://github.com/typesense/typesense https://github.com/typesense/typesense It's an open source alternative to Algolia to build instant search with typo tolerance. I recently built this demo to show Typesense in action on a 32M songs dataset: https://songs-search.typesense.org/ https://songs-search.typesense.org/ Should return most results in less than 50ms.
- 0xy 6y agoThis makes me wonder how Spotify continues to have dreadful search.
- stevewillows 6y agoThis is great, but I wish it were clearer that we had to apply with a linkedin URL before actually getting to test the thing out.