# I built a crappy video podcast player **tl;dr:** Try out [telecast.company](https://telecast.company); share your complaints/gripes [on GitHub](https://github.com/surprisetalk/telecast). 2005 birthed the [iPod Video](https://ipodwiki.com/wiki/IPod_video) and [YouTube](https://en.wikipedia.org/wiki/YouTube). 20 years later... it's 2025. Compare YouTube against the podcast (iPod broadcast) ecosystem. YouTube pisses off its creators, fuels a clickbait thumbnail arms-race, and fosters addiction (protip: [disable recommendations](https://github.com/lawrencehook/remove-youtube-suggestions)). Podcasters thrive in an ecosystem of interviews, educational content, and long-form journalism. [^note]: Okay, this is a bit unfair. Trash podcasts exist. Quality YouTube channels exist (and are strafing over to [Nebula](https://nebula.tv)). Incentives tend to produce different median media on their platforms; YouTube's centralized advertising model seems to encourage unsustainable behavior from its advertisers, its creators, and its consumers. Yes, video podcasts have been a thing since 2005, but YouTube dominated online video by simplifying hosting/delivery/discovery. Twenty years later, creating/consuming video podcasts remains an awful experience. [^note]: "vidcast" and "vodcast" are clunky portmanteaus, so I'm co-opting the term "telecast" (television broadcast) for video podcasts. ## Proof-of-Concept And so I built a very crappy video podcast player. ![](/telecasts-000-1.gif) Some initial features/findings: - I first tried [VanJS](https://vanjs.org), but ended up [using Elm](https://taylor.town/elm-2023). Elm is handy for medium-sized projects like this! - [podcastindex.org](https://podcastindex.org) is a great resource for jumpstarting podcast search! Unfortunately, it doesn't provide any easy means of exclusively searching _video_ podcasts/episodes, so I'll likely have to build my own directory from scratch. - Podcasts apparently support [live broadcasts](https://podcastindex-org.github.io/docs-api/#get-/episodes/live)! - YouTube already already [exposes an RSS feed for every channel](https://www.reddit.com/r/selfhosted/comments/mgnsyg/quicktip_youtube_channels_have_an_rss_feed/)! But searching/browsing YouTube channels will impede telecast adoption. - I eventually want to facilitate creator donations, but web monetization is not quite there yet. - The loading times for thumbnails was prohibitively slow for many podcast feeds. - Full [local-first](https://www.localfirst.fm) will not be feasible with limited browser storage, but it will ease the transition to native apps - The app looks way too empty/intimidating on first load. I'll want to create some curated starter packs. ## Throw One Away That prototype was too crappy. I tossed it in the proverbial garbage. [^note]: "Throw One Away" is my favorite way of acclimating to a new problem domain. Here's what it looks like now: ![](/telecasts-000-3.gif) It's designed to be [local-first](https://www.inkandswitch.com/local-first-software/) software; nearly everything lives in the frontend. The only server endpoints are (1) a public search API and (2) a CORS/cache proxy for RSS feeds and video thumbnails. I used [duckdb](https://duckdb.org) and some [nasty sql](https://github.com/surprisetalk/telecast/blob/main/scripts/podcastindex.sql) to load the search database with ~100K feeds from [PodcastIndex.org](https://podcastindex.org). ```bash curl -O https://public.podcastindex.org/podcastindex_feeds.db.tgz tar -xzf podcastindex_feeds.db.tgz -C /tmp/ sed "s|\$DATABASE_URL|$DATABASE_URL|" import_feeds.sql | duckdb ``` [^note]: Thanks to [PodcastIndex.org](https://podcastindex.org) for helping make the internet open, free, and accessible! Beyond video podcasts, I also added a bunch of my favorite RSS feeds from YouTube, plus channels from Kagi's [smallyt.txt](https://github.com/kagisearch/smallweb/blob/main/smallyt.txt) list. The code is [on Github](https://github.com/surprisetalk/telecast). It's crappy, but it's _mine_ -- I'm tired of smelling other people's crap. Try it out at [telecast.company](https://telecast.company)