From df3fb9156ee487b9cc78170cb028f0c26fa0076b Mon Sep 17 00:00:00 2001 From: src-tinkerer <149616646+src-tinkerer@users.noreply.github.com> Date: Sun, 28 Apr 2024 20:17:58 +0000 Subject: [PATCH 1/2] [ie/yandexvideo] Fix extractor --- yt_dlp/extractor/yandexvideo.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/yandexvideo.py b/yt_dlp/extractor/yandexvideo.py index 4382a5684..d8008f67d 100644 --- a/yt_dlp/extractor/yandexvideo.py +++ b/yt_dlp/extractor/yandexvideo.py @@ -260,11 +260,12 @@ class ZenYandexIE(InfoExtractor): data_json = self._search_json( r'("data"\s*:|data\s*=)', webpage, 'metadata', video_id, contains_pattern=r'{["\']_*serverState_*video.+}') serverstate = self._search_regex(r'(_+serverState_+video-site_[^_]+_+)', - webpage, 'server state').replace('State', 'Settings') + webpage, 'server state') uploader = self._search_regex(r'(]+>)', webpage, 'uploader', default='') uploader_name = extract_attributes(uploader).get('aria-label') - video_json = try_get(data_json, lambda x: x[serverstate]['exportData']['video'], dict) + item_id = try_get(data_json, lambda x: x[serverstate]['videoViewer']['openedItemId'], str) + video_json = try_get(data_json, lambda x: x[serverstate]['videoViewer']['items'][item_id], dict) stream_urls = try_get(video_json, lambda x: x['video']['streams']) formats, subtitles = [], {} for s_url in stream_urls: From 03799ada5ccfb6fe4bbaa50d3de2f899825700a9 Mon Sep 17 00:00:00 2001 From: pukkandan Date: Wed, 1 May 2024 06:50:09 +0530 Subject: [PATCH 2/2] Update yt_dlp/extractor/yandexvideo.py --- yt_dlp/extractor/yandexvideo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yt_dlp/extractor/yandexvideo.py b/yt_dlp/extractor/yandexvideo.py index d8008f67d..1088cb501 100644 --- a/yt_dlp/extractor/yandexvideo.py +++ b/yt_dlp/extractor/yandexvideo.py @@ -264,8 +264,8 @@ class ZenYandexIE(InfoExtractor): uploader = self._search_regex(r'(]+>)', webpage, 'uploader', default='') uploader_name = extract_attributes(uploader).get('aria-label') - item_id = try_get(data_json, lambda x: x[serverstate]['videoViewer']['openedItemId'], str) - video_json = try_get(data_json, lambda x: x[serverstate]['videoViewer']['items'][item_id], dict) + item_id = traverse_obj(data_json, (serverstate, 'videoViewer', 'openedItemId', {str})) + video_json = traverse_obj(data_json, (serverstate, 'videoViewer', 'items', item_id, {dict})) stream_urls = try_get(video_json, lambda x: x['video']['streams']) formats, subtitles = [], {} for s_url in stream_urls: