Skip to content

Commit b695127

Browse files
authored
[ie/ard:mediathek] Revert to using old id (yt-dlp#8916)
Authored by: Grub4K
1 parent ffbd4f2 commit b695127

File tree

1 file changed

+25
-15
lines changed

1 file changed

+25
-15
lines changed

yt_dlp/extractor/ard.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from .common import InfoExtractor
55
from ..utils import (
66
OnDemandPagedList,
7+
bug_reports_message,
78
determine_ext,
89
int_or_none,
910
join_nonempty,
@@ -233,7 +234,7 @@ class ARDBetaMediathekIE(InfoExtractor):
233234
(?:(?:beta|www)\.)?ardmediathek\.de/
234235
(?:[^/]+/)?
235236
(?:player|live|video)/
236-
(?:(?P<display_id>[^?#]+)/)?
237+
(?:[^?#]+/)?
237238
(?P<id>[a-zA-Z0-9]+)
238239
/?(?:[?#]|$)'''
239240
_GEO_COUNTRIES = ['DE']
@@ -242,8 +243,8 @@ class ARDBetaMediathekIE(InfoExtractor):
242243
'url': 'https://www.ardmediathek.de/video/filme-im-mdr/liebe-auf-vier-pfoten/mdr-fernsehen/Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0',
243244
'md5': 'b6e8ab03f2bcc6e1f9e6cef25fcc03c4',
244245
'info_dict': {
245-
'display_id': 'filme-im-mdr/liebe-auf-vier-pfoten/mdr-fernsehen',
246-
'id': 'Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0',
246+
'display_id': 'Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0',
247+
'id': '12939099',
247248
'title': 'Liebe auf vier Pfoten',
248249
'description': r're:^Claudia Schmitt, Anwältin in Salzburg',
249250
'duration': 5222,
@@ -255,7 +256,7 @@ class ARDBetaMediathekIE(InfoExtractor):
255256
'series': 'Filme im MDR',
256257
'age_limit': 0,
257258
'channel': 'MDR',
258-
'_old_archive_ids': ['ardbetamediathek 12939099'],
259+
'_old_archive_ids': ['ardbetamediathek Y3JpZDovL21kci5kZS9zZW5kdW5nLzI4MjA0MC80MjIwOTEtNDAyNTM0'],
259260
},
260261
}, {
261262
'url': 'https://www.ardmediathek.de/mdr/video/die-robuste-roswita/Y3JpZDovL21kci5kZS9iZWl0cmFnL2Ntcy84MWMxN2MzZC0wMjkxLTRmMzUtODk4ZS0wYzhlOWQxODE2NGI/',
@@ -276,37 +277,37 @@ class ARDBetaMediathekIE(InfoExtractor):
276277
'url': 'https://www.ardmediathek.de/video/tagesschau-oder-tagesschau-20-00-uhr/das-erste/Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll',
277278
'md5': '1e73ded21cb79bac065117e80c81dc88',
278279
'info_dict': {
279-
'id': 'Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll',
280+
'id': '10049223',
280281
'ext': 'mp4',
281282
'title': 'tagesschau, 20:00 Uhr',
282283
'timestamp': 1636398000,
283284
'description': 'md5:39578c7b96c9fe50afdf5674ad985e6b',
284285
'upload_date': '20211108',
285-
'display_id': 'tagesschau-oder-tagesschau-20-00-uhr/das-erste',
286+
'display_id': 'Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll',
286287
'duration': 915,
287288
'episode': 'tagesschau, 20:00 Uhr',
288289
'series': 'tagesschau',
289290
'thumbnail': 'https://api.ardmediathek.de/image-service/images/urn:ard:image:fbb21142783b0a49?w=960&ch=ee69108ae344f678',
290291
'channel': 'ARD-Aktuell',
291-
'_old_archive_ids': ['ardbetamediathek 10049223'],
292+
'_old_archive_ids': ['ardbetamediathek Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhZ2Vzc2NoYXUvZmM4ZDUxMjgtOTE0ZC00Y2MzLTgzNzAtNDZkNGNiZWJkOTll'],
292293
},
293294
}, {
294295
'url': 'https://www.ardmediathek.de/video/7-tage/7-tage-unter-harten-jungs/hr-fernsehen/N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3',
295296
'md5': 'c428b9effff18ff624d4f903bda26315',
296297
'info_dict': {
297-
'id': 'N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3',
298+
'id': '94834686',
298299
'ext': 'mp4',
299300
'duration': 2700,
300301
'episode': '7 Tage ... unter harten Jungs',
301302
'description': 'md5:0f215470dcd2b02f59f4bd10c963f072',
302303
'upload_date': '20231005',
303304
'timestamp': 1696491171,
304-
'display_id': '7-tage/7-tage-unter-harten-jungs/hr-fernsehen',
305+
'display_id': 'N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3',
305306
'series': '7 Tage ...',
306307
'channel': 'HR',
307308
'thumbnail': 'https://api.ardmediathek.de/image-service/images/urn:ard:image:f6e6d5ffac41925c?w=960&ch=fa32ba69bc87989a',
308309
'title': '7 Tage ... unter harten Jungs',
309-
'_old_archive_ids': ['ardbetamediathek 94834686'],
310+
'_old_archive_ids': ['ardbetamediathek N2I2YmM5MzgtNWFlOS00ZGFlLTg2NzMtYzNjM2JlNjk4MDg3'],
310311
},
311312
}, {
312313
'url': 'https://beta.ardmediathek.de/ard/video/Y3JpZDovL2Rhc2Vyc3RlLmRlL3RhdG9ydC9mYmM4NGM1NC0xNzU4LTRmZGYtYWFhZS0wYzcyZTIxNGEyMDE',
@@ -357,14 +358,25 @@ def _extract_episode_info(self, title):
357358
}), get_all=False)
358359

359360
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)
361362

362363
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={
364365
'embedded': 'false',
365366
'mcV6': 'true',
366367
})
367368

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+
368380
player_data = traverse_obj(
369381
page_data, ('widgets', lambda _, v: v['type'] in ('player_ondemand', 'player_live'), {dict}), get_all=False)
370382
is_live = player_data.get('type') == 'player_live'
@@ -419,8 +431,6 @@ def _real_extract(self, url):
419431
})
420432

421433
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-
424434
return {
425435
'id': video_id,
426436
'display_id': display_id,
@@ -438,7 +448,7 @@ def _real_extract(self, url):
438448
'channel': 'clipSourceName',
439449
})),
440450
**self._extract_episode_info(page_data.get('title')),
441-
'_old_archive_ids': [make_archive_id(ARDBetaMediathekIE, old_id)],
451+
'_old_archive_ids': archive_ids,
442452
}
443453

444454

0 commit comments

Comments
 (0)