4
4
from .common import InfoExtractor
5
5
from ..utils import (
6
6
OnDemandPagedList ,
7
+ bug_reports_message ,
7
8
determine_ext ,
8
9
int_or_none ,
9
10
join_nonempty ,
@@ -233,7 +234,7 @@ class ARDBetaMediathekIE(InfoExtractor):
233
234
(?:(?:beta|www)\.)?ardmediathek\.de/
234
235
(?:[^/]+/)?
235
236
(?:player|live|video)/
236
- (?:(?P<display_id> [^?#]+) /)?
237
+ (?:[^?#]+/)?
237
238
(?P<id>[a-zA-Z0-9]+)
238
239
/?(?:[?#]|$)'''
239
240
_GEO_COUNTRIES = ['DE' ]
@@ -242,8 +243,8 @@ class ARDBetaMediathekIE(InfoExtractor):
242
243
'url' : 'https://www.ardmediathek.de/video/filme-im-mdr/liebe-auf-vier-pfoten/mdr-fernsehen/Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0' ,
243
244
'md5' : 'b6e8ab03f2bcc6e1f9e6cef25fcc03c4' ,
244
245
'info_dict' : {
245
- 'display_id' : 'filme-im-mdr/liebe-auf-vier-pfoten/mdr-fernsehen ' ,
246
- 'id' : 'Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0 ' ,
246
+ 'display_id' : 'Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0 ' ,
247
+ 'id' : '12939099 ' ,
247
248
'title' : 'Liebe auf vier Pfoten' ,
248
249
'description' : r're:^Claudia Schmitt, Anwältin in Salzburg' ,
249
250
'duration' : 5222 ,
@@ -255,7 +256,7 @@ class ARDBetaMediathekIE(InfoExtractor):
255
256
'series' : 'Filme im MDR' ,
256
257
'age_limit' : 0 ,
257
258
'channel' : 'MDR' ,
258
- '_old_archive_ids' : ['ardbetamediathek 12939099 ' ],
259
+ '_old_archive_ids' : ['ardbetamediathek Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0 ' ],
259
260
},
260
261
}, {
261
262
'url' : 'https://www.ardmediathek.de/mdr/video/die-robuste-roswita/Y3JpZDovL21kci5kZS9iZWl0cmFnL2Ntcy84MWMxN2MzZC0wMjkxLTRmMzUtODk4ZS0wYzhlOWQxODE2NGI/' ,
@@ -276,37 +277,37 @@ class ARDBetaMediathekIE(InfoExtractor):
276
277
'url' : 'https://www.ardmediathek.de/video/tagesschau-oder-tagesschau-20-00-uhr/das-erste/Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll' ,
277
278
'md5' : '1e73ded21cb79bac065117e80c81dc88' ,
278
279
'info_dict' : {
279
- 'id' : 'Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll ' ,
280
+ 'id' : '10049223 ' ,
280
281
'ext' : 'mp4' ,
281
282
'title' : 'tagesschau, 20:00 Uhr' ,
282
283
'timestamp' : 1636398000 ,
283
284
'description' : 'md5:39578c7b96c9fe50afdf5674ad985e6b' ,
284
285
'upload_date' : '20211108' ,
285
- 'display_id' : 'tagesschau-oder-tagesschau-20-00-uhr/das-erste ' ,
286
+ 'display_id' : 'Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll ' ,
286
287
'duration' : 915 ,
287
288
'episode' : 'tagesschau, 20:00 Uhr' ,
288
289
'series' : 'tagesschau' ,
289
290
'thumbnail' : 'https://api.ardmediathek.de/image-service/images/urn:ard:image:fbb21142783b0a49?w=960&ch=ee69108ae344f678' ,
290
291
'channel' : 'ARD-Aktuell' ,
291
- '_old_archive_ids' : ['ardbetamediathek 10049223 ' ],
292
+ '_old_archive_ids' : ['ardbetamediathek Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll ' ],
292
293
},
293
294
}, {
294
295
'url' : 'https://www.ardmediathek.de/video/7-tage/7-tage-unter-harten-jungs/hr-fernsehen/N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3' ,
295
296
'md5' : 'c428b9effff18ff624d4f903bda26315' ,
296
297
'info_dict' : {
297
- 'id' : 'N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3 ' ,
298
+ 'id' : '94834686 ' ,
298
299
'ext' : 'mp4' ,
299
300
'duration' : 2700 ,
300
301
'episode' : '7 Tage ... unter harten Jungs' ,
301
302
'description' : 'md5:0f215470dcd2b02f59f4bd10c963f072' ,
302
303
'upload_date' : '20231005' ,
303
304
'timestamp' : 1696491171 ,
304
- 'display_id' : '7-tage/7-tage-unter-harten-jungs/hr-fernsehen ' ,
305
+ 'display_id' : 'N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3 ' ,
305
306
'series' : '7 Tage ...' ,
306
307
'channel' : 'HR' ,
307
308
'thumbnail' : 'https://api.ardmediathek.de/image-service/images/urn:ard:image:f6e6d5ffac41925c?w=960&ch=fa32ba69bc87989a' ,
308
309
'title' : '7 Tage ... unter harten Jungs' ,
309
- '_old_archive_ids' : ['ardbetamediathek 94834686 ' ],
310
+ '_old_archive_ids' : ['ardbetamediathek N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3 ' ],
310
311
},
311
312
}, {
312
313
'url' : 'https://beta.ardmediathek.de/ard/video/Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhdG9ydC9mYmM4NGM1NC0xNzU4LTRmZGYtYWFhZS0wYzcyZTIxNGEyMDE' ,
@@ -357,14 +358,25 @@ def _extract_episode_info(self, title):
357
358
}), get_all = False )
358
359
359
360
def _real_extract (self , url ):
360
- video_id , display_id = self ._match_valid_url (url ). group ( 'id' , 'display_id' )
361
+ display_id = self ._match_id (url )
361
362
362
363
page_data = self ._download_json (
363
- f'https://api.ardmediathek.de/page-gateway/pages/ard/item/{ video_id } ' , video_id , query = {
364
+ f'https://api.ardmediathek.de/page-gateway/pages/ard/item/{ display_id } ' , display_id , query = {
364
365
'embedded' : 'false' ,
365
366
'mcV6' : 'true' ,
366
367
})
367
368
369
+ # For user convenience we use the old contentId instead of the longer crid
370
+ # Ref: https://github.com/yt-dlp/yt-dlp/issues/8731#issuecomment-1874398283
371
+ old_id = traverse_obj (page_data , ('tracking' , 'atiCustomVars' , 'contentId' , {int }))
372
+ if old_id is not None :
373
+ video_id = str (old_id )
374
+ archive_ids = [make_archive_id (ARDBetaMediathekIE , display_id )]
375
+ else :
376
+ self .report_warning (f'Could not extract contentId{ bug_reports_message ()} ' )
377
+ video_id = display_id
378
+ archive_ids = None
379
+
368
380
player_data = traverse_obj (
369
381
page_data , ('widgets' , lambda _ , v : v ['type' ] in ('player_ondemand' , 'player_live' ), {dict }), get_all = False )
370
382
is_live = player_data .get ('type' ) == 'player_live'
@@ -419,8 +431,6 @@ def _real_extract(self, url):
419
431
})
420
432
421
433
age_limit = traverse_obj (page_data , ('fskRating' , {lambda x : remove_start (x , 'FSK' )}, {int_or_none }))
422
- old_id = traverse_obj (page_data , ('tracking' , 'atiCustomVars' , 'contentId' ))
423
-
424
434
return {
425
435
'id' : video_id ,
426
436
'display_id' : display_id ,
@@ -438,7 +448,7 @@ def _real_extract(self, url):
438
448
'channel' : 'clipSourceName' ,
439
449
})),
440
450
** self ._extract_episode_info (page_data .get ('title' )),
441
- '_old_archive_ids' : [ make_archive_id ( ARDBetaMediathekIE , old_id )] ,
451
+ '_old_archive_ids' : archive_ids ,
442
452
}
443
453
444
454
0 commit comments