Podcast Hoarder

I listen to a lot of podcasts, and I am also a bit of a data hoarder when it comes to preserving media and art. Over time, many podcasts that I have listened to, including "The Scaredy Cats Horror Show", "Ben, Ben and Blue", and "Hello Internet" (just to name a few) have had either part of their feed or the whole podcast feed become unavailable.

To avoid being at the whim of the podcast host, I created this downloading tool to bulk download podcast episodes and store show notes. When using this tool, if an episode is removed from a podcast feed the file will stay downloaded and the show notes will be preserved, with the episode simply marked as no longer being available in the current version of the feed. Episodes which are changed and the author has marked the episode as changed as per a change in the guid will be downloaded as separate episodes.

Over time, this then evolved as a way to manage podcasts for my iPod running Rockbox, including generating playlist files, syncing played episodes from the iPod back to the master copy, and loading the latest episodes on to the iPod.

Installation

cargo install --git https://git.aaronmanning.net/aaronmanning/podcast-hoarder.git

Usage

Feed Setup

Open an empty folder for storing all podcast episodes and metadata and create a file called podcasts.toml. Below is an example of this file containing a few podcasts.

[podcasts]
99-percent-invisible = "https://feeds.simplecast.com/BqbsxVfO"
this-american-life = "https://www.thisamericanlife.org/podcast/rss.xml"
hello-internet = "https://www.hellointernet.fm/podcast?format=rss"

Each line is in the following format.

alias = "rss_feed"

It is also possible to replace the right hand side with an object { source = "rss_feed", skip_download = true } if you wish to ignore the feed when downloading but still include it in playlist generation. This is particularly useful when a feed no longer becomes available, and you don't want to hit the download error every time.

The alias for the podcast is the name given to the folder where they are stored and the identifier for the sake of this app. This is simply to make downloads resistent to name changes in the feed. Changing an alias will cause a redownload of the episodes.

Note that RSS feeds which start with http are fetched from the web, anything else is treated as a file path which allows local RSS files to be used as well.

Downloading

Once everything is set up, you can run the following line to download all the episodes.

podcast-hoarder download

Subsequently running the program will check for updates and download any new episodes as required.

iPod Sync

To sync podcasts to a Rockbox iPod, simply run

podcast-hoarder <ipod-root>

replacing <ipod-root> with the root directory of the iPod. This will generate playlists for all podcasts, sync the playlists to the iPod, and sync the episodes to the iPod.

You can also include the --download flag to include downloading within this command.

All podcasts have the prefix [PC] attached to their name. To each podcast <podcast>, there are two playlists, [PC] <podcast> and [PC] <podcast> (unlistened). There is also a playlist [PC] [Master Feed] which contains all podcast episodes ordered from most recent to oldest.

When syncing played episodes from the iPod to the local copy, this program looks for the playlist named [PC] [Listened], and if the file doesn't exist, it will be created the first time round. As such, simply add episodes to this playlist when they are listened to in order to sync the played status back and have them no longer appear in the (unlistened) version of the playlist.

Description
No description provided
Readme GPL-2.0 147 KiB
Languages
Rust 100%