Last updated:
0 purchases
podcastarchiver 1.5.0
Podcast Archiver
A fast and simple command line client to archive all episodes from your favorite podcasts.
Podcast Archiver takes the feed URLs of your favorite podcasts and downloads all available episodes for you—even those "hidden" in paged feeds. You'll end up with a complete archive of your shows. The archiver also supports updating an existing archive, so that it lends itself to be set up as a cronjob.
Setup
Install via pipx:
pipx install podcast-archiver
Install via brew:
brew install janw/tap/podcast-archiver
Or use it via Docker:
docker run --tty --rm ghcr.io/janw/podcast-archiver --help
By default, the docker image downloads episodes to a volume mounted at /archive.
Usage
Run podcast-archiver --help for details on how to use it:
Example invocation
podcast-archiver -d ~/Music/Podcasts \
-f http://logbuch-netzpolitik.de/feed/m4a \
-f http://raumzeit-podcast.de/feed/m4a/ \
-f https://feeds.lagedernation.org/feeds/ldn-mp3.xml
This way, you can easily add and remove feeds to the list and let the archiver fetch the newest episodes for example by adding it to your crontab.
Changing the filename format
Podcast Archiver has a --filename-template option that allows you to change the particular naming scheme of the archive. The default value for --filename-template. is shown in podcast-archiver --help, as well as all the available variables. The basic ones are:
Episode: episode.title, episode.subtitle, episode.author, episode.published_time, episode.original_filename
Podcast: show.title, show.subtitle, show.author, show.language
Note here that episode.published_time is a Python-native datetime, so its exact format can be adjusted further a la {episode.published_time:%Y-%m-%d %H%M%S} using strftime-placeholders. By default it uses %Y-%m-%d (e.g. 2024-12-31).
Examples
More precise published time
{show.title}/{episode.published_time:%Y-%m-%d %H%M%S %Z} - {episode.title}.{ext}
Results in …/That Show/2023-03-12 123456 UTC - Some Episode.mp3
Using the original filename (roughly equivalent to pre-1.0 --subdirs)
{show.title}/{episode.original_filename}
Results in …/That Show/ts001-episodefilename.mp3
Using the original filename (roughly equivalent to pre-1.0 --subdirs + --date-prefix)
{show.title}/{episode.published_time} {episode.original_filename}
Results in …/That Show/2023-03-12 ts001-episodefilename.mp3
Using a config file
Command line arguments can be replaced with entries in a YAML configuration file. An example config can be generated with
podcast-archiver --config-generate > config.yaml
After modifying the settings to your liking, podcast-archiver can be run with
podcast-archiver --config config.yaml
Alternatively (for example, if you're running podcast-archiver in Docker), you may point it to the config file using the PODCAST_ARCHIVER_CONFIG=path/to/config.yaml environment variable.
Using environment variables
Some settings of Podcast Archiver are available as environment variables, too. Check podcast-archiver --help for options with env var: … next to them.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.