yt-dlp 2026.1.5.233118.dev0__py3-none-any.whl → 2026.1.16.233125.dev0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15575,7 +15575,7 @@ class ZDFChannelIE(ZDFBaseIE):
15575
15575
  class ZDFIE(ZDFBaseIE):
15576
15576
  _module = 'yt_dlp.extractor.zdf'
15577
15577
  IE_NAME = 'zdf'
15578
- _VALID_URL = ['https?://(?:www\\.)?zdf\\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)', 'https?://(?:www\\.)?zdf\\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\\.html']
15578
+ _VALID_URL = ['https?://(?:www\\.)?zdf\\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)', 'https?://(?:www\\.)?zdf\\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\\.html', 'https?://(?:www\\.)?(?:zdfheute|logo)\\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\\.html']
15579
15579
  _RETURN_TYPE = 'video'
15580
15580
 
15581
15581
 
@@ -2,6 +2,7 @@ import base64
2
2
  import binascii
3
3
  import functools
4
4
  import re
5
+ import urllib.parse
5
6
 
6
7
  from .common import InfoExtractor
7
8
  from ..dependencies import Cryptodome
@@ -36,7 +37,7 @@ class TarangPlusVideoIE(TarangPlusBaseIE):
36
37
  'ext': 'mp4',
37
38
  'title': 'Khitpit Ep-10',
38
39
  'description': 'md5:a45b805cb628e15c853d78b0406eab48',
39
- 'thumbnail': r're:https?://.*\.jpg',
40
+ 'thumbnail': r're:https?://.+/.+\.jpg',
40
41
  'duration': 756.0,
41
42
  'timestamp': 1740355200,
42
43
  'upload_date': '20250224',
@@ -52,13 +53,30 @@ class TarangPlusVideoIE(TarangPlusBaseIE):
52
53
  'ext': 'mp4',
53
54
  'title': 'Bada Bohu | Ep -233',
54
55
  'description': 'md5:e6b8e7edc9e60b92c1b390f8789ecd69',
55
- 'thumbnail': r're:https?://.*\.jpg',
56
+ 'thumbnail': r're:https?://.+/.+\.jpg',
56
57
  'duration': 1392.0,
57
58
  'timestamp': 1745539200,
58
59
  'upload_date': '20250425',
59
60
  'media_type': 'episode',
60
61
  'categories': ['Prime'],
61
62
  },
63
+ }, {
64
+ # Decrypted m3u8 URL has trailing control characters that need to be stripped
65
+ 'url': 'https://tarangplus.in/tarangaplus-originals/ichha/ichha-teaser-1',
66
+ 'md5': '16ee43fe21ad8b6e652ec65eba38a64e',
67
+ 'info_dict': {
68
+ 'id': '5f0f252d3326af0720000342',
69
+ 'ext': 'mp4',
70
+ 'display_id': 'ichha-teaser-1',
71
+ 'title': 'Ichha Teaser',
72
+ 'description': 'md5:c724b0b0669a2cefdada3711cec792e6',
73
+ 'media_type': 'episode',
74
+ 'duration': 21.0,
75
+ 'thumbnail': r're:https?://.+/.+\.jpg',
76
+ 'categories': ['Originals'],
77
+ 'timestamp': 1758153600,
78
+ 'upload_date': '20250918',
79
+ },
62
80
  }, {
63
81
  'url': 'https://tarangplus.in/short/ai-maa/ai-maa',
64
82
  'only_matching': True,
@@ -100,7 +118,8 @@ class TarangPlusVideoIE(TarangPlusBaseIE):
100
118
  m.group('k'): m.group('v')
101
119
  for m in re.finditer(r'(?:^|\|)(?P<k>[a-z_]+)=(?P<v>(?:(?!\|[a-z_]+=).)+)', attrs)
102
120
  }
103
- m3u8_url = self.decrypt(encrypted_data, metadata['key'])
121
+ m3u8_url = urllib.parse.unquote(
122
+ self.decrypt(encrypted_data, metadata['key'])).rstrip('\x0e\x0f')
104
123
 
105
124
  return {
106
125
  'id': display_id, # Fallback
yt_dlp/extractor/zdf.py CHANGED
@@ -127,6 +127,7 @@ class ZDFBaseIE(InfoExtractor):
127
127
  **parse_codecs(quality.get('mimeCodec')),
128
128
  'height': height,
129
129
  'width': width,
130
+ 'filesize': int_or_none(variant.get('filesize')),
130
131
  'format_id': join_nonempty('http', stream.get('type')),
131
132
  'tbr': int_or_none(self._search_regex(r'_(\d+)k_', format_url, 'tbr', default=None)),
132
133
  }]
@@ -193,8 +194,10 @@ class ZDFBaseIE(InfoExtractor):
193
194
  class ZDFIE(ZDFBaseIE):
194
195
  _VALID_URL = [
195
196
  r'https?://(?:www\.)?zdf\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)',
196
- # /nachrichten/ sub-site URLs and legacy redirects from before the redesign in 2025-03
197
+ # Legacy redirects from before the redesign in 2025-03 or from before sister sites moved to their own domains
197
198
  r'https?://(?:www\.)?zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.html',
199
+ # Sister sites
200
+ r'https?://(?:www\.)?(?:zdfheute|logo)\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.html',
198
201
  ]
199
202
  IE_NAME = 'zdf'
200
203
  _TESTS = [{
@@ -206,7 +209,7 @@ class ZDFIE(ZDFBaseIE):
206
209
  'title': 'Sylt - Deutschlands edles Nordlicht',
207
210
  'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
208
211
  'duration': 810.0,
209
- 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
212
+ 'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+',
210
213
  'series': 'Sylt - Deutschlands edles Nordlicht',
211
214
  'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
212
215
  'timestamp': 1612462500,
@@ -222,7 +225,7 @@ class ZDFIE(ZDFBaseIE):
222
225
  'title': 'Sylt - Deutschlands edles Nordlicht',
223
226
  'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
224
227
  'duration': 810.0,
225
- 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
228
+ 'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+',
226
229
  'series': 'Sylt - Deutschlands edles Nordlicht',
227
230
  'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
228
231
  'timestamp': 1612462500,
@@ -239,7 +242,7 @@ class ZDFIE(ZDFBaseIE):
239
242
  'title': 'Sylt - Deutschlands edles Nordlicht',
240
243
  'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
241
244
  'duration': 810.0,
242
- 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
245
+ 'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+',
243
246
  'series': 'Sylt - Deutschlands edles Nordlicht',
244
247
  'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
245
248
  'timestamp': 1612462500,
@@ -249,67 +252,66 @@ class ZDFIE(ZDFBaseIE):
249
252
  'params': {'skip_download': True},
250
253
  }, {
251
254
  # Video belongs to a playlist, video URL
252
- 'url': 'https://www.zdf.de/video/dokus/die-magie-der-farben-116/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
253
- 'md5': '1eda17eb40a9ead3046326e10b9c5973',
255
+ # Also: video mirrored from ARD Mediathek
256
+ 'url': 'https://www.zdf.de/video/dokus/collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132/page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102',
257
+ 'md5': '84980c1a0148da6cd94de58333d7e1ee',
254
258
  'info_dict': {
255
- 'id': 'die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
259
+ 'id': 'page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102',
256
260
  'ext': 'mp4',
257
- 'title': 'Von Königspurpur bis Jeansblau',
258
- 'description': 'md5:a89da10c928c6235401066b60a6d5c1a',
259
- 'duration': 2615.0,
260
- 'thumbnail': 'https://www.zdf.de/assets/koenigspurpur-bis-jeansblau-100~original?cb=1741857765971',
261
+ 'title': 'Gelb: Vom hellen Glanz zu finsteren Abgründen',
262
+ 'description': 'md5:9aad4806b4c8ea152ab21e70c9d516be',
263
+ 'duration': 895.0,
264
+ 'thumbnail': r're:https://www\.zdf\.de/assets/image-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102~original\?cb=\d+',
261
265
  'series': 'Die Magie der Farben',
262
- 'series_id': 'die-magie-der-farben-116',
263
- 'season': 'Season 1',
264
- 'season_number': 1,
265
- 'episode': 'Episode 2',
266
- 'episode_number': 2,
267
- 'timestamp': 1445797800,
268
- 'upload_date': '20151025',
269
- '_old_archive_ids': ['zdf 151025_magie_farben2_tex'],
266
+ 'series_id': 'collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132',
267
+ 'season': 'Season 2023',
268
+ 'season_number': 2023,
269
+ 'episode': 'Episode 5',
270
+ 'episode_number': 5,
271
+ 'timestamp': 1690902120,
272
+ 'upload_date': '20230801',
273
+ '_old_archive_ids': ['zdf video_ard_dXJuOmFyZDpwdWJsaWNhdGlvbjo0YTYyOTJjM2Q0ZThlNmY1'],
270
274
  },
271
275
  }, {
272
276
  # Video belongs to a playlist, play URL
273
- 'url': 'https://www.zdf.de/play/dokus/die-magie-der-farben-116/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
274
- 'md5': '1eda17eb40a9ead3046326e10b9c5973',
277
+ 'url': 'https://www.zdf.de/play/dokus/collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132/page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102',
275
278
  'info_dict': {
276
- 'id': 'die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
279
+ 'id': 'page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102',
277
280
  'ext': 'mp4',
278
- 'title': 'Von Königspurpur bis Jeansblau',
279
- 'description': 'md5:a89da10c928c6235401066b60a6d5c1a',
280
- 'duration': 2615.0,
281
- 'thumbnail': 'https://www.zdf.de/assets/koenigspurpur-bis-jeansblau-100~original?cb=1741857765971',
281
+ 'title': 'Gelb: Vom hellen Glanz zu finsteren Abgründen',
282
+ 'description': 'md5:9aad4806b4c8ea152ab21e70c9d516be',
283
+ 'duration': 895.0,
284
+ 'thumbnail': r're:https://www\.zdf\.de/assets/image-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102~original\?cb=\d+',
282
285
  'series': 'Die Magie der Farben',
283
- 'series_id': 'die-magie-der-farben-116',
284
- 'season': 'Season 1',
285
- 'season_number': 1,
286
- 'episode': 'Episode 2',
287
- 'episode_number': 2,
288
- 'timestamp': 1445797800,
289
- 'upload_date': '20151025',
290
- '_old_archive_ids': ['zdf 151025_magie_farben2_tex'],
286
+ 'series_id': 'collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132',
287
+ 'season': 'Season 2023',
288
+ 'season_number': 2023,
289
+ 'episode': 'Episode 5',
290
+ 'episode_number': 5,
291
+ 'timestamp': 1690902120,
292
+ 'upload_date': '20230801',
293
+ '_old_archive_ids': ['zdf video_ard_dXJuOmFyZDpwdWJsaWNhdGlvbjo0YTYyOTJjM2Q0ZThlNmY1'],
291
294
  },
292
295
  'params': {'skip_download': True},
293
296
  }, {
294
297
  # Video belongs to a playlist, legacy URL before website redesign in 2025-03
295
- 'url': 'https://www.zdf.de/dokumentation/terra-x/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100.html',
296
- 'md5': '1eda17eb40a9ead3046326e10b9c5973',
298
+ 'url': 'https://www.zdf.de/dokus/collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132/page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102.html',
297
299
  'info_dict': {
298
- 'id': 'die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
300
+ 'id': 'page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102',
299
301
  'ext': 'mp4',
300
- 'title': 'Von Königspurpur bis Jeansblau',
301
- 'description': 'md5:a89da10c928c6235401066b60a6d5c1a',
302
- 'duration': 2615.0,
303
- 'thumbnail': 'https://www.zdf.de/assets/koenigspurpur-bis-jeansblau-100~original?cb=1741857765971',
302
+ 'title': 'Gelb: Vom hellen Glanz zu finsteren Abgründen',
303
+ 'description': 'md5:9aad4806b4c8ea152ab21e70c9d516be',
304
+ 'duration': 895.0,
305
+ 'thumbnail': r're:https://www\.zdf\.de/assets/image-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102~original\?cb=\d+',
304
306
  'series': 'Die Magie der Farben',
305
- 'series_id': 'die-magie-der-farben-116',
306
- 'season': 'Season 1',
307
- 'season_number': 1,
308
- 'episode': 'Episode 2',
309
- 'episode_number': 2,
310
- 'timestamp': 1445797800,
311
- 'upload_date': '20151025',
312
- '_old_archive_ids': ['zdf 151025_magie_farben2_tex'],
307
+ 'series_id': 'collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132',
308
+ 'season': 'Season 2023',
309
+ 'season_number': 2023,
310
+ 'episode': 'Episode 5',
311
+ 'episode_number': 5,
312
+ 'timestamp': 1690902120,
313
+ 'upload_date': '20230801',
314
+ '_old_archive_ids': ['zdf video_ard_dXJuOmFyZDpwdWJsaWNhdGlvbjo0YTYyOTJjM2Q0ZThlNmY1'],
313
315
  },
314
316
  'params': {'skip_download': True},
315
317
  }, {
@@ -336,24 +338,9 @@ class ZDFIE(ZDFBaseIE):
336
338
  # Videos with sign language variants must not have a 'dgs' suffix on their old archive IDs.
337
339
  '_old_archive_ids': ['zdf 211219_sendung_hjo'],
338
340
  },
339
- }, {
340
- # Video that requires fallback extraction
341
- 'url': 'https://www.zdf.de/nachrichten/politik/deutschland/koalitionsverhandlungen-spd-cdu-csu-dobrindt-100.html',
342
- 'md5': 'c3a78514dd993a5781aa3afe50db51e2',
343
- 'info_dict': {
344
- 'id': 'koalitionsverhandlungen-spd-cdu-csu-dobrindt-100',
345
- 'ext': 'mp4',
346
- 'title': 'Dobrindt schließt Steuererhöhungen aus',
347
- 'description': 'md5:9a117646d7b8df6bc902eb543a9c9023',
348
- 'duration': 325,
349
- 'thumbnail': 'https://www.zdfheute.de/assets/dobrindt-csu-berlin-direkt-100~1920x1080?cb=1743357653736',
350
- 'timestamp': 1743374520,
351
- 'upload_date': '20250330',
352
- '_old_archive_ids': ['zdf 250330_clip_2_bdi'],
353
- },
354
341
  }, {
355
342
  # FUNK video (hosted on a different CDN, has atypical PTMD and HLS files)
356
- 'url': 'https://www.zdf.de/funk/druck-11790/funk-alles-ist-verzaubert-102.html',
343
+ 'url': 'https://www.zdf.de/video/serien/funk-collection-funk-11790-1596/funk-alles-ist-verzaubert-102',
357
344
  'md5': '57af4423db0455a3975d2dc4578536bc',
358
345
  'info_dict': {
359
346
  'id': 'funk-alles-ist-verzaubert-102',
@@ -361,56 +348,93 @@ class ZDFIE(ZDFBaseIE):
361
348
  'title': 'Alles ist verzaubert',
362
349
  'description': 'Die Neue an der Schule verdreht Ismail den Kopf.',
363
350
  'duration': 1278.0,
364
- 'thumbnail': 'https://www.zdf.de/assets/teaser-funk-alles-ist-verzaubert-102~original?cb=1663848412907',
351
+ 'thumbnail': r're:https://www\.zdf\.de/assets/teaser-funk-alles-ist-verzaubert-102~original\?cb=\d+',
365
352
  'series': 'DRUCK',
366
- 'series_id': 'funk-collection-funk-11790-1590',
367
- 'season': 'Season 7',
368
- 'season_number': 7,
369
- 'episode': 'Episode 1',
370
- 'episode_number': 1,
353
+ 'series_id': 'funk-collection-funk-11790-1596',
354
+ 'season': 'Season 2021',
355
+ 'season_number': 2021,
356
+ 'episode': 'Episode 50',
357
+ 'episode_number': 50,
371
358
  'timestamp': 1635520560,
372
359
  'upload_date': '20211029',
373
360
  '_old_archive_ids': ['zdf video_funk_1770473'],
374
361
  },
375
362
  }, {
376
- 'url': 'https://www.zdf.de/serien/soko-stuttgart/das-geld-anderer-leute-100.html',
363
+ # zdfheute video, also available on zdf.de
364
+ 'url': 'https://www.zdfheute.de/video/heute-journal/heute-journal-vom-19-dezember-2025-100.html',
365
+ 'md5': '47af8c2cfa30abf74501170f62754c63',
377
366
  'info_dict': {
378
- 'id': 'das-geld-anderer-leute-100',
367
+ 'id': 'heute-journal-vom-19-dezember-2025-100',
379
368
  'ext': 'mp4',
380
- 'title': 'Das Geld anderer Leute',
381
- 'description': 'md5:cb6f660850dc5eb7d1ab776ea094959d',
382
- 'duration': 2581.0,
383
- 'thumbnail': 'https://epg-image.zdf.de/fotobase-webdelivery/images/e2d7e55a-09f0-424e-ac73-6cac4dd65f35?layout=1920x1080',
384
- 'series': 'SOKO Stuttgart',
385
- 'series_id': 'soko-stuttgart-104',
386
- 'season': 'Season 11',
387
- 'season_number': 11,
388
- 'episode': 'Episode 10',
389
- 'episode_number': 10,
390
- 'timestamp': 1728983700,
391
- 'upload_date': '20241015',
392
- '_old_archive_ids': ['zdf 191205_1800_sendung_sok8'],
369
+ 'title': 'heute journal vom 19. Dezember 2025',
370
+ 'description': 'md5:fd0dfbce0783486db839ff9140a8074b',
371
+ 'duration': 1780.0,
372
+ 'thumbnail': 'https://epg-image.zdf.de/fotobase-webdelivery/images/273e5545-16e7-4ca3-898e-52fe9e06d964?layout=2400x1350',
373
+ 'chapters': 'count:10',
374
+ 'series': 'heute journal',
375
+ 'series_id': 'heute-journal-104',
376
+ 'season': 'Season 2025',
377
+ 'season_number': 2025,
378
+ 'episode': 'Episode 365',
379
+ 'episode_number': 365,
380
+ 'timestamp': 1766178000,
381
+ 'upload_date': '20251219',
382
+ '_old_archive_ids': ['zdf 251219_2200_sendung_hjo'],
393
383
  },
394
384
  }, {
395
- 'url': 'https://www.zdf.de/serien/northern-lights/begegnung-auf-der-bruecke-100.html',
385
+ # zdfheute video, not available on zdf.de (uses the fallback extraction path)
386
+ 'url': 'https://www.zdf.de/nachrichten/politik/deutschland/koalitionsverhandlungen-spd-cdu-csu-dobrindt-100.html',
387
+ 'md5': 'c3a78514dd993a5781aa3afe50db51e2',
396
388
  'info_dict': {
397
- 'id': 'begegnung-auf-der-bruecke-100',
398
- 'ext': 'webm',
399
- 'title': 'Begegnung auf der Brücke',
400
- 'description': 'md5:e53a555da87447f7f1207f10353f8e45',
401
- 'duration': 3083.0,
402
- 'thumbnail': 'https://epg-image.zdf.de/fotobase-webdelivery/images/c5ff1d1f-f5c8-4468-86ac-1b2f1dbecc76?layout=1920x1080',
403
- 'series': 'Northern Lights',
404
- 'series_id': 'northern-lights-100',
405
- 'season': 'Season 1',
406
- 'season_number': 1,
407
- 'episode': 'Episode 1',
408
- 'episode_number': 1,
409
- 'timestamp': 1738546500,
410
- 'upload_date': '20250203',
411
- '_old_archive_ids': ['zdf 240319_2310_sendung_not'],
389
+ 'id': 'koalitionsverhandlungen-spd-cdu-csu-dobrindt-100',
390
+ 'ext': 'mp4',
391
+ 'title': 'Dobrindt schließt Steuererhöhungen aus',
392
+ 'description': 'md5:9a117646d7b8df6bc902eb543a9c9023',
393
+ 'duration': 325,
394
+ 'thumbnail': r're:https://www\.zdfheute\.de/assets/dobrindt-csu-berlin-direkt-100~1920x1080\?cb=\d+',
395
+ 'timestamp': 1743374520,
396
+ 'upload_date': '20250330',
397
+ '_old_archive_ids': ['zdf 250330_clip_2_bdi'],
398
+ },
399
+ }, {
400
+ # logo! video, also available on zdf.de
401
+ 'url': 'https://www.logo.de/logo-vom-freitag-19-dezember-2025-102.html',
402
+ 'md5': 'cfb1a0988b1249f052a437a55851134b',
403
+ 'info_dict': {
404
+ 'id': 'logo-vom-freitag-19-dezember-2025-102',
405
+ 'ext': 'mp4',
406
+ 'title': 'logo! vom Freitag, 19. Dezember 2025',
407
+ 'description': 'md5:971428cb563e924c153580f23870c613',
408
+ 'duration': 490.0,
409
+ 'thumbnail': r're:https://www\.zdf\.de/assets/iran-rote-erde-sendung-19-dezember-2025-100~original\?cb=\d+',
410
+ 'chapters': 'count:7',
411
+ 'series': 'logo!',
412
+ 'series_id': 'logo-154',
413
+ 'season': 'Season 2025',
414
+ 'season_number': 2025,
415
+ 'episode': 'Episode 382',
416
+ 'episode_number': 382,
417
+ 'timestamp': 1766168700,
418
+ 'upload_date': '20251219',
419
+ '_old_archive_ids': ['zdf 251219_1925_sendung_log'],
420
+ },
421
+ }, {
422
+ # logo! video, not available on zdf.de (uses the fallback extraction path)
423
+ 'url': 'https://www.logo.de/kinderreporter-vivaan-trifft-alina-grijseels-100.html',
424
+ 'md5': '094cea026babb67aa25fd0108400bc12',
425
+ 'info_dict': {
426
+ 'id': 'kinderreporter-vivaan-trifft-alina-grijseels-100',
427
+ 'ext': 'mp4',
428
+ 'title': 'Vivaan trifft Handballerin Alina Grijseels',
429
+ 'description': 'md5:9572e7f4340dda823ea4091a76624da6',
430
+ 'duration': 166.0,
431
+ 'thumbnail': r're:https://www\.zdf\.de/assets/vivaan-alina-grijseels-100~original\?cb=\d+',
432
+ 'series': 'logo!',
433
+ 'series_id': 'logo-154',
434
+ 'timestamp': 1766236320,
435
+ 'upload_date': '20251220',
436
+ '_old_archive_ids': ['zdf 251219_kr_alina_grijseels_neu_log'],
412
437
  },
413
- 'params': {'skip_download': 'geo-restricted http format'},
414
438
  }, {
415
439
  # Same as https://www.phoenix.de/sendungen/ereignisse/corona-nachgehakt/wohin-fuehrt-der-protest-in-der-pandemie-a-2050630.html
416
440
  'url': 'https://www.zdf.de/politik/phoenix-sendungen/wohin-fuehrt-der-protest-in-der-pandemie-100.html',
@@ -617,7 +641,7 @@ class ZDFChannelIE(ZDFBaseIE):
617
641
  'title': 'Sylt - Deutschlands edles Nordlicht',
618
642
  'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
619
643
  'duration': 810.0,
620
- 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
644
+ 'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+',
621
645
  'series': 'Sylt - Deutschlands edles Nordlicht',
622
646
  'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
623
647
  'timestamp': 1612462500,
@@ -634,38 +658,24 @@ class ZDFChannelIE(ZDFBaseIE):
634
658
  },
635
659
  'playlist_mincount': 2,
636
660
  }, {
637
- 'url': 'https://www.zdf.de/serien/taunuskrimi/',
638
- 'info_dict': {
639
- 'id': 'taunuskrimi-100',
640
- 'title': 'Taunuskrimi',
641
- 'description': 'md5:ee7204e9c625c3b611d1274f9d0e3070',
642
- },
643
- 'playlist_mincount': 8,
644
- }, {
645
- 'url': 'https://www.zdf.de/serien/taunuskrimi/?staffel=1',
646
- 'info_dict': {
647
- 'id': 'taunuskrimi-100-s1',
648
- 'title': 'Taunuskrimi - Season 1',
649
- 'description': 'md5:ee7204e9c625c3b611d1274f9d0e3070',
650
- },
651
- 'playlist_count': 7,
652
- }, {
661
+ # All seasons of playlist
653
662
  'url': 'https://www.zdf.de/magazine/heute-journal-104',
654
663
  'info_dict': {
655
664
  'id': 'heute-journal-104',
656
665
  'title': 'heute journal',
657
666
  'description': 'md5:6edad39189abf8431795d3d6d7f986b3',
658
667
  },
659
- 'playlist_mincount': 500,
668
+ 'playlist_mincount': 366,
660
669
  }, {
661
- 'url': 'https://www.zdf.de/magazine/heute-journal-104?staffel=2024',
670
+ # Only selected season
671
+ 'url': 'https://www.zdf.de/magazine/heute-journal-104?staffel=2025',
662
672
  'info_dict': {
663
- 'id': 'heute-journal-104-s2024',
664
- 'title': 'heute journal - Season 2024',
673
+ 'id': 'heute-journal-104-s2025',
674
+ 'title': 'heute journal - Season 2025',
665
675
  'description': 'md5:6edad39189abf8431795d3d6d7f986b3',
666
676
  },
667
- 'playlist_count': 242,
668
- 'skip': 'Video count changes daily, needs support for playlist_maxcount',
677
+ 'playlist_mincount': 1,
678
+ 'playlist_maxcount': 365,
669
679
  }]
670
680
 
671
681
  _PAGE_SIZE = 24
@@ -62,10 +62,10 @@ def parse_iter(parsed: typing.Any, /, *, revivers: dict[str, collections.abc.Cal
62
62
  if isinstance(source, tuple):
63
63
  name, source, reviver = source
64
64
  try:
65
- resolved[source] = target[index] = reviver(target[index])
65
+ target[index] = reviver(target[index])
66
66
  except Exception as error:
67
67
  yield TypeError(f'failed to parse {source} as {name!r}: {error}')
68
- resolved[source] = target[index] = None
68
+ target[index] = None
69
69
  continue
70
70
 
71
71
  if source in resolved:
yt_dlp/version.py CHANGED
@@ -1,8 +1,8 @@
1
1
  # Autogenerated by devscripts/update-version.py
2
2
 
3
- __version__ = '2026.01.05.233118'
3
+ __version__ = '2026.01.16.233125'
4
4
 
5
- RELEASE_GIT_HEAD = 'cec1f1df792fe521fff2d5ca54b5c70094b3d96a'
5
+ RELEASE_GIT_HEAD = 'ede54330fb38866936c63ebb96c490a2d4b1b58c'
6
6
 
7
7
  VARIANT = 'pip'
8
8
 
@@ -12,4 +12,4 @@ CHANNEL = 'nightly'
12
12
 
13
13
  ORIGIN = 'yt-dlp/yt-dlp-nightly-builds'
14
14
 
15
- _pkg_version = '2026.01.05.233118dev'
15
+ _pkg_version = '2026.01.16.233125dev'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yt-dlp
3
- Version: 2026.1.5.233118.dev0
3
+ Version: 2026.1.16.233125.dev0
4
4
  Summary: A feature-rich command-line audio/video downloader
5
5
  Project-URL: Documentation, https://github.com/yt-dlp/yt-dlp#readme
6
6
  Project-URL: Repository, https://github.com/yt-dlp/yt-dlp
@@ -11,7 +11,7 @@ yt_dlp/options.py,sha256=72Qipr6jhFUO4gUPTIJsqYeHujnZi1L1GYx1Vn5qtiM,100390
11
11
  yt_dlp/plugins.py,sha256=EGmR0ydaahNspGrgszTNX4-YjHe93WOOhcw1gf6PZSs,8215
12
12
  yt_dlp/socks.py,sha256=oAuAfWM6jxI8A5hHDLEKq2U2-k9NyMB_z6nrKzNE9fg,8936
13
13
  yt_dlp/update.py,sha256=sY7gNFBQorzs7sEjRrqL5QOsTBNmGGa_FnpTtbxY1vA,25280
14
- yt_dlp/version.py,sha256=4NJ3NMb-wiDuXeosnluVA9otIUqM_ZHr4uz7rSYoAc4,360
14
+ yt_dlp/version.py,sha256=OM69eimkmV_KmCEishvutDqr6EvYYOicbF44jUsmmNg,360
15
15
  yt_dlp/webvtt.py,sha256=ONkXaaNCZcX8pQhJn3iwIKyaQ34BtVDrMEdG6wRNZwM,11451
16
16
  yt_dlp/__pyinstaller/__init__.py,sha256=-c4Zo8nQGKAm8wc_LDscxMtK7zr_YhZwRnC9CMruUBE,72
17
17
  yt_dlp/__pyinstaller/hook-yt_dlp.py,sha256=5Rd0zV2pDskjY1KtT0wsjxv4hStx67sLCjUexsFvFus,1339
@@ -461,7 +461,7 @@ yt_dlp/extractor/la7.py,sha256=GShDLu1N0rS1bY4uIiUkznThvn7gNiwtSgmh7Rs7t08,9435
461
461
  yt_dlp/extractor/laracasts.py,sha256=PzTqAbHXiUqog-mpp2qR_rpKa-sZel4mLyzWTPkbDuc,4587
462
462
  yt_dlp/extractor/lastfm.py,sha256=OpmE-Y-2rcav2r2xaDQzX_EJiltmbbe6fO9VzkLqNWQ,4748
463
463
  yt_dlp/extractor/laxarxames.py,sha256=-YyL-5y4t2L9ptTSLXhvK-SJwvXGqv5l1HfT129zF0c,2773
464
- yt_dlp/extractor/lazy_extractors.py,sha256=qZAmL5fp4joCE-i_78P3LTQlUsvQ4obvaNbINpsadcg,814309
464
+ yt_dlp/extractor/lazy_extractors.py,sha256=tpI7xsGh5KntEGrpzi5lyj80vR5l2CTS3FwArH8udGc,814391
465
465
  yt_dlp/extractor/lbry.py,sha256=gC9jRRo8wSXc1-6somhW13brAtmWGlJ5_Q0NMhZpKwk,18078
466
466
  yt_dlp/extractor/lci.py,sha256=_0XuoITIt_QFA-6eBNpDXZZfouwUWfcdHQlpAOuiLEs,2131
467
467
  yt_dlp/extractor/lcp.py,sha256=edMA8L-eJZLquDvHcSY4oFWI0C8yGgjqW1tmhhLMJ5U,2279
@@ -848,7 +848,7 @@ yt_dlp/extractor/syvdk.py,sha256=odhjQTYIDxWj2lS9Yr_MyFGfWmstxCeOSI7xUrYavs8,124
848
848
  yt_dlp/extractor/sztvhu.py,sha256=2De4mY-V2E4CZQx8HzxnknL0f4_RIi5CTKdcvr4LV78,1616
849
849
  yt_dlp/extractor/tagesschau.py,sha256=D6bXCOYeuXu6BW5hP8Yq5SzWVxMiGXcTennsszi7sZg,6189
850
850
  yt_dlp/extractor/taptap.py,sha256=cI9Y1dSb_glOJlI6S_ttcXHsjwAC7XOPrSnzxGxulz8,10513
851
- yt_dlp/extractor/tarangplus.py,sha256=r6MvrTa9FyD8Ti1_6IcP80KVL1IzDsT3ESpEWFRYZkk,8194
851
+ yt_dlp/extractor/tarangplus.py,sha256=66U7huxpnbHHqDs5fz3xiZ41aUeYWTqPkDTEw5gLJmA,8993
852
852
  yt_dlp/extractor/tass.py,sha256=a5-1HR_xouhR8MEhNxMtzns_bR2LeP-6o4vOohmxIm8,1944
853
853
  yt_dlp/extractor/tbs.py,sha256=QAjno1ds3lzjv8RTrCKGgWqxCsOrxfQ4I6WTlnMCWbc,7851
854
854
  yt_dlp/extractor/tbsjp.py,sha256=FSSpDtu7QkK8c4TwSz5rYVWBD_L4SKZjQRtN8zs4LZw,7536
@@ -1051,7 +1051,7 @@ yt_dlp/extractor/youporn.py,sha256=Ijr1IR9B2x9tgSAcir5VgILiegTjoObqgbg_4HShbFQ,2
1051
1051
  yt_dlp/extractor/zaiko.py,sha256=7m4J60ApM7bxDCCr1_D0vd9HKGnmcvT6WORwhF0bp78,6302
1052
1052
  yt_dlp/extractor/zapiks.py,sha256=tBXg5sY1FYWX1_zFIKT3vfSKbBt_0IFvrdMqTdSs5C4,4048
1053
1053
  yt_dlp/extractor/zattoo.py,sha256=appLwx81P87OOD2ucahw3eY4s75VzPcho6TrsUQ_mUw,29267
1054
- yt_dlp/extractor/zdf.py,sha256=Qf85N7Lgtnxvx_DnmaQMKqVYcBAmNfcn1dNrH-kOYfs,34851
1054
+ yt_dlp/extractor/zdf.py,sha256=_xg7M-o5ZQP4ov_neojOtqsq7YjlUtuxDyfNcCM2DIA,36250
1055
1055
  yt_dlp/extractor/zee5.py,sha256=5ulXZGYqHW0UoX7bVxHMzlZ1hrmgMCfAgRKv-3-bdmc,11983
1056
1056
  yt_dlp/extractor/zeenews.py,sha256=rxH5eNrCMBXkm0HM2ZG5zF5N8HPFUHFZ45J729EFjZw,3219
1057
1057
  yt_dlp/extractor/zenporn.py,sha256=WnkN_cSf5CgxLGgmTvFUeywNTTNJuLblBwkdZYi2eNc,4807
@@ -1123,14 +1123,14 @@ yt_dlp/utils/networking.py,sha256=OFupeRqIwaw5_GYWRYums5kpy--IyhE7Rt5JkZeFLIM,86
1123
1123
  yt_dlp/utils/progress.py,sha256=t9kVvJ0oWuEqRzo9fdFbIhHUBtO_8mg348QwZ1faqLo,3261
1124
1124
  yt_dlp/utils/traversal.py,sha256=64E3RcZ56iSX50RI_HbKdDNftkETMLBaEPX791_b7yQ,18265
1125
1125
  yt_dlp/utils/jslib/__init__.py,sha256=CbdJiRA7Eh5PnjF2V4lDTcg0J0XjBMaaq0H4pCfq9Tk,87
1126
- yt_dlp/utils/jslib/devalue.py,sha256=7DCGK_zUN0ZeV5hwPT06zaRMUxX_hyUyFWqs79rxw24,5621
1127
- yt_dlp-2026.1.5.233118.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
1128
- yt_dlp-2026.1.5.233118.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=AkKlzo4SvuJnf_2b22c63Fd3sBXHCVVWvgC5UwT3oko,165351
1129
- yt_dlp-2026.1.5.233118.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=v2WQvWvk4qKpp2-97z2ULb5Msj5dgzU6nMkS-FwSmbM,51488
1130
- yt_dlp-2026.1.5.233118.dev0.data/data/share/man/man1/yt-dlp.1,sha256=gxajtKE1RbgCtRJ604aAZjRwwHOuELlT1eUbgolpHF4,159920
1131
- yt_dlp-2026.1.5.233118.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
1132
- yt_dlp-2026.1.5.233118.dev0.dist-info/METADATA,sha256=QImdLBccSkpWVaij5Q-yZb2rNAnrFfUry5xNrxhqcCM,180716
1133
- yt_dlp-2026.1.5.233118.dev0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1134
- yt_dlp-2026.1.5.233118.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
1135
- yt_dlp-2026.1.5.233118.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
1136
- yt_dlp-2026.1.5.233118.dev0.dist-info/RECORD,,
1126
+ yt_dlp/utils/jslib/devalue.py,sha256=UtcQ1IEzt6HWBjB9Z_6rJMb3y2pFrbHXDNu1rrxXF1c,5583
1127
+ yt_dlp-2026.1.16.233125.dev0.data/data/share/bash-completion/completions/yt-dlp,sha256=b0pb9GLseKD27CjnLE6LlhVxhfmQjmyqV6r_CRbd6ko,5989
1128
+ yt_dlp-2026.1.16.233125.dev0.data/data/share/doc/yt_dlp/README.txt,sha256=AkKlzo4SvuJnf_2b22c63Fd3sBXHCVVWvgC5UwT3oko,165351
1129
+ yt_dlp-2026.1.16.233125.dev0.data/data/share/fish/vendor_completions.d/yt-dlp.fish,sha256=v2WQvWvk4qKpp2-97z2ULb5Msj5dgzU6nMkS-FwSmbM,51488
1130
+ yt_dlp-2026.1.16.233125.dev0.data/data/share/man/man1/yt-dlp.1,sha256=gxajtKE1RbgCtRJ604aAZjRwwHOuELlT1eUbgolpHF4,159920
1131
+ yt_dlp-2026.1.16.233125.dev0.data/data/share/zsh/site-functions/_yt-dlp,sha256=pNhu8tT4ZKrksLRI2mXLqarzGGhnOlm_hkCBVhSxLzg,5985
1132
+ yt_dlp-2026.1.16.233125.dev0.dist-info/METADATA,sha256=4BAjPfF0nVG02LpothdGzf0Ao8yjwiYe-chEdSdOg6E,180717
1133
+ yt_dlp-2026.1.16.233125.dev0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
1134
+ yt_dlp-2026.1.16.233125.dev0.dist-info/entry_points.txt,sha256=vWfetvzYgZIwDfMW6BjCe0Cy4pmTZEXRNzxAkfYlRJA,103
1135
+ yt_dlp-2026.1.16.233125.dev0.dist-info/licenses/LICENSE,sha256=fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM-U6Fw,1211
1136
+ yt_dlp-2026.1.16.233125.dev0.dist-info/RECORD,,