= download-yt-feeds :url-zsh: https://www.zsh.org/ :url-ytdl: https://github.com/ytdl-org/youtube-dl :url-ytdlp: https://github.com/yt-dlp/yt-dlp :url-ytdl-format: {url-ytdl}/#format-selection Download YouTube-feeds as if they are podcasts. Files will be put in `/uploader/title.extension`. This should work for all sites `youtube-dl` supports, but I only tested YouTube. `yt-dlp` will be preferred if available. == Features * Downloads newest videos from a list of channels. * Creates playlist with newest videos. * Deletes old videos. * Passes extra arguments to youtube-dl. == Install Put `download-yt-feeds` somewhere in your `${PATH}` and make it executable. === Dependencies * Linux (*BSD and other UNIXes should work, but I haven't tested) * link:{url-zsh}[Zsh] * link:{url-ytdl}[youtube-dl] or link:{url-ytdlp}[yt-dlp] == Configuration The configuration directory is `${XDG_CONFIG_HOME}/download-yt-feeds` or, if `${XDG_CONFIG_HOME}` is not set, `${HOME}/.config/download-yt-feeds`. You need 2 files in this directory, `config` and `feedlist`. === config .Example configuration file [source,shell] -------------------------------------------------------------------------------- # This file will be source-d. download_dir="/home/user/Podcasts/youtube" keep_for_days="14" ytdl_format="bestvideo[height<=1080]+bestaudio/best[height<=1080]" ytdl_extra_args="--quiet" -------------------------------------------------------------------------------- |=============================================================================== | *download_dir* | The directory to which the videos will be downloaded. | *keep_for_days* | Download only videos newer than this many days and delete older videos. | *ytdl_format* | Same syntax as link:{url-ytdl-format}[youtube-dl --format]. Default is "best". | *ytdl_extra_args* | Extra arguments for `youtube-dl`. Optional. | *ytdl_binary* | Binary to use instead of `yt-dlp` or `youtube-dl`. |=============================================================================== [WARNING] All old files in `download_dir` will be deleted. Don't put other files in the same directory! === feedlist A "feed" in this context is a URL to a page that lists YouTube-videos, not an RSS or Atom feed. .Example feed list [source,cfg] -------------------------------------------------------------------------------- # Everything that doesn't start with "http" will be skipped. https://www.youtube.com/channel/UCyczvB_IvA7V1a5BXXu3CRg/videos # Karakaya Talks https://www.youtube.com/user/lefticus1/videos # C++ Weekly --------------------------------------------------------------------------------