new version of DMAX (DE) site is not working #20567

Open
opened 2026-02-21 09:49:17 -05:00 by deekerman · 12 comments
Owner

Originally created by @mogol07 on GitHub (May 27, 2020).

Checklist

  • I'm reporting a broken site support
  • I've verified that I'm running youtube-dl version 2020.05.08
  • 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

youtube-dl.exe --format bestvideo[ext=mp4]+hls-160000mp4a.40.2-eng -v --no-check-certificate https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--format', 'bestvideo[ext=mp4]+hls-160000mp4a.40.2-eng', '-v', '--no-check-certificate', 'https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/']
[debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251
[debug] youtube-dl version 2020.05.08
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362
[debug] exe versions: none
[debug] Proxy map: {}
[generic] body-cam-911-polizeieinsatz-hautnah: Requesting header
WARNING: Falling back on generic information extractor.
[generic] body-cam-911-polizeieinsatz-hautnah: Downloading webpage
[generic] body-cam-911-polizeieinsatz-hautnah: Extracting information
ERROR: Unsupported URL: https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/
Traceback (most recent call last):
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp4z7swgz7\build\youtube_dl\YoutubeDL.py", line 797, in extract_info
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp4z7swgz7\build\youtube_dl\extractor\common.py", line 530, in extract
  File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp4z7swgz7\build\youtube_dl\extractor\generic.py", line 3370, in _real_extract
youtube_dl.utils.UnsupportedError: Unsupported URL: https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/

Description

One or two weeks ago site of DMAX (DE), was completely redesign, and new URL and way of working with video was provided (all video of season are on same page without change URL for each episode). Now youtube-dl couldn't work with this site anymore.

Originally created by @mogol07 on GitHub (May 27, 2020). <!-- ###################################################################### 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 2020.05.08. 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 **2020.05.08** - [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 <!-- Provide the complete verbose output of youtube-dl that clearly demonstrates the problem. Add the `-v` flag to your command line you run youtube-dl with (`youtube-dl -v <your command line>`), copy the WHOLE output and insert it below. It should look similar to this: [debug] System config: [] [debug] User config: [] [debug] Command-line args: [u'-v', u'http://www.youtube.com/watch?v=BaW_jenozKcj'] [debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251 [debug] youtube-dl version 2020.05.08 [debug] Python version 2.7.11 - Windows-2003Server-5.2.3790-SP2 [debug] exe versions: ffmpeg N-75573-g1d0487f, ffprobe N-75573-g1d0487f, rtmpdump 2.4 [debug] Proxy map: {} <more lines> --> ``` youtube-dl.exe --format bestvideo[ext=mp4]+hls-160000mp4a.40.2-eng -v --no-check-certificate https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/ [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ['--format', 'bestvideo[ext=mp4]+hls-160000mp4a.40.2-eng', '-v', '--no-check-certificate', 'https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/'] [debug] Encodings: locale cp1251, fs mbcs, out cp866, pref cp1251 [debug] youtube-dl version 2020.05.08 [debug] Python version 3.4.4 (CPython) - Windows-10-10.0.18362 [debug] exe versions: none [debug] Proxy map: {} [generic] body-cam-911-polizeieinsatz-hautnah: Requesting header WARNING: Falling back on generic information extractor. [generic] body-cam-911-polizeieinsatz-hautnah: Downloading webpage [generic] body-cam-911-polizeieinsatz-hautnah: Extracting information ERROR: Unsupported URL: https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/ Traceback (most recent call last): File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp4z7swgz7\build\youtube_dl\YoutubeDL.py", line 797, in extract_info File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp4z7swgz7\build\youtube_dl\extractor\common.py", line 530, in extract File "C:\Users\dst\AppData\Roaming\Build archive\youtube-dl\ytdl-org\tmp4z7swgz7\build\youtube_dl\extractor\generic.py", line 3370, in _real_extract youtube_dl.utils.UnsupportedError: Unsupported URL: https://dmax.de/sendungen/body-cam-911-polizeieinsatz-hautnah/ ``` ## Description <!-- Provide an explanation of your issue in an arbitrary form. Provide any additional information, suggested solution and as much context and examples as possible. If work on your issue requires account credentials please provide them or explain how one can obtain them. --> One or two weeks ago site of DMAX (DE), was completely redesign, and new URL and way of working with video was provided (all video of season are on same page without change URL for each episode). Now youtube-dl couldn't work with this site anymore.
Author
Owner

@HendrikF commented on GitHub (Dec 21, 2020):

Some analysis on how the site seems to work, maybe it helps someone build something

When requesting https://dmax.de/sendungen/goldrausch-in-alaska/
The response contains some "hyoga-player" element:

...
<hyoga-player
    uid="<uid>"
    playerselector="hyogaPlayer-<uid>"
    videolibrary="videojs"
    sourcetype="sonic"
    locale="de"
    playertype="showPlayer"
    
    showid="6018"
    playbacktype="video"
    id="hyogaManager-<uid>"
    
    
    endpoint="https://eu1-prod.disco-api.com"
    realm="dmaxde"

...

"showid", "endpoint" and "realm" seem to be important

An authorization token seems to come from here (header excerpt):

GET /token?realm=dmaxde HTTP/1.1
Host: eu1-prod.disco-api.com
Content-Type: application/json
Origin: https://dmax.de
Referer: https://eu1-prod.disco-api.com/
{
  "data" : {
    "attributes" : {
      "realm" : "dmaxde",
      "token" : "<token>"
    },
    "id" : "token-<some-id>",
    "type" : "token"
  }
}

When searching devtools for the showid, I find this request (note the showid in the url):

GET /content/videos//?include=primaryChannel,primaryChannel.images,show,show.images,genres,tags,images,contentPackages&sort=-seasonNumber,-episodeNumber&filter[show.id]=6018&filter[videoType]=EPISODE&page[number]=1&page[size]=100 HTTP/1.1
Host: eu1-prod.disco-api.com
Content-Type: application/json
Authorization: Bearer <token>
X-disco-client: Alps:HyogaPlayer:0.0.0
Origin: https://dmax.de
Referer: https://eu1-prod.disco-api.com/
{"data":[{"attributes": {"airDate": "2020-12-15T23:00:00Z","alternateId": "goldrausch-in-alaska-shutdown-vs-schatzsuche","availabilityWindows":........

The response seems to contain all the available material for the show.
From this list one would select the wanted episode.

Here 185908 seems to be data[0].id from previous request:

GET /playback/videoPlaybackInfo/185908?usePreAuth=true HTTP/1.1
Host: eu1-prod.disco-api.com
Content-Type: application/json
Authorization: Bearer <token>
X-disco-client: Alps:HyogaPlayer:0.0.0
Origin: https://dmax.de
Referer: https://eu1-prod.disco-api.com/
{
  "data" : {
    "attributes" : {
      "markers" : {
        "videoAboutToEnd" : 2600027
      },
      "protection" : {
        "clearkeyEnabled" : true,
        "clearkey_enabled" : true,
        "drmDeviceId" : "",
        "drmEnabled" : false,
        "drmToken" : "",
        "drm_device_id" : "",
        "drm_enabled" : false,
        "drm_token" : "",
        "key_servers" : {
          "clearkey" : "https://dplay-clearkey-service-prod.nep.ms/keys/1.clearkey",
          "fairplay" : "https://nep-prod.conax.cloud/fairplay/license",
          "playready" : "https://nep-prod.conax.cloud/cxplayready/rightsmanager.asmx",
          "widevine" : "https://nep-prod.conax.cloud/widevine/license"
        },
        "schemes" : {
          "clearkey" : {
            "licenseUrl" : "https://dplay-clearkey-service-prod.nep.ms/keys/1.clearkey"
          },
          "fairplay" : {
            "certificateUrl" : "https://nep-prod.conax.cloud/fairplay/certificates/A30BAEFF134A609B019CBBB0D5880803B5D5E9D0",
            "licenseUrl" : "https://nep-prod.conax.cloud/fairplay/license"
          },
          "playready" : {
            "licenseUrl" : "https://nep-prod.conax.cloud/cxplayready/rightsmanager.asmx"
          },
          "widevine" : {
            "licenseUrl" : "https://nep-prod.conax.cloud/widevine/license"
          }
        }
      },
      "reportProgressInterval" : 60000,
      "sourceSystemId" : "DMAXDE_DE_DCA52388100",
      "streaming" : {
        "dash" : {
          "url" : "https://dplaynordics-vod-33.akamaized.net/dplaydni/188480/1/dash/9985497004/manifest.mpd?hdnts=st=1608584925~exp=1608671325~acl=/dplaydni/188480/1/dash/9985497004/*~hmac=<stuff>&bw_start=800"
        },
        "hls" : {
          "url" : "https://dplaynordics-vod-65.akamaized.net/dplaydni/188480/0/hls/9985497004/playlist.m3u8?hdnts=st=1608584925~exp=1608671325~acl=/dplaydni/188480/0/hls/9985497004/*~hmac=<stuff>"
        }
      },
      "userInfo" : {
        "packages" : [ "Free" ]
      },
      "viewingHistory" : {
        "viewed" : false
      }
    },
    "id" : "185908",
    "type" : "videoPlaybackInfo"
  }
}

data.attributes.streaming.(hls|dash).url then contains the playlist. I was able to play the episode in vlc by opening the hls url.

@HendrikF commented on GitHub (Dec 21, 2020): Some analysis on how the site seems to work, maybe it helps someone build something When requesting https://dmax.de/sendungen/goldrausch-in-alaska/ The response contains some "hyoga-player" element: ``` ... <hyoga-player uid="<uid>" playerselector="hyogaPlayer-<uid>" videolibrary="videojs" sourcetype="sonic" locale="de" playertype="showPlayer" showid="6018" playbacktype="video" id="hyogaManager-<uid>" endpoint="https://eu1-prod.disco-api.com" realm="dmaxde" ... ``` "showid", "endpoint" and "realm" seem to be important An authorization token seems to come from here (header excerpt): ``` GET /token?realm=dmaxde HTTP/1.1 Host: eu1-prod.disco-api.com Content-Type: application/json Origin: https://dmax.de Referer: https://eu1-prod.disco-api.com/ ``` ``` { "data" : { "attributes" : { "realm" : "dmaxde", "token" : "<token>" }, "id" : "token-<some-id>", "type" : "token" } } ``` When searching devtools for the showid, I find this request (note the showid in the url): ``` GET /content/videos//?include=primaryChannel,primaryChannel.images,show,show.images,genres,tags,images,contentPackages&sort=-seasonNumber,-episodeNumber&filter[show.id]=6018&filter[videoType]=EPISODE&page[number]=1&page[size]=100 HTTP/1.1 Host: eu1-prod.disco-api.com Content-Type: application/json Authorization: Bearer <token> X-disco-client: Alps:HyogaPlayer:0.0.0 Origin: https://dmax.de Referer: https://eu1-prod.disco-api.com/ ``` ``` {"data":[{"attributes": {"airDate": "2020-12-15T23:00:00Z","alternateId": "goldrausch-in-alaska-shutdown-vs-schatzsuche","availabilityWindows":........ ``` The response seems to contain all the available material for the show. From this list one would select the wanted episode. Here `185908` seems to be `data[0].id` from previous request: ``` GET /playback/videoPlaybackInfo/185908?usePreAuth=true HTTP/1.1 Host: eu1-prod.disco-api.com Content-Type: application/json Authorization: Bearer <token> X-disco-client: Alps:HyogaPlayer:0.0.0 Origin: https://dmax.de Referer: https://eu1-prod.disco-api.com/ ``` ``` { "data" : { "attributes" : { "markers" : { "videoAboutToEnd" : 2600027 }, "protection" : { "clearkeyEnabled" : true, "clearkey_enabled" : true, "drmDeviceId" : "", "drmEnabled" : false, "drmToken" : "", "drm_device_id" : "", "drm_enabled" : false, "drm_token" : "", "key_servers" : { "clearkey" : "https://dplay-clearkey-service-prod.nep.ms/keys/1.clearkey", "fairplay" : "https://nep-prod.conax.cloud/fairplay/license", "playready" : "https://nep-prod.conax.cloud/cxplayready/rightsmanager.asmx", "widevine" : "https://nep-prod.conax.cloud/widevine/license" }, "schemes" : { "clearkey" : { "licenseUrl" : "https://dplay-clearkey-service-prod.nep.ms/keys/1.clearkey" }, "fairplay" : { "certificateUrl" : "https://nep-prod.conax.cloud/fairplay/certificates/A30BAEFF134A609B019CBBB0D5880803B5D5E9D0", "licenseUrl" : "https://nep-prod.conax.cloud/fairplay/license" }, "playready" : { "licenseUrl" : "https://nep-prod.conax.cloud/cxplayready/rightsmanager.asmx" }, "widevine" : { "licenseUrl" : "https://nep-prod.conax.cloud/widevine/license" } } }, "reportProgressInterval" : 60000, "sourceSystemId" : "DMAXDE_DE_DCA52388100", "streaming" : { "dash" : { "url" : "https://dplaynordics-vod-33.akamaized.net/dplaydni/188480/1/dash/9985497004/manifest.mpd?hdnts=st=1608584925~exp=1608671325~acl=/dplaydni/188480/1/dash/9985497004/*~hmac=<stuff>&bw_start=800" }, "hls" : { "url" : "https://dplaynordics-vod-65.akamaized.net/dplaydni/188480/0/hls/9985497004/playlist.m3u8?hdnts=st=1608584925~exp=1608671325~acl=/dplaydni/188480/0/hls/9985497004/*~hmac=<stuff>" } }, "userInfo" : { "packages" : [ "Free" ] }, "viewingHistory" : { "viewed" : false } }, "id" : "185908", "type" : "videoPlaybackInfo" } } ``` `data.attributes.streaming.(hls|dash).url` then contains the playlist. I was able to play the episode in vlc by opening the hls url.
Author
Owner

@clemone210 commented on GitHub (Mar 3, 2022):

Any manual way to download a file from the site?
I could not figure out how to do that.

@clemone210 commented on GitHub (Mar 3, 2022): Any manual way to download a file from the site? I could not figure out how to do that.
Author
Owner

@regseb commented on GitHub (Apr 14, 2022):

@HendrikF Thank you for the process. For my browser extension, I implemented your process and it works.

Here is an excerpt of the source code in JavaScript (which can be executed in the browser console on the page of a video). You can use it for your Python script.

const extract = async function () {
    const API_URL = "https://eu1-prod.disco-api.com";
    const player = document.querySelector("hyoga-player");
    if (null === player) {
        return undefined;
    }
    // Récupérer le jeton pour appeler l'API.
    let response = await fetch(`${API_URL}/token?realm=dmaxde`, {
        headers: {
            "x-device-info": "STONEJS/1 (Unknown/Unknown; Unknown/Unknown;" +
                                                                    " Unknown)",
        },
    });
    let json = await response.json();
    const token = json.data.attributes.token;

    // Récupérer l'identifiant de la vidéo.
    let videoId;
    if (player.hasAttribute("assetid")) {
        const assetid = player.getAttribute("assetid");
        const subresponse = await fetch(`${API_URL}/content/videos` +
                                                               `/${assetid}`, {
            headers: { authorization: `Bearer ${token}` },
        });
        const subjson = await subresponse.json();
        videoId = subjson.data.id;
    } else if (player.hasAttribute("showid")) {
        const showid = player.getAttribute("showid");
        const subresponse = await fetch(`${API_URL}/content/videos/` +
                                        `?filter[show.id]=${showid}`, {
            headers: { authorization: `Bearer ${token}` },
        });
        const subjson = await subresponse.json();
        videoId = subjson.data[0].id;
    }

    // Récupérer l'URL de la vidéo.
    response = await fetch(`${API_URL}/playback/v3/videoPlaybackInfo`, {
        method:  "POST",
        headers: {
            authorization:  `Bearer ${token}`,
            "content-type": "application/json",
        },
        body: JSON.stringify({
            deviceInfo: { adBlocker: false },
            videoId,
        }),
    });
    json = await response.json();
    if ("data" in json) {
        for (const streaming of json.data.attributes.streaming) {
            if ("hls" === streaming.type) {
                return streaming.url;
            }
        }
    }

    return undefined;
};
console.log(await extract());
@regseb commented on GitHub (Apr 14, 2022): @HendrikF Thank you for the process. For my browser extension, I implemented your process and it works. Here is an excerpt of the [source code](https://github.com/regseb/castkodi/blob/209eac0/src/core/scraper/dmax.js) in JavaScript (which can be executed in the browser console on the page of a video). You can use it for your Python script. ```JavaScript const extract = async function () { const API_URL = "https://eu1-prod.disco-api.com"; const player = document.querySelector("hyoga-player"); if (null === player) { return undefined; } // Récupérer le jeton pour appeler l'API. let response = await fetch(`${API_URL}/token?realm=dmaxde`, { headers: { "x-device-info": "STONEJS/1 (Unknown/Unknown; Unknown/Unknown;" + " Unknown)", }, }); let json = await response.json(); const token = json.data.attributes.token; // Récupérer l'identifiant de la vidéo. let videoId; if (player.hasAttribute("assetid")) { const assetid = player.getAttribute("assetid"); const subresponse = await fetch(`${API_URL}/content/videos` + `/${assetid}`, { headers: { authorization: `Bearer ${token}` }, }); const subjson = await subresponse.json(); videoId = subjson.data.id; } else if (player.hasAttribute("showid")) { const showid = player.getAttribute("showid"); const subresponse = await fetch(`${API_URL}/content/videos/` + `?filter[show.id]=${showid}`, { headers: { authorization: `Bearer ${token}` }, }); const subjson = await subresponse.json(); videoId = subjson.data[0].id; } // Récupérer l'URL de la vidéo. response = await fetch(`${API_URL}/playback/v3/videoPlaybackInfo`, { method: "POST", headers: { authorization: `Bearer ${token}`, "content-type": "application/json", }, body: JSON.stringify({ deviceInfo: { adBlocker: false }, videoId, }), }); json = await response.json(); if ("data" in json) { for (const streaming of json.data.attributes.streaming) { if ("hls" === streaming.type) { return streaming.url; } } } return undefined; }; console.log(await extract()); ```
Author
Owner

@HendrikF commented on GitHub (Apr 14, 2022):

They seem to have introduced a little change lately. You need to supply a "valid" User-Agent header. Using plain curl did not work anymore, while it worked when I figured out these things. Maybe they are blocking curl specifically. I did not really test that, as the User-Agent of a current Firefox worked.

@HendrikF commented on GitHub (Apr 14, 2022): They seem to have introduced a little change lately. You need to supply a "valid" User-Agent header. Using plain curl did not work anymore, while it worked when I figured out these things. Maybe they are blocking curl specifically. I did not really test that, as the User-Agent of a current Firefox worked.
Author
Owner

@dirkf commented on GitHub (May 25, 2023):

It seems that this site, if still operational, can't be properly supported by yt-dl because individual shows don't have specific URLs. If anyone can provide either

  • a working URL for a playable (ie, without DRM enabled) individual show, or
  • a current series URL with its .HAR trace from the browser,

it may be possible to update the support as part of #32235.

@dirkf commented on GitHub (May 25, 2023): It seems that this site, if still operational, can't be properly supported by yt-dl because individual shows don't have specific URLs. If anyone can provide either * a working URL for a playable (ie, without DRM enabled) individual show, or * a current series URL with its .HAR trace from the browser, it may be possible to update the support as part of #32235.
Author
Owner

@HendrikF commented on GitHub (May 25, 2023):

Yeah, unfortunately they completely changed their site a few months ago.
They removed URLs for episodes it seems and they introduced DRM. There was no DRM before.

@HendrikF commented on GitHub (May 25, 2023): Yeah, unfortunately they completely changed their site a few months ago. They removed URLs for episodes it seems and they introduced DRM. There was no DRM before.
Author
Owner

@HendrikF commented on GitHub (May 25, 2023):

Hm, they removed URLs for episodes, but shows can still be addressed.
Maybe it could download whole shows as a kind of playlist?
DRM might still be a problem, and I did not look at the API, whether you can still get HLS URLs.

@HendrikF commented on GitHub (May 25, 2023): Hm, they removed URLs for episodes, but shows can still be addressed. Maybe it could download whole shows as a kind of playlist? DRM might still be a problem, and I did not look at the API, whether you can still get HLS URLs.
Author
Owner

@mogol07 commented on GitHub (May 25, 2023):

It's possible to open page with episode, for example:
https://dmax.de/sendungen/112-feuerwehr-im-einsatz - serials, at right just above episode thumbnails "Alle Videos zur Sendung" (All videos of serial), and it's opens https://dmax.de/sendungen/112-feuerwehr-im-einsatz/videos with all available episodes.
Moreover, here you could get page for each episode, for example https://dmax.de/sendungen/112-feuerwehr-im-einsatz/rettung-aus-dem-wald
I don't know if it'd help to download video, but url are still available.

@mogol07 commented on GitHub (May 25, 2023): It's possible to open page with episode, for example: https://dmax.de/sendungen/112-feuerwehr-im-einsatz - serials, at right just above episode thumbnails "Alle Videos zur Sendung" (All videos of serial), and it's opens https://dmax.de/sendungen/112-feuerwehr-im-einsatz/videos with all available episodes. Moreover, here you could get page for each episode, for example https://dmax.de/sendungen/112-feuerwehr-im-einsatz/rettung-aus-dem-wald I don't know if it'd help to download video, but url are still available.
Author
Owner

@HendrikF commented on GitHub (May 25, 2023):

You are right. I remember that this button existed before the redesign. Somehow I missed it.

I just had a look and there is still a <hyoga-player> with an assetid instead of a showid.
Also I recognize similar API calls like in my first comment.
So maybe they only redesigned the frontend.
Unfortunately that player is generated using JS. Previously it was included in the static HTML.

@HendrikF commented on GitHub (May 25, 2023): You are right. I remember that this button existed before the redesign. Somehow I missed it. I just had a look and there is still a `<hyoga-player>` with an assetid instead of a showid. Also I recognize similar API calls like in my first comment. So maybe they only redesigned the frontend. Unfortunately that player is generated using JS. Previously it was included in the static HTML.
Author
Owner

@dirkf commented on GitHub (May 25, 2023):

https://dmax.de/sendungen/112-feuerwehr-im-einsatz/rettung-aus-dem-wald finds no media with PR #32235. I expect DRM is the reason (it is). There should be a check to detect this.

The non-JS page https://dmax.de/sendungen/112-feuerwehr-im-einsatz/videos contains a ld+json video playlist (ItemList), each item of the form

    {
      '@type': 'VideoObject',
      'position': 2,
      'name': 'Feuer im Restaurant',
      'description': 'Feuerwehrleute müssen auf alles vorbereitet sein. Denn sie wissen nie, was sie beim nächsten Einsatz erwartet. So wie in Mainz, dort ist offenbar ein Restaurant in Brand geraten. In Potsdam besteht ebenfalls Handlungsbedarf. Denn aus dem Fundament der Humboldtbrücke steigt Rauch auf. Das Bauwerk stammt aus den Siebzigerjahren und der Zugang zum Gefahrenort gestaltet sich schwierig. Und auf einer der wichtigsten Verkehrsadern Deutschlands hat sich ein schwerer Unfall ereignet. Auf der A2 in Richtung Hannover ist eine Person in ihrem Fahrzeug eingeklemmt.',
      'thumbnailUrl': 'https://eu1-prod-images.disco-api.com/2023/05/05/2a124565-0bd4-395e-8136-78667571a868.jpeg',
      'uploadDate': '2023-05-11T20:05:00Z',
      'embedUrl': 'https://dmax.de/sendungen/112-feuerwehr-im-einsatz/feuer-im-restaurant',
      'duration': 'T0H43M30S',
      'expires': '2026-05-30T22:00:00Z'
    },

That's definitely something we can parse and extract, if the videos in the list have any playable media links.

@dirkf commented on GitHub (May 25, 2023): https://dmax.de/sendungen/112-feuerwehr-im-einsatz/rettung-aus-dem-wald finds no media with PR #32235. I expect DRM is the reason (it is). There should be a check to detect this. The non-JS page https://dmax.de/sendungen/112-feuerwehr-im-einsatz/videos contains a ld+json video playlist (`ItemList`), each item of the form ```py { '@type': 'VideoObject', 'position': 2, 'name': 'Feuer im Restaurant', 'description': 'Feuerwehrleute müssen auf alles vorbereitet sein. Denn sie wissen nie, was sie beim nächsten Einsatz erwartet. So wie in Mainz, dort ist offenbar ein Restaurant in Brand geraten. In Potsdam besteht ebenfalls Handlungsbedarf. Denn aus dem Fundament der Humboldtbrücke steigt Rauch auf. Das Bauwerk stammt aus den Siebzigerjahren und der Zugang zum Gefahrenort gestaltet sich schwierig. Und auf einer der wichtigsten Verkehrsadern Deutschlands hat sich ein schwerer Unfall ereignet. Auf der A2 in Richtung Hannover ist eine Person in ihrem Fahrzeug eingeklemmt.', 'thumbnailUrl': 'https://eu1-prod-images.disco-api.com/2023/05/05/2a124565-0bd4-395e-8136-78667571a868.jpeg', 'uploadDate': '2023-05-11T20:05:00Z', 'embedUrl': 'https://dmax.de/sendungen/112-feuerwehr-im-einsatz/feuer-im-restaurant', 'duration': 'T0H43M30S', 'expires': '2026-05-30T22:00:00Z' }, ``` That's definitely something we can parse and extract, if the videos in the list have any playable media links.
Author
Owner

@RundesBalli commented on GitHub (Dec 18, 2023):

I expect DRM is the reason (it is).

This DRM error message also appears to me, but I can still watch the videos in the browser, even if I deactivate DRM in about:addons (Firefox).

@RundesBalli commented on GitHub (Dec 18, 2023): > I expect DRM is the reason (it is). This DRM error message also appears to me, but I can still watch the videos in the browser, even if I deactivate DRM in `about:addons` (Firefox).
Author
Owner

@dirkf commented on GitHub (Dec 18, 2023):

As you can see, the JSON quoted above distinguishes between ClearKey and (other) DRM. It should be possible to handle ClearKey, but https://github.com/yt-dlp/yt-dlp/issues/7098 applies.

@dirkf commented on GitHub (Dec 18, 2023): As you can see, the JSON quoted above distinguishes between ClearKey and (other) DRM. It should be possible to handle ClearKey, but https://github.com/yt-dlp/yt-dlp/issues/7098 applies.
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#20567
No description provided.