From 06b7a952f0b3ef442f34d6a4cdc05f6123c483e8 Mon Sep 17 00:00:00 2001 From: gandbg <62039938+gandbg@users.noreply.github.com> Date: Wed, 30 Jul 2025 23:57:28 +0200 Subject: [PATCH] [ie/SpreakerShow] Reimplement support for 'key' URL parameter --- yt_dlp/extractor/spreaker.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/yt_dlp/extractor/spreaker.py b/yt_dlp/extractor/spreaker.py index 671610dab..ffa4c58a9 100644 --- a/yt_dlp/extractor/spreaker.py +++ b/yt_dlp/extractor/spreaker.py @@ -8,6 +8,7 @@ str_or_none, try_get, unified_timestamp, + update_url_query, url_or_none, ) from ..utils.traversal import traverse_obj @@ -176,15 +177,18 @@ class SpreakerShowIE(InfoExtractor): def _real_extract(self, url): show_id = self._match_id(url) + additional_api_query = traverse_obj(parse_qs(url), { + 'key': ('key', 0), + }) or {} show_data = self._download_json( f'https://api.spreaker.com/v2/shows/{show_id}', show_id, - note='Downloading JSON show metadata') + note='Downloading JSON show metadata', query=additional_api_query) episodes = [] episodes_api_url = f'https://api.spreaker.com/v2/shows/{show_id}/episodes?limit=100' for page_num in itertools.count(1): episodes_api = self._download_json(episodes_api_url, show_id, - note=f'Downloading JSON episodes metadata page {page_num}') + note=f'Downloading JSON episodes metadata page {page_num}', query=additional_api_query) episodes_in_page = traverse_obj(episodes_api, ('response', 'items', ..., { 'url': 'site_url', 'id': 'episode_id', @@ -192,7 +196,7 @@ def _real_extract(self, url): })) for i in episodes_in_page: - episodes.append(self.url_result(i['url'], ie=SpreakerIE.ie_key(), video_id=i.get('id'), video_title=i.get('title'))) + episodes.append(self.url_result(update_url_query(i['url'], additional_api_query), ie=SpreakerIE.ie_key(), video_id=i.get('id'), video_title=i.get('title'))) episodes_api_url = traverse_obj(episodes_api, ('response', 'next_url'), default=None) if episodes_api_url is None: