#feed #playlist #podcast #turn

bin+lib playcaster

🎥 Turn any playlist into a Podcast feed

4 releases

0.1.2 May 7, 2024
0.1.1 May 7, 2024
0.0.2 Dec 22, 2022
0.0.1 Feb 9, 2022

#124 in Video

Download history 5/week @ 2024-09-18 5/week @ 2024-09-25

151 downloads per month

MIT/Apache

40KB
677 lines

Playcaster

crates.io Rust Docker

Turn any playlist[^1] into a Podcast feed

Installation

Playcaster can be installed from Cargo:

cargo install playcaster

You will additionally need yt-dlp installed. Instructions for that can be found at https://github.com/yt-dlp/yt-dlp#installation.

Usage

playcaster <feed-file> <base-url> [downloader-arguments]...

playcaster \
	$HOME/htdocs/feeds/playlist.xml \
	"http://your-podcast-server.example" \
	--playlist-url "https://www.youtube.com/playlist?list=playlist" \
	-- \
		--embed-chapters \
		--write-auto-sub \
		--embed-subs \
		--sub-lang en

--playlist-url specifies the playlist to fetch items from. It only needs to be specified if <feed-file> doesn't exist yet, or doesn't have a <link/> which already points to the playlist.

NOTE: Since yt-dlp 2022.11.11, plain YouTube channel URLs download as a series of playlists. Playcaster v0.0.2 has been updated to emit an error if all of the items in the target playlist have an apparent duration of zero. You may need to update channel URLs to refer to a specific tab (i.e. /videos) or use a playlist instead.

Items after -- are passed on to yt-dlp, to configure its extraction or filter results.

Docker Installation & Usage

A Docker image is supplied for ease of use in environments like a NAS, and can be installed with the following command:

docker pull ghcr.io/ticky/playcaster:main

It can be run as follows, substituting $HOME/htdocs/feeds for where your feeds should be on your host system:

docker run --rm -v $HOME/htdocs/feeds:/feeds -it ghcr.io/ticky/playcaster:main \
		/feeds/playlist.xml \
		"http://your-podcast-server.example" \
		--playlist-url "https://www.youtube.com/playlist?list=playlist" \
		-- \
			--embed-chapters \
			--write-auto-sub \
			--embed-subs \
			--sub-lang en

The image is based upon jauderho/yt-dlp, which includes yt-dlp and ffmpeg.

[^1]: That yt-dlp supports, anyway

Dependencies

~15–23MB
~402K SLoC