]> jfr.im git - yt-dlp.git/blobdiff - yt_dlp/extractor/dplay.py
[misc] Add `hatch`, `ruff`, `pre-commit` and improve dev docs (#7409)
[yt-dlp.git] / yt_dlp / extractor / dplay.py
index 363b4bec9e372773d00a78940bce2631592bbe74..ddf2128b0a434fff9155ca78df3a6f159a445ce5 100644 (file)
@@ -4,8 +4,8 @@
 from .common import InfoExtractor
 from ..networking.exceptions import HTTPError
 from ..utils import (
-    determine_ext,
     ExtractorError,
+    determine_ext,
     float_or_none,
     int_or_none,
     remove_start,
@@ -355,12 +355,10 @@ def _download_video_playback_info(self, disco_base, video_id, headers):
             video_id, headers=headers, data=json.dumps({
                 'deviceInfo': {
                     'adBlocker': False,
+                    'drmSupported': False,
                 },
                 'videoId': video_id,
-                'wisteriaProperties': {
-                    'platform': 'desktop',
-                    'product': self._PRODUCT,
-                },
+                'wisteriaProperties': {},
             }).encode('utf-8'))['data']['attributes']['streaming']
 
     def _real_extract(self, url):
@@ -878,10 +876,31 @@ def _update_disco_api_headers(self, headers, disco_base, display_id, realm):
         })
 
 
-class DiscoveryNetworksDeIE(DPlayBaseIE):
+class DiscoveryNetworksDeIE(DiscoveryPlusBaseIE):
     _VALID_URL = r'https?://(?:www\.)?(?P<domain>(?:tlc|dmax)\.de|dplay\.co\.uk)/(?:programme|show|sendungen)/(?P<programme>[^/]+)/(?:video/)?(?P<alternate_id>[^/]+)'
 
     _TESTS = [{
+        'url': 'https://dmax.de/sendungen/goldrausch-in-australien/german-gold',
+        'info_dict': {
+            'id': '4756322',
+            'ext': 'mp4',
+            'title': 'German Gold',
+            'description': 'md5:f3073306553a8d9b40e6ac4cdbf09fc6',
+            'display_id': 'goldrausch-in-australien/german-gold',
+            'episode': 'Episode 1',
+            'episode_number': 1,
+            'season': 'Season 5',
+            'season_number': 5,
+            'series': 'Goldrausch in Australien',
+            'duration': 2648.0,
+            'upload_date': '20230517',
+            'timestamp': 1684357500,
+            'creators': ['DMAX'],
+            'thumbnail': 'https://eu1-prod-images.disco-api.com/2023/05/09/f72fb510-7992-3b12-af7f-f16a2c22d1e3.jpeg',
+            'tags': ['schatzsucher', 'schatz', 'nugget', 'bodenschätze', 'down under', 'australien', 'goldrausch'],
+        },
+        'params': {'skip_download': 'm3u8'},
+    }, {
         'url': 'https://www.tlc.de/programme/breaking-amish/video/die-welt-da-drauen/DCB331270001100',
         'info_dict': {
             'id': '78867',
@@ -901,9 +920,7 @@ class DiscoveryNetworksDeIE(DPlayBaseIE):
             'season_number': 1,
             'thumbnail': r're:https://.+\.jpg',
         },
-        'params': {
-            'skip_download': True,
-        },
+        'skip': '404 Not Found',
     }, {
         'url': 'https://www.dmax.de/programme/dmax-highlights/video/tuning-star-sidney-hoffmann-exklusiv-bei-dmax/191023082312316',
         'only_matching': True,
@@ -920,8 +937,14 @@ def _real_extract(self, url):
         country = 'GB' if domain == 'dplay.co.uk' else 'DE'
         realm = 'questuk' if country == 'GB' else domain.replace('.', '')
         return self._get_disco_api_info(
-            url, '%s/%s' % (programme, alternate_id),
-            'sonic-eu1-prod.disco-api.com', realm, country)
+            url, f'{programme}/{alternate_id}', 'eu1-prod.disco-api.com', realm, country)
+
+    def _update_disco_api_headers(self, headers, disco_base, display_id, realm):
+        headers.update({
+            'x-disco-params': f'realm={realm}',
+            'x-disco-client': 'Alps:HyogaPlayer:0.0.0',
+            'Authorization': self._get_auth(disco_base, display_id, realm),
+        })
 
 
 class DiscoveryPlusShowBaseIE(DPlayBaseIE):