Skip to main content

Archive all episodes from your favorite podcasts

Project description

Podcast Archiver

Podcast Archiver Logo

version python downloads

Maintainability codecov pre-commit.ci

ruff poetry pre-commit

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.

⚠️ Podcast Archiver v1.0 completely changes the available command line options uses a new format for naming files (see changing the filename format below). Using it on an existing pre-v1.0 folder structure will re-download all episodes. ⚠️

Setup

Install via pipx:

pipx install podcast-archiver

Or use it via Docker:

docker run --tty --rm ghcr.io/janw/podcast-archiver --help

Usage

Run podcast-archiver --help for details on how to use it:

poetry run podcast-archiver --help

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. At this time, the following variables are available:

  • Episode: episode.title, episode.subtitle, episode.author, episode.published_time
  • Podcast: show.title, show.subtitle, show.author, show.language

The field episode.published_time is a Python-native datetime, so its exact format can be adjusted further a la {episode.published_time:%Y-%m-%d} using strftime-placeholders.

The default value for --filename-template. is shown in podcast-archiver --help.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

podcast_archiver-1.0.1.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

podcast_archiver-1.0.1-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file podcast_archiver-1.0.1.tar.gz.

File metadata

  • Download URL: podcast_archiver-1.0.1.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.2.0-1018-azure

File hashes

Hashes for podcast_archiver-1.0.1.tar.gz
Algorithm Hash digest
SHA256 22fe779ee90d334d56dd363820e37f5895da46d6a77083d40e6816ee80d3ce4c
MD5 9a73261057065087c8bf242aa6b2f17b
BLAKE2b-256 8cc5cd53c4dc7fd2a792730d58be7dbf7a31ff9f8270e0389be5318f3b250dc9

See more details on using hashes here.

Provenance

File details

Details for the file podcast_archiver-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: podcast_archiver-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 18.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.2.0-1018-azure

File hashes

Hashes for podcast_archiver-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b7d43388bbc62923e98a3de5dfdb9a7df3ae74a604c50e0ea54659194d6a3039
MD5 f28030a4ab6b25b37a512ca8d892d64f
BLAKE2b-256 b0a768924e8a72974a0f70df73314fa3e879739d74b5cdae3fb614216698525e

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page