Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

[!WARNING] This project is archived and no longer maintained. It has been superseded by sub2pod — please use that instead. sub2pod is also available on PyPI: pip install sub2pod

Playlist2Podcast

Repo CI - Woodpecker Downloads PyPI - Python Version PyPI - Wheel AGPL

Playlist2Podcast is a command line tool that takes a Youtube playlist, downloads the audio portion of the videos on that list, and creates a podcast feed from this.

Playlist2Podcast:

  1. downloads and converts the videos in one or more playlists to opus audio only files,
  2. downloads thumbnails and converts them to JPEG format, and
  3. creates a podcast feed with the downloaded videos and thumbnails.

Install and run natively

Easiest way to use Playlist2Podcast is to use pipx to install it from PyPi. Then you can simply use playlist2podcast on the command line run it. To configure playlist2podacast you can rename the [config.toml.example][1] file to config.toml and adjust values as needed.

Below is an annotated version of the config.toml file explaining the various settings:

   # version of playlist2podcasts this configuration file is built for.
   version = "2.0.0"
   # URL where the feed.rss file will be published. This value is used for references within the generated `feed.rss`
   # file. This value needs to be provided.
   podcast_host = "http://<...>"
   # directory on local file system to place all files for podcast in
   publish_dir = "publish"
   # directory on local file system where all media files are saved to, this is a sub directory inside the publish_dir
   media_dir = "media"
   # how many of the most recent episodes to download and save for each playlist
   number_of_episodes = 5
   # optional, file (with path if needed) on local filesystem where youtube cookie is stored for yt-dlp to use
   youtube_cookie_file = "youtube-dl-cookies.txt"

   # Each youtube playlist to be processed into your podcast is contained under a `[[play_lists]]` header. You can have
   # multiple `[[play_lists]]` sections

   [[play_lists]]
   # URL to list of media to look at and download audio files from to build your personalised podcast
   url = "https://www.youtube.com/@PythonBytes/streams"
   # Include filters allowing to only process some videos. Will allow all if empty.
   include = []
   # Exclude filters for videos NOT to download. If some video has been selected with an include filer but is also selected
   # with an exclude filter, that video will be excluded. In other words, exclude filters trump include filters.
   exclude = []

   [[play_lists]]
   # Second playlist to show an example of include and exclude filters. In this example, we exclude all videos that
   # contain "shorts" anywhere in the title or url. Additionally we only include videos where the title starts with
   # "The Level1 Show"
   url = "https://www.youtube.com/c/Level1Techs/videos"
   include = [
       "^The Level1 Show.*",
   ]
   exclude = [
       "shorts",
   ]

Docker

There is a container image published for playlist2podcast that can be used with docker of Podman.

Following is an example run command using podman (replace podman with docker to run with docker):

   podman run \
      --rm \
      --replace \
      --detach \
      --env TZ=UTC \
      --env UPDATE_INTERVAL=4h \
      --env LOGGING_CONFIG=/config/logging-config.toml \
      --name playlist2podcasts \
      --volume ./playlist2podcasts/config:/config \
      --volume ./playlist2podcasts/publish:/publish \
      --volume ./playlist2podcasts/logging:/logging \
      codeberg.org/pyyttools/playlist2podcasts:latest

Changelog

See the [Changelog][2] for any changes introduced with each version.

License

Playlist2Podcast is licences under the GNU Affero General Public License v3.0

Metadata

Release files for playlist2podcast 2026.6.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for playlist2podcast 2026.6.18
File Size Uploaded Provenance
playlist2podcast-2026.6.18.tar.gz 10.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for playlist2podcast 2026.6.18
File Interpreter ABI Platform
playlist2podcast-2026.6.18-py3-none-any.whl Python 3 none any Details

Total release size: 21.7 kB

Release files / playlist2podcast-2026.6.18.tar.gz

Download URL playlist2podcast-2026.6.18.tar.gz
Size 10.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b63a8c89838b5a0ebf6c4393c7b06bf86686c0eb226bd950796b4b65cc2f2ec7
BLAKE2b-256 checksum
How to use checksums
1480e8fe1fad1d49dc02bd06f80cd019015534d74ee0b254c4ca523c1eac1dd6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / playlist2podcast-2026.6.18-py3-none-any.whl

Download URL playlist2podcast-2026.6.18-py3-none-any.whl
Size 11.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8296fdaae7fb2e8a4e7f2d601f51adc552f17695dde80622dcdebcfe765be90e
BLAKE2b-256 checksum
How to use checksums
efbf14ee2d4255f9553e5e473e7996e83a98487b1e870142e910f3c2f66690fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for playlist2podcast 2026.6.18

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page