Script to automatically download new episodes of TV shows from the ZDF Mediathek. The script is meant to quickly download new episodes, not all available episodes.
Add RSS-feeds for the show you want to download to the configuration script. You can find a direct URL to the field in the source-code of the mediathek-page. An example for ZDF Magazin Royale is https://www.zdf.de/rss/zdf/comedy/zdf-magazin-royale
As an option, you can also define regex-filters on fields from the rss-feed to filter out episodes you don't want, i.e. specials or short online-clips. configuration-example.yaml
has an example for a filter to only download full ZDF Magazin Royale episodes.
- Script assumes that all files in the target folder are named
<Showname> SxxExx
naming-scheme and no files violate this scheme. It also asumes that you are using a flat filestructure for all seasons. - When a new episode is found, a sequential filename is generated for the new download. If you want the file to be downloaded in a new season, you have to rename it manually. The next file will then be sequentially added to this season.
- After a file is downloaded, it's URL is added to a history-file and it will not be downloaded again.
Before starting the script, add a custom configuration.yaml
-file to your directory. You can find an example configuration in the configuration-folder
See configuration-example.yaml
for an example configuration. The configuration file has to be placed at /app/configuration/configuration.yaml
.
Paramter | Description | Example |
---|---|---|
interval | Minutes between each scan for new episodes | 60 |
shows[].feed-url | URL to the RSS-feed for the show you want to download | "https://www.zdf.de/rss/zdf/comedy/zdf-magazin-royale" |
shows[].filter.regex | Regular expression to match only specific episodes of a show | "zdf-magazin-royale-vom-\\d" |
shows[].filter.regexField | Field in the RSS-feed that is filtered for the regular expression | "link" |
shows[].filter.minDate | Minimum date of episode to download | "2021-09-01 00:00+00:00" |
shows[].download.folder | Path to the folder where the downloaded files are located for this show | "/serien/ZDF Magazin Royale" |
shows[].download.filename | Base filename that is used to consecutively name episodes. | "ZDF Magazin Royale" |
The recommended way to use this program is to start a lightweight Docker-container and mount your media-folders and configuration.
You can start a docker-build using the following command:
docker build -t zdf-download .
Afterwards, you can deploy the built container using this command:
docker run -d --name=zdf-download -v <host-media-folder>:<docker-media-folder> -v <host-configuration-folder>:/app/configuration zdf-download:latest
You can also use the pre-build container and deploy directly from the GitHub container-registry:
docker run -d --name=zdf-download -v <host-media-folder>:<docker-media-folder> -v <host-configuration-folder>:/app/configuration ghcr.io/niklasheld/zdf-download:latest
Install the packages from requirements.txt
, preferably in a python virtual environment. Make sure that youtube-dl
and ffmpeg
are installed and available. Start the application using python app.py
.