ZDF mediathek no longer works #27084

Open
opened 2026-02-21 14:38:08 -05:00 by deekerman · 5 comments
Owner

Originally created by @mk-pmb on GitHub (Mar 26, 2025).

Workaround

Try --force-generic --format=0
That works for me. Thanks, dirkf!
Caveat: It seems to be very CPU hungry, so consider limiting its priority.

Checklist

  • I'm reporting a broken site support
  • I've verified that I'm running youtube-dl version 2021.12.17
  • I've checked that all provided URLs are alive and playable in a browser
  • I've checked that all URLs and arguments with special characters are properly quoted or escaped
  • I've searched the bugtracker for similar issues including closed ones

Verbose log

There seem to be two variants of the URL, and for each I also tried with --no-playlist as suggested.

for TOPDIR in play video ; do for OPT in '' --no-playlist ; do $YTDL $OPT "https://www.zdf.de/$TOPDIR/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100" ; echo; done ; done |& tee -- zdf.log

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', 'https://www.zdf.de/play/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: 4e714f9df
[debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f  31 Mar 2020 - glibc …
[debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7
[debug] Proxy map: {…}
[debug] Using fake IP … (DE) as X-Forwarded-For.
[ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage
[ZDFChannel] Downloading playlist die-anstalt-vom-11-maerz-2025-100 - add --no-playlist to download just the main video
[download] Downloading playlist: Die Bürokratie-Anstalt
[ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them)
[download] Finished downloading playlist: Die Bürokratie-Anstalt

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', '--no-playlist', 'https://www.zdf.de/play/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: 4e714f9df
[debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f  31 Mar 2020 - glibc …
[debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7
[debug] Proxy map: {…}
[debug] Using fake IP … (DE) as X-Forwarded-For.
[ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage
[ZDFChannel] Downloading just the main video because of --no-playlist
[download] Downloading playlist: Die Bürokratie-Anstalt
[ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them)
[download] Finished downloading playlist: Die Bürokratie-Anstalt

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', 'https://www.zdf.de/video/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: 4e714f9df
[debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f  31 Mar 2020 - glibc …
[debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7
[debug] Proxy map: {…}
[debug] Using fake IP … (DE) as X-Forwarded-For.
[ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage
[ZDFChannel] Downloading playlist die-anstalt-vom-11-maerz-2025-100 - add --no-playlist to download just the main video
[download] Downloading playlist: Die Bürokratie-Anstalt
[ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them)
[download] Finished downloading playlist: Die Bürokratie-Anstalt

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', '--no-playlist', 'https://www.zdf.de/video/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Git HEAD: 4e714f9df
[debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f  31 Mar 2020 - glibc …
[debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7
[debug] Proxy map: {…}
[debug] Using fake IP … (DE) as X-Forwarded-For.
[ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage
[ZDFChannel] Downloading just the main video because of --no-playlist
[download] Downloading playlist: Die Bürokratie-Anstalt
[ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them)
[download] Finished downloading playlist: Die Bürokratie-Anstalt

Description

Usually I can just copy ZDF URLs from my browser and ytdl does the right thing. I have no idea what's wrong today.
Maybe the URL syntax has changed. I don't remember what it used to be, but when I copied the URL it looked vaguely wrong, it felt unfamiliar.

Originally created by @mk-pmb on GitHub (Mar 26, 2025). ## Workaround Try `--force-generic --format=0` That works for me. Thanks, dirkf! Caveat: It seems to be very CPU hungry, so consider limiting its priority. <!-- ###################################################################### WARNING! IGNORING THE FOLLOWING TEMPLATE WILL RESULT IN ISSUE CLOSED AS INCOMPLETE ###################################################################### --> ## Checklist <!-- Carefully read and work through this check list in order to prevent the most common mistakes and misuse of youtube-dl: - First of, make sure you are using the latest version of youtube-dl. Run `youtube-dl --version` and ensure your version is 2021.12.17. If it's not, see https://yt-dl.org/update on how to update. Issues with outdated version will be REJECTED. - Make sure that all provided video/audio/playlist URLs (if any) are alive and playable in a browser. - Make sure that all URLs and arguments with special characters are properly quoted or escaped as explained in http://yt-dl.org/escape. - Search the bugtracker for similar issues: http://yt-dl.org/search-issues. DO NOT post duplicates. - Finally, put x into all relevant boxes (like this [x]) --> - [x] I'm reporting a broken site support - [x] I've verified that I'm running youtube-dl version **2021.12.17** - [x] I've checked that all provided URLs are alive and playable in a browser - [x] I've checked that all URLs and arguments with special characters are properly quoted or escaped - [x] I've searched the bugtracker for similar issues including closed ones ## Verbose log There seem to be two variants of the URL, and for each I also tried with `--no-playlist` as suggested. ```text for TOPDIR in play video ; do for OPT in '' --no-playlist ; do $YTDL $OPT "https://www.zdf.de/$TOPDIR/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100" ; echo; done ; done |& tee -- zdf.log [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', 'https://www.zdf.de/play/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100'] [debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8 [debug] youtube-dl version 2021.12.17 [debug] Git HEAD: 4e714f9df [debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f 31 Mar 2020 - glibc … [debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7 [debug] Proxy map: {…} [debug] Using fake IP … (DE) as X-Forwarded-For. [ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage [ZDFChannel] Downloading playlist die-anstalt-vom-11-maerz-2025-100 - add --no-playlist to download just the main video [download] Downloading playlist: Die Bürokratie-Anstalt [ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them) [download] Finished downloading playlist: Die Bürokratie-Anstalt [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', '--no-playlist', 'https://www.zdf.de/play/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100'] [debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8 [debug] youtube-dl version 2021.12.17 [debug] Git HEAD: 4e714f9df [debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f 31 Mar 2020 - glibc … [debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7 [debug] Proxy map: {…} [debug] Using fake IP … (DE) as X-Forwarded-For. [ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage [ZDFChannel] Downloading just the main video because of --no-playlist [download] Downloading playlist: Die Bürokratie-Anstalt [ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them) [download] Finished downloading playlist: Die Bürokratie-Anstalt [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', 'https://www.zdf.de/video/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100'] [debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8 [debug] youtube-dl version 2021.12.17 [debug] Git HEAD: 4e714f9df [debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f 31 Mar 2020 - glibc … [debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7 [debug] Proxy map: {…} [debug] Using fake IP … (DE) as X-Forwarded-For. [ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage [ZDFChannel] Downloading playlist die-anstalt-vom-11-maerz-2025-100 - add --no-playlist to download just the main video [download] Downloading playlist: Die Bürokratie-Anstalt [ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them) [download] Finished downloading playlist: Die Bürokratie-Anstalt [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--no-call-home', '--abort-on-error', '--no-overwrites', '--keep-video', '--restrict-filenames', '--output', '…', '--write-info-json', '--format=best', '--verbose', '--no-playlist', 'https://www.zdf.de/video/shows/die-anstalt-104/die-anstalt-vom-11-maerz-2025-100'] [debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8 [debug] youtube-dl version 2021.12.17 [debug] Git HEAD: 4e714f9df [debug] Python 3.8.10 (CPython x86_64 64bit) - Linux-…-x86_64-with-glibc… - OpenSSL 1.1.1f 31 Mar 2020 - glibc … [debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7 [debug] Proxy map: {…} [debug] Using fake IP … (DE) as X-Forwarded-For. [ZDFChannel] die-anstalt-vom-11-maerz-2025-100: Downloading webpage [ZDFChannel] Downloading just the main video because of --no-playlist [download] Downloading playlist: Die Bürokratie-Anstalt [ZDFChannel] playlist Die Bürokratie-Anstalt: Collected 0 video ids (downloading 0 of them) [download] Finished downloading playlist: Die Bürokratie-Anstalt ``` ## Description Usually I can just copy ZDF URLs from my browser and ytdl does the right thing. I have no idea what's wrong today. Maybe the URL syntax has changed. I don't remember what it used to be, but when I copied the URL it looked vaguely wrong, it felt unfamiliar.
Author
Owner

@dirkf commented on GitHub (Mar 26, 2025):

Indeed: https://github.com/yt-dlp/yt-dlp/issues/12647#issuecomment-2733653223. We need to adapt that and the yt-dlp PR.

@dirkf commented on GitHub (Mar 26, 2025): Indeed: https://github.com/yt-dlp/yt-dlp/issues/12647#issuecomment-2733653223. We need to adapt that and the _yt-dlp_ PR.
Author
Owner

@mk-pmb commented on GitHub (Mar 31, 2025):

The last HTML tag in <head> is (JSON declobbered by me):

<script id="…" type="application/ld+json">{
  "@context":"https://schema.org",
  "@type":"VideoObject",
  "name":"Die Bürokratie-Anstalt",
  ,
  "contentUrl":"https://zdfvod.….mp4.csmil/master.m3u8",
  "hasPart":[]
}</script>

We should have a generic downloader for that, right? Why didn't that one pick it up?
When I manually copy the contentUrl and use that as my CLI argument, it downloads, but has no useful metadata (filename consists of just "NA" and "master" parts.)

@mk-pmb commented on GitHub (Mar 31, 2025): The last HTML tag in `<head>` is (JSON declobbered by me): ```html <script id="…" type="application/ld+json">{ "@context":"https://schema.org", "@type":"VideoObject", "name":"Die Bürokratie-Anstalt", …, "contentUrl":"https://zdfvod.….mp4.csmil/master.m3u8", "hasPart":[] }</script> ``` We should have a generic downloader for that, right? Why didn't that one pick it up? When I manually copy the contentUrl and use that as my CLI argument, it downloads, but has no useful metadata (filename consists of just "NA" and "master" parts.)
Author
Owner

@dirkf commented on GitHub (Mar 31, 2025):

Possibly --force-generic would succeed partially (ie, without full metadata: only title from the quoted snippet).

The yt-dlp issue and PR show that there are quite few site changes that need to be analysed and reflected back into the extractor. I have the yt-dl WIP version of the patch that I posted there, but there is continuing development that I'll allow to stabilise before updating here.

@dirkf commented on GitHub (Mar 31, 2025): Possibly `--force-generic` would succeed partially (ie, without full metadata: only `title` from the quoted snippet). The _yt-dlp_ issue and PR show that there are quite few site changes that need to be analysed and reflected back into the extractor. I have the _yt-dl_ WIP version of the patch that I posted there, but there is continuing development that I'll allow to stabilise before updating here.
Author
Owner

@mk-pmb commented on GitHub (Mar 31, 2025):

--force-generic --format=0 works for me. Thanks!

@mk-pmb commented on GitHub (Mar 31, 2025): `--force-generic --format=0` works for me. Thanks!
Author
Owner

@dirkf commented on GitHub (Apr 7, 2025):

I'd rather keep this open to track the full extractor update.

Related: #31428, PR #17863.

@dirkf commented on GitHub (Apr 7, 2025): I'd rather keep this open to track the full extractor update. Related: #31428, PR #17863.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/youtube-dl-ytdl-org#27084
No description provided.