Compare commits

..

No commits in common. "27afb31edc492cb079f9bce9773498d08e568ff3" and "cec1f1df792fe521fff2d5ca54b5c70094b3d96a" have entirely different histories.

2 changed files with 129 additions and 158 deletions

View File

@ -2,7 +2,6 @@ import base64
import binascii import binascii
import functools import functools
import re import re
import urllib.parse
from .common import InfoExtractor from .common import InfoExtractor
from ..dependencies import Cryptodome from ..dependencies import Cryptodome
@ -37,7 +36,7 @@ class TarangPlusVideoIE(TarangPlusBaseIE):
'ext': 'mp4', 'ext': 'mp4',
'title': 'Khitpit Ep-10', 'title': 'Khitpit Ep-10',
'description': 'md5:a45b805cb628e15c853d78b0406eab48', 'description': 'md5:a45b805cb628e15c853d78b0406eab48',
'thumbnail': r're:https?://.+/.+\.jpg', 'thumbnail': r're:https?://.*\.jpg',
'duration': 756.0, 'duration': 756.0,
'timestamp': 1740355200, 'timestamp': 1740355200,
'upload_date': '20250224', 'upload_date': '20250224',
@ -53,30 +52,13 @@ class TarangPlusVideoIE(TarangPlusBaseIE):
'ext': 'mp4', 'ext': 'mp4',
'title': 'Bada Bohu | Ep -233', 'title': 'Bada Bohu | Ep -233',
'description': 'md5:e6b8e7edc9e60b92c1b390f8789ecd69', 'description': 'md5:e6b8e7edc9e60b92c1b390f8789ecd69',
'thumbnail': r're:https?://.+/.+\.jpg', 'thumbnail': r're:https?://.*\.jpg',
'duration': 1392.0, 'duration': 1392.0,
'timestamp': 1745539200, 'timestamp': 1745539200,
'upload_date': '20250425', 'upload_date': '20250425',
'media_type': 'episode', 'media_type': 'episode',
'categories': ['Prime'], 'categories': ['Prime'],
}, },
}, {
# Decrypted m3u8 URL has trailing control characters that need to be stripped
'url': 'https://tarangplus.in/tarangaplus-originals/ichha/ichha-teaser-1',
'md5': '16ee43fe21ad8b6e652ec65eba38a64e',
'info_dict': {
'id': '5f0f252d3326af0720000342',
'ext': 'mp4',
'display_id': 'ichha-teaser-1',
'title': 'Ichha Teaser',
'description': 'md5:c724b0b0669a2cefdada3711cec792e6',
'media_type': 'episode',
'duration': 21.0,
'thumbnail': r're:https?://.+/.+\.jpg',
'categories': ['Originals'],
'timestamp': 1758153600,
'upload_date': '20250918',
},
}, { }, {
'url': 'https://tarangplus.in/short/ai-maa/ai-maa', 'url': 'https://tarangplus.in/short/ai-maa/ai-maa',
'only_matching': True, 'only_matching': True,
@ -118,8 +100,7 @@ class TarangPlusVideoIE(TarangPlusBaseIE):
m.group('k'): m.group('v') m.group('k'): m.group('v')
for m in re.finditer(r'(?:^|\|)(?P<k>[a-z_]+)=(?P<v>(?:(?!\|[a-z_]+=).)+)', attrs) for m in re.finditer(r'(?:^|\|)(?P<k>[a-z_]+)=(?P<v>(?:(?!\|[a-z_]+=).)+)', attrs)
} }
m3u8_url = urllib.parse.unquote( m3u8_url = self.decrypt(encrypted_data, metadata['key'])
self.decrypt(encrypted_data, metadata['key'])).rstrip('\x0e\x0f')
return { return {
'id': display_id, # Fallback 'id': display_id, # Fallback

View File

@ -127,7 +127,6 @@ class ZDFBaseIE(InfoExtractor):
**parse_codecs(quality.get('mimeCodec')), **parse_codecs(quality.get('mimeCodec')),
'height': height, 'height': height,
'width': width, 'width': width,
'filesize': int_or_none(variant.get('filesize')),
'format_id': join_nonempty('http', stream.get('type')), 'format_id': join_nonempty('http', stream.get('type')),
'tbr': int_or_none(self._search_regex(r'_(\d+)k_', format_url, 'tbr', default=None)), 'tbr': int_or_none(self._search_regex(r'_(\d+)k_', format_url, 'tbr', default=None)),
}] }]
@ -194,10 +193,8 @@ class ZDFBaseIE(InfoExtractor):
class ZDFIE(ZDFBaseIE): class ZDFIE(ZDFBaseIE):
_VALID_URL = [ _VALID_URL = [
r'https?://(?:www\.)?zdf\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)', r'https?://(?:www\.)?zdf\.de/(?:video|play)/(?:[^/?#]+/)*(?P<id>[^/?#]+)',
# Legacy redirects from before the redesign in 2025-03 or from before sister sites moved to their own domains # /nachrichten/ sub-site URLs and legacy redirects from before the redesign in 2025-03
r'https?://(?:www\.)?zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.html', r'https?://(?:www\.)?zdf\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.html',
# Sister sites
r'https?://(?:www\.)?(?:zdfheute|logo)\.de/(?:[^/?#]+/)*(?P<id>[^/?#]+)\.html',
] ]
IE_NAME = 'zdf' IE_NAME = 'zdf'
_TESTS = [{ _TESTS = [{
@ -209,7 +206,7 @@ class ZDFIE(ZDFBaseIE):
'title': 'Sylt - Deutschlands edles Nordlicht', 'title': 'Sylt - Deutschlands edles Nordlicht',
'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3', 'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
'duration': 810.0, 'duration': 810.0,
'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
'series': 'Sylt - Deutschlands edles Nordlicht', 'series': 'Sylt - Deutschlands edles Nordlicht',
'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100', 'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
'timestamp': 1612462500, 'timestamp': 1612462500,
@ -225,7 +222,7 @@ class ZDFIE(ZDFBaseIE):
'title': 'Sylt - Deutschlands edles Nordlicht', 'title': 'Sylt - Deutschlands edles Nordlicht',
'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3', 'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
'duration': 810.0, 'duration': 810.0,
'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
'series': 'Sylt - Deutschlands edles Nordlicht', 'series': 'Sylt - Deutschlands edles Nordlicht',
'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100', 'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
'timestamp': 1612462500, 'timestamp': 1612462500,
@ -242,7 +239,7 @@ class ZDFIE(ZDFBaseIE):
'title': 'Sylt - Deutschlands edles Nordlicht', 'title': 'Sylt - Deutschlands edles Nordlicht',
'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3', 'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
'duration': 810.0, 'duration': 810.0,
'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
'series': 'Sylt - Deutschlands edles Nordlicht', 'series': 'Sylt - Deutschlands edles Nordlicht',
'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100', 'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
'timestamp': 1612462500, 'timestamp': 1612462500,
@ -252,66 +249,67 @@ class ZDFIE(ZDFBaseIE):
'params': {'skip_download': True}, 'params': {'skip_download': True},
}, { }, {
# Video belongs to a playlist, video URL # Video belongs to a playlist, video URL
# Also: video mirrored from ARD Mediathek 'url': 'https://www.zdf.de/video/dokus/die-magie-der-farben-116/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
'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', 'md5': '1eda17eb40a9ead3046326e10b9c5973',
'md5': '84980c1a0148da6cd94de58333d7e1ee',
'info_dict': { 'info_dict': {
'id': 'page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102', 'id': 'die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
'ext': 'mp4', 'ext': 'mp4',
'title': 'Gelb: Vom hellen Glanz zu finsteren Abgründen', 'title': 'Von Königspurpur bis Jeansblau',
'description': 'md5:9aad4806b4c8ea152ab21e70c9d516be', 'description': 'md5:a89da10c928c6235401066b60a6d5c1a',
'duration': 895.0, 'duration': 2615.0,
'thumbnail': r're:https://www\.zdf\.de/assets/image-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/koenigspurpur-bis-jeansblau-100~original?cb=1741857765971',
'series': 'Die Magie der Farben', 'series': 'Die Magie der Farben',
'series_id': 'collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132', 'series_id': 'die-magie-der-farben-116',
'season': 'Season 2023', 'season': 'Season 1',
'season_number': 2023, 'season_number': 1,
'episode': 'Episode 5', 'episode': 'Episode 2',
'episode_number': 5, 'episode_number': 2,
'timestamp': 1690902120, 'timestamp': 1445797800,
'upload_date': '20230801', 'upload_date': '20151025',
'_old_archive_ids': ['zdf video_ard_dXJuOmFyZDpwdWJsaWNhdGlvbjo0YTYyOTJjM2Q0ZThlNmY1'], '_old_archive_ids': ['zdf 151025_magie_farben2_tex'],
}, },
}, { }, {
# Video belongs to a playlist, play URL # Video belongs to a playlist, play URL
'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', 'url': 'https://www.zdf.de/play/dokus/die-magie-der-farben-116/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
'md5': '1eda17eb40a9ead3046326e10b9c5973',
'info_dict': { 'info_dict': {
'id': 'page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102', 'id': 'die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
'ext': 'mp4', 'ext': 'mp4',
'title': 'Gelb: Vom hellen Glanz zu finsteren Abgründen', 'title': 'Von Königspurpur bis Jeansblau',
'description': 'md5:9aad4806b4c8ea152ab21e70c9d516be', 'description': 'md5:a89da10c928c6235401066b60a6d5c1a',
'duration': 895.0, 'duration': 2615.0,
'thumbnail': r're:https://www\.zdf\.de/assets/image-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/koenigspurpur-bis-jeansblau-100~original?cb=1741857765971',
'series': 'Die Magie der Farben', 'series': 'Die Magie der Farben',
'series_id': 'collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132', 'series_id': 'die-magie-der-farben-116',
'season': 'Season 2023', 'season': 'Season 1',
'season_number': 2023, 'season_number': 1,
'episode': 'Episode 5', 'episode': 'Episode 2',
'episode_number': 5, 'episode_number': 2,
'timestamp': 1690902120, 'timestamp': 1445797800,
'upload_date': '20230801', 'upload_date': '20151025',
'_old_archive_ids': ['zdf video_ard_dXJuOmFyZDpwdWJsaWNhdGlvbjo0YTYyOTJjM2Q0ZThlNmY1'], '_old_archive_ids': ['zdf 151025_magie_farben2_tex'],
}, },
'params': {'skip_download': True}, 'params': {'skip_download': True},
}, { }, {
# Video belongs to a playlist, legacy URL before website redesign in 2025-03 # Video belongs to a playlist, legacy URL before website redesign in 2025-03
'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', 'url': 'https://www.zdf.de/dokumentation/terra-x/die-magie-der-farben-von-koenigspurpur-und-jeansblau-100.html',
'md5': '1eda17eb40a9ead3046326e10b9c5973',
'info_dict': { 'info_dict': {
'id': 'page-video-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102', 'id': 'die-magie-der-farben-von-koenigspurpur-und-jeansblau-100',
'ext': 'mp4', 'ext': 'mp4',
'title': 'Gelb: Vom hellen Glanz zu finsteren Abgründen', 'title': 'Von Königspurpur bis Jeansblau',
'description': 'md5:9aad4806b4c8ea152ab21e70c9d516be', 'description': 'md5:a89da10c928c6235401066b60a6d5c1a',
'duration': 895.0, 'duration': 2615.0,
'thumbnail': r're:https://www\.zdf\.de/assets/image-ard-gelb-vom-hellen-glanz-zu-finsteren-abgruenden-102~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/koenigspurpur-bis-jeansblau-100~original?cb=1741857765971',
'series': 'Die Magie der Farben', 'series': 'Die Magie der Farben',
'series_id': 'collection-index-page-ard-collection-ard-dxjuomfyzdpzag93ojy2mzhhmmq3mzk2ztq4nda-132', 'series_id': 'die-magie-der-farben-116',
'season': 'Season 2023', 'season': 'Season 1',
'season_number': 2023, 'season_number': 1,
'episode': 'Episode 5', 'episode': 'Episode 2',
'episode_number': 5, 'episode_number': 2,
'timestamp': 1690902120, 'timestamp': 1445797800,
'upload_date': '20230801', 'upload_date': '20151025',
'_old_archive_ids': ['zdf video_ard_dXJuOmFyZDpwdWJsaWNhdGlvbjo0YTYyOTJjM2Q0ZThlNmY1'], '_old_archive_ids': ['zdf 151025_magie_farben2_tex'],
}, },
'params': {'skip_download': True}, 'params': {'skip_download': True},
}, { }, {
@ -339,50 +337,7 @@ class ZDFIE(ZDFBaseIE):
'_old_archive_ids': ['zdf 211219_sendung_hjo'], '_old_archive_ids': ['zdf 211219_sendung_hjo'],
}, },
}, { }, {
# FUNK video (hosted on a different CDN, has atypical PTMD and HLS files) # Video that requires fallback extraction
'url': 'https://www.zdf.de/video/serien/funk-collection-funk-11790-1596/funk-alles-ist-verzaubert-102',
'md5': '57af4423db0455a3975d2dc4578536bc',
'info_dict': {
'id': 'funk-alles-ist-verzaubert-102',
'ext': 'mp4',
'title': 'Alles ist verzaubert',
'description': 'Die Neue an der Schule verdreht Ismail den Kopf.',
'duration': 1278.0,
'thumbnail': r're:https://www\.zdf\.de/assets/teaser-funk-alles-ist-verzaubert-102~original\?cb=\d+',
'series': 'DRUCK',
'series_id': 'funk-collection-funk-11790-1596',
'season': 'Season 2021',
'season_number': 2021,
'episode': 'Episode 50',
'episode_number': 50,
'timestamp': 1635520560,
'upload_date': '20211029',
'_old_archive_ids': ['zdf video_funk_1770473'],
},
}, {
# zdfheute video, also available on zdf.de
'url': 'https://www.zdfheute.de/video/heute-journal/heute-journal-vom-19-dezember-2025-100.html',
'md5': '47af8c2cfa30abf74501170f62754c63',
'info_dict': {
'id': 'heute-journal-vom-19-dezember-2025-100',
'ext': 'mp4',
'title': 'heute journal vom 19. Dezember 2025',
'description': 'md5:fd0dfbce0783486db839ff9140a8074b',
'duration': 1780.0,
'thumbnail': 'https://epg-image.zdf.de/fotobase-webdelivery/images/273e5545-16e7-4ca3-898e-52fe9e06d964?layout=2400x1350',
'chapters': 'count:10',
'series': 'heute journal',
'series_id': 'heute-journal-104',
'season': 'Season 2025',
'season_number': 2025,
'episode': 'Episode 365',
'episode_number': 365,
'timestamp': 1766178000,
'upload_date': '20251219',
'_old_archive_ids': ['zdf 251219_2200_sendung_hjo'],
},
}, {
# zdfheute video, not available on zdf.de (uses the fallback extraction path)
'url': 'https://www.zdf.de/nachrichten/politik/deutschland/koalitionsverhandlungen-spd-cdu-csu-dobrindt-100.html', 'url': 'https://www.zdf.de/nachrichten/politik/deutschland/koalitionsverhandlungen-spd-cdu-csu-dobrindt-100.html',
'md5': 'c3a78514dd993a5781aa3afe50db51e2', 'md5': 'c3a78514dd993a5781aa3afe50db51e2',
'info_dict': { 'info_dict': {
@ -391,50 +346,71 @@ class ZDFIE(ZDFBaseIE):
'title': 'Dobrindt schließt Steuererhöhungen aus', 'title': 'Dobrindt schließt Steuererhöhungen aus',
'description': 'md5:9a117646d7b8df6bc902eb543a9c9023', 'description': 'md5:9a117646d7b8df6bc902eb543a9c9023',
'duration': 325, 'duration': 325,
'thumbnail': r're:https://www\.zdfheute\.de/assets/dobrindt-csu-berlin-direkt-100~1920x1080\?cb=\d+', 'thumbnail': 'https://www.zdfheute.de/assets/dobrindt-csu-berlin-direkt-100~1920x1080?cb=1743357653736',
'timestamp': 1743374520, 'timestamp': 1743374520,
'upload_date': '20250330', 'upload_date': '20250330',
'_old_archive_ids': ['zdf 250330_clip_2_bdi'], '_old_archive_ids': ['zdf 250330_clip_2_bdi'],
}, },
}, { }, {
# logo! video, also available on zdf.de # FUNK video (hosted on a different CDN, has atypical PTMD and HLS files)
'url': 'https://www.logo.de/logo-vom-freitag-19-dezember-2025-102.html', 'url': 'https://www.zdf.de/funk/druck-11790/funk-alles-ist-verzaubert-102.html',
'md5': 'cfb1a0988b1249f052a437a55851134b', 'md5': '57af4423db0455a3975d2dc4578536bc',
'info_dict': { 'info_dict': {
'id': 'logo-vom-freitag-19-dezember-2025-102', 'id': 'funk-alles-ist-verzaubert-102',
'ext': 'mp4', 'ext': 'mp4',
'title': 'logo! vom Freitag, 19. Dezember 2025', 'title': 'Alles ist verzaubert',
'description': 'md5:971428cb563e924c153580f23870c613', 'description': 'Die Neue an der Schule verdreht Ismail den Kopf.',
'duration': 490.0, 'duration': 1278.0,
'thumbnail': r're:https://www\.zdf\.de/assets/iran-rote-erde-sendung-19-dezember-2025-100~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/teaser-funk-alles-ist-verzaubert-102~original?cb=1663848412907',
'chapters': 'count:7', 'series': 'DRUCK',
'series': 'logo!', 'series_id': 'funk-collection-funk-11790-1590',
'series_id': 'logo-154', 'season': 'Season 7',
'season': 'Season 2025', 'season_number': 7,
'season_number': 2025, 'episode': 'Episode 1',
'episode': 'Episode 382', 'episode_number': 1,
'episode_number': 382, 'timestamp': 1635520560,
'timestamp': 1766168700, 'upload_date': '20211029',
'upload_date': '20251219', '_old_archive_ids': ['zdf video_funk_1770473'],
'_old_archive_ids': ['zdf 251219_1925_sendung_log'],
}, },
}, { }, {
# logo! video, not available on zdf.de (uses the fallback extraction path) 'url': 'https://www.zdf.de/serien/soko-stuttgart/das-geld-anderer-leute-100.html',
'url': 'https://www.logo.de/kinderreporter-vivaan-trifft-alina-grijseels-100.html',
'md5': '094cea026babb67aa25fd0108400bc12',
'info_dict': { 'info_dict': {
'id': 'kinderreporter-vivaan-trifft-alina-grijseels-100', 'id': 'das-geld-anderer-leute-100',
'ext': 'mp4', 'ext': 'mp4',
'title': 'Vivaan trifft Handballerin Alina Grijseels', 'title': 'Das Geld anderer Leute',
'description': 'md5:9572e7f4340dda823ea4091a76624da6', 'description': 'md5:cb6f660850dc5eb7d1ab776ea094959d',
'duration': 166.0, 'duration': 2581.0,
'thumbnail': r're:https://www\.zdf\.de/assets/vivaan-alina-grijseels-100~original\?cb=\d+', 'thumbnail': 'https://epg-image.zdf.de/fotobase-webdelivery/images/e2d7e55a-09f0-424e-ac73-6cac4dd65f35?layout=1920x1080',
'series': 'logo!', 'series': 'SOKO Stuttgart',
'series_id': 'logo-154', 'series_id': 'soko-stuttgart-104',
'timestamp': 1766236320, 'season': 'Season 11',
'upload_date': '20251220', 'season_number': 11,
'_old_archive_ids': ['zdf 251219_kr_alina_grijseels_neu_log'], 'episode': 'Episode 10',
'episode_number': 10,
'timestamp': 1728983700,
'upload_date': '20241015',
'_old_archive_ids': ['zdf 191205_1800_sendung_sok8'],
}, },
}, {
'url': 'https://www.zdf.de/serien/northern-lights/begegnung-auf-der-bruecke-100.html',
'info_dict': {
'id': 'begegnung-auf-der-bruecke-100',
'ext': 'webm',
'title': 'Begegnung auf der Brücke',
'description': 'md5:e53a555da87447f7f1207f10353f8e45',
'duration': 3083.0,
'thumbnail': 'https://epg-image.zdf.de/fotobase-webdelivery/images/c5ff1d1f-f5c8-4468-86ac-1b2f1dbecc76?layout=1920x1080',
'series': 'Northern Lights',
'series_id': 'northern-lights-100',
'season': 'Season 1',
'season_number': 1,
'episode': 'Episode 1',
'episode_number': 1,
'timestamp': 1738546500,
'upload_date': '20250203',
'_old_archive_ids': ['zdf 240319_2310_sendung_not'],
},
'params': {'skip_download': 'geo-restricted http format'},
}, { }, {
# Same as https://www.phoenix.de/sendungen/ereignisse/corona-nachgehakt/wohin-fuehrt-der-protest-in-der-pandemie-a-2050630.html # Same as https://www.phoenix.de/sendungen/ereignisse/corona-nachgehakt/wohin-fuehrt-der-protest-in-der-pandemie-a-2050630.html
'url': 'https://www.zdf.de/politik/phoenix-sendungen/wohin-fuehrt-der-protest-in-der-pandemie-100.html', 'url': 'https://www.zdf.de/politik/phoenix-sendungen/wohin-fuehrt-der-protest-in-der-pandemie-100.html',
@ -641,7 +617,7 @@ class ZDFChannelIE(ZDFBaseIE):
'title': 'Sylt - Deutschlands edles Nordlicht', 'title': 'Sylt - Deutschlands edles Nordlicht',
'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3', 'description': 'md5:35407b810c2e1e33efbe15ef6e4c06c3',
'duration': 810.0, 'duration': 810.0,
'thumbnail': r're:https://www\.zdf\.de/assets/sylt-118~original\?cb=\d+', 'thumbnail': 'https://www.zdf.de/assets/sylt-118~original?cb=1613992485011',
'series': 'Sylt - Deutschlands edles Nordlicht', 'series': 'Sylt - Deutschlands edles Nordlicht',
'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100', 'series_id': 'sylt---deutschlands-edles-nordlicht-movie-100',
'timestamp': 1612462500, 'timestamp': 1612462500,
@ -658,24 +634,38 @@ class ZDFChannelIE(ZDFBaseIE):
}, },
'playlist_mincount': 2, 'playlist_mincount': 2,
}, { }, {
# All seasons of playlist 'url': 'https://www.zdf.de/serien/taunuskrimi/',
'info_dict': {
'id': 'taunuskrimi-100',
'title': 'Taunuskrimi',
'description': 'md5:ee7204e9c625c3b611d1274f9d0e3070',
},
'playlist_mincount': 8,
}, {
'url': 'https://www.zdf.de/serien/taunuskrimi/?staffel=1',
'info_dict': {
'id': 'taunuskrimi-100-s1',
'title': 'Taunuskrimi - Season 1',
'description': 'md5:ee7204e9c625c3b611d1274f9d0e3070',
},
'playlist_count': 7,
}, {
'url': 'https://www.zdf.de/magazine/heute-journal-104', 'url': 'https://www.zdf.de/magazine/heute-journal-104',
'info_dict': { 'info_dict': {
'id': 'heute-journal-104', 'id': 'heute-journal-104',
'title': 'heute journal', 'title': 'heute journal',
'description': 'md5:6edad39189abf8431795d3d6d7f986b3', 'description': 'md5:6edad39189abf8431795d3d6d7f986b3',
}, },
'playlist_mincount': 366, 'playlist_mincount': 500,
}, { }, {
# Only selected season 'url': 'https://www.zdf.de/magazine/heute-journal-104?staffel=2024',
'url': 'https://www.zdf.de/magazine/heute-journal-104?staffel=2025',
'info_dict': { 'info_dict': {
'id': 'heute-journal-104-s2025', 'id': 'heute-journal-104-s2024',
'title': 'heute journal - Season 2025', 'title': 'heute journal - Season 2024',
'description': 'md5:6edad39189abf8431795d3d6d7f986b3', 'description': 'md5:6edad39189abf8431795d3d6d7f986b3',
}, },
'playlist_mincount': 1, 'playlist_count': 242,
'playlist_maxcount': 365, 'skip': 'Video count changes daily, needs support for playlist_maxcount',
}] }]
_PAGE_SIZE = 24 _PAGE_SIZE = 24