ARD downloader reports success even when video is geoblocked #25630

Open
opened 2026-02-21 13:53:34 -05:00 by deekerman · 1 comment
Owner

Originally created by @chrysn on GitHub (Dec 13, 2022).

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 (terms ard "nicht verfügbar")

Verbose log

[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-v', 'https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html']
[debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8
[debug] youtube-dl version 2021.12.17
[debug] Python version 3.10.8 (CPython) - Linux-6.0.0-3-amd64-x86_64-with-glibc2.36
[debug] exe versions: ffmpeg 5.1.2-1, ffprobe 5.1.2-1, phantomjs 2.1.1, rtmpdump 2.4
[debug] Proxy map: {}
[ARD] alles-ist-eins-ausser-der-0-video-100: Downloading XML
[ARD] alles-ist-eins-ausser-der-0-video-100: Downloading m3u8 information
[debug] Default format spec: bestvideo+bestaudio/best
[debug] Invoking downloader on 'https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f4-v1-a1.m3u8'
[download] Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-462.mp4 has already been downloaded

[download] 100% of 1.99MiB
[debug] Invoking downloader on 'https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f2-a1.m3u8'
[hlsnative] Downloading m3u8 manifest
[hlsnative] Total fragments: 6
[download] Destination: Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-audio0-Deutsch.mp4

[download]  64.0% of ~506.28KiB at Unknown speed ETA 00:00
[download]  64.4% of ~506.28KiB at Unknown speed ETA 00:00
[download]  65.2% of ~506.28KiB at Unknown speed ETA 00:00
[download]  66.8% of ~506.28KiB at Unknown speed ETA 00:00
[download]  69.9% of ~506.28KiB at 10.15MiB/s ETA 00:00
[download]  76.2% of ~506.28KiB at  3.46MiB/s ETA 00:00
[download]  83.3% of ~506.28KiB at  3.54MiB/s ETA 00:00
[download]  83.3% of ~506.28KiB at  3.54MiB/s ETA 00:00
[download]  86.9% of ~486.89KiB at  3.54MiB/s ETA 00:00
[download]  87.3% of ~486.89KiB at  3.54MiB/s ETA 00:00
[download]  88.1% of ~486.89KiB at  3.54MiB/s ETA 00:00
[download]  89.7% of ~486.89KiB at  3.54MiB/s ETA 00:00
[download]  93.0% of ~486.89KiB at  8.79MiB/s ETA 00:00
[download]  99.6% of ~486.89KiB at  3.65MiB/s ETA 00:00
[download] 100.0% of ~486.89KiB at  3.72MiB/s ETA 00:00
[download] 100.0% of ~486.89KiB at  3.72MiB/s ETA 00:00
[download] 100% of 486.89KiB in 00:00
[ffmpeg] Merging formats into "Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-462.mp4' -i 'file:Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-audio0-Deutsch.mp4' -c copy -map 0:v:0 -map 1:a:0 'file:Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.temp.mp4'
Deleting original file Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-462.mp4 (pass -k to keep)
Deleting original file Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-audio0-Deutsch.mp4 (pass -k to keep)

Description

When attempting to download something from ARD that is geoblocked (eg. https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html from Austria), youtube-dl does not recognize it as geoblocked, but instead downloads a 30-second video that's actually a still image of a guy looking at a tablet, with text saying "nicht verfügbar" / "Dieses Video ist aus rechtlichen Gründen nicht in Ihrem Land verfügbar. Wir bitten um Verständnis." ("not available" / "this video is unavailable in your country for legal reasons, please understand.").

The issue is that this happens silently -- I'd expect that youtuble-dl would produce a non-zero exit code, but it just produces a video, and I only noticed something is off when the download completed faster than expected. Otherwise, I'd only have noticed way later when I'd actually watch the video (at which point in time it might have been depublished).

Now of course a site can "just" send out different videos per country subtly, but at least they do leave a clue: All formats of the geoblocked version contain lines such as:

         "manifest_url" : "https://daserstevod.akamaized.net/i/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/master.m3u8",
         "url" : "https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f2-a1.m3u8",

I'd prefer if the ARD backend recognized that clue (or any other that is available to it which it does not store in info.json) and rather not download the 30s fake video and err out instead.

Originally created by @chrysn on GitHub (Dec 13, 2022). ## Checklist - [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 (terms `ard "nicht verfügbar"`) ## Verbose log ``` [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['-v', 'https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html'] [debug] Encodings: locale UTF-8, fs utf-8, out utf-8, pref UTF-8 [debug] youtube-dl version 2021.12.17 [debug] Python version 3.10.8 (CPython) - Linux-6.0.0-3-amd64-x86_64-with-glibc2.36 [debug] exe versions: ffmpeg 5.1.2-1, ffprobe 5.1.2-1, phantomjs 2.1.1, rtmpdump 2.4 [debug] Proxy map: {} [ARD] alles-ist-eins-ausser-der-0-video-100: Downloading XML [ARD] alles-ist-eins-ausser-der-0-video-100: Downloading m3u8 information [debug] Default format spec: bestvideo+bestaudio/best [debug] Invoking downloader on 'https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f4-v1-a1.m3u8' [download] Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-462.mp4 has already been downloaded [download] 100% of 1.99MiB [debug] Invoking downloader on 'https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f2-a1.m3u8' [hlsnative] Downloading m3u8 manifest [hlsnative] Total fragments: 6 [download] Destination: Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-audio0-Deutsch.mp4 [download] 64.0% of ~506.28KiB at Unknown speed ETA 00:00 [download] 64.4% of ~506.28KiB at Unknown speed ETA 00:00 [download] 65.2% of ~506.28KiB at Unknown speed ETA 00:00 [download] 66.8% of ~506.28KiB at Unknown speed ETA 00:00 [download] 69.9% of ~506.28KiB at 10.15MiB/s ETA 00:00 [download] 76.2% of ~506.28KiB at 3.46MiB/s ETA 00:00 [download] 83.3% of ~506.28KiB at 3.54MiB/s ETA 00:00 [download] 83.3% of ~506.28KiB at 3.54MiB/s ETA 00:00 [download] 86.9% of ~486.89KiB at 3.54MiB/s ETA 00:00 [download] 87.3% of ~486.89KiB at 3.54MiB/s ETA 00:00 [download] 88.1% of ~486.89KiB at 3.54MiB/s ETA 00:00 [download] 89.7% of ~486.89KiB at 3.54MiB/s ETA 00:00 [download] 93.0% of ~486.89KiB at 8.79MiB/s ETA 00:00 [download] 99.6% of ~486.89KiB at 3.65MiB/s ETA 00:00 [download] 100.0% of ~486.89KiB at 3.72MiB/s ETA 00:00 [download] 100.0% of ~486.89KiB at 3.72MiB/s ETA 00:00 [download] 100% of 486.89KiB in 00:00 [ffmpeg] Merging formats into "Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.mp4" [debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-462.mp4' -i 'file:Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-audio0-Deutsch.mp4' -c copy -map 0:v:0 -map 1:a:0 'file:Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.temp.mp4' Deleting original file Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-462.mp4 (pass -k to keep) Deleting original file Alles ist Eins. Außer der 0. – Dr. Waus Chaos Computer Film-alles-ist-eins-ausser-der-0-video-100.f5.2.13.16.1_Web_XXL-audio0-Deutsch.mp4 (pass -k to keep) ``` ## Description When attempting to download something from ARD that is geoblocked (eg. `https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html` from Austria), youtube-dl does not recognize it as geoblocked, but instead downloads a 30-second video that's actually a still image of a guy looking at a tablet, with text saying "nicht verfügbar" / "Dieses Video ist aus rechtlichen Gründen nicht in Ihrem Land verfügbar. Wir bitten um Verständnis." ("not available" / "this video is unavailable in your country for legal reasons, please understand."). The issue is that this happens silently -- I'd expect that youtuble-dl would produce a non-zero exit code, but it just produces a video, and I only noticed something is off when the download completed faster than expected. Otherwise, I'd only have noticed way later when I'd actually watch the video (at which point in time it might have been depublished). Now of course a site can "just" send out different videos per country subtly, but at least they do leave a clue: All formats of the geoblocked version contain lines such as: ```json "manifest_url" : "https://daserstevod.akamaized.net/i/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/master.m3u8", "url" : "https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f2-a1.m3u8", ``` I'd prefer if the ARD backend recognized that clue (or any other that is available to it which it does not store in info.json) and rather not download the 30s fake video and err out instead.
Author
Owner

@dirkf commented on GitHub (Dec 13, 2022):

In #31125 there is a manifest URL with /weltweit/ so this shouldn't be a surprise. Fortunately the problem URL seems to respond to --geo-bypass-country DE:

$ python -m youtube_dl  'https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html' --get-url
https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f4-v1-a1.m3u8
https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f2-a1.m3u8
$ python -m youtube_dl  'https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html' --geo-bypass-country DE --get-url
http://ctv-videos.daserste.de/de/2022/12/06/7cfc8b26-00bd-43c6-a5f7-d55a11b3bb6b/JOB_263134_sendeton_1920x1080-50p-5000kbit.mp4
$

The ARD extractor needs an additional check to raise GeoRestrictedError with countries ['DE'] if all formats have /georestricted- in the URL.

@dirkf commented on GitHub (Dec 13, 2022): In #31125 there is a manifest URL with `/weltweit/` so this shouldn't be a surprise. Fortunately the problem URL seems to respond to `--geo-bypass-country DE`: ```shell $ python -m youtube_dl 'https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html' --get-url https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f4-v1-a1.m3u8 https://daserstevod-rwrtr.akamaized.net/i/,/static/geoblocking-hls/,640-1_995123,480-1_995123,960-1_995123,1280-1_995123,.mp4.csmil/index-f2-a1.m3u8 $ python -m youtube_dl 'https://www.daserste.de/information/reportage-dokumentation/dokus/videos/alles-ist-eins-ausser-der-0-video-100.html' --geo-bypass-country DE --get-url http://ctv-videos.daserste.de/de/2022/12/06/7cfc8b26-00bd-43c6-a5f7-d55a11b3bb6b/JOB_263134_sendeton_1920x1080-50p-5000kbit.mp4 $ ``` The ARD extractor needs an additional check to raise `GeoRestrictedError` with countries `['DE']` if all formats have `/georestricted-` in the URL.
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#25630
No description provided.