From c028c876287e7dbbd3fe7e1350f36c03d84b40f5 Mon Sep 17 00:00:00 2001 From: garret1317 Date: Sat, 17 May 2025 22:20:20 +0100 Subject: add quick-downloading support for as-live formats closes #24 --- yt_dlp_plugins/extractor/radiko.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'yt_dlp_plugins/extractor/radiko.py') diff --git a/yt_dlp_plugins/extractor/radiko.py b/yt_dlp_plugins/extractor/radiko.py index c9d2756..e371878 100644 --- a/yt_dlp_plugins/extractor/radiko.py +++ b/yt_dlp_plugins/extractor/radiko.py @@ -21,6 +21,7 @@ from yt_dlp.utils import ( ) import yt_dlp_plugins.extractor.radiko_time as rtime +import yt_dlp_plugins.extractor.radiko_hacks as hacks class _RadikoBaseIE(InfoExtractor): @@ -287,7 +288,6 @@ class _RadikoBaseIE(InfoExtractor): preference = -1 entry_protocol = 'm3u8' - if domain in self._DOESNT_WORK_WITH_FFMPEG and do_blacklist_streams: self.write_debug(f"skipping {domain} (known not working)") continue @@ -297,10 +297,23 @@ class _RadikoBaseIE(InfoExtractor): preference = 1 entry_protocol = None - formats += self._extract_m3u8_formats( - playlist_url, station, m3u8_id=domain, fatal=False, headers=auth_data["token"], - live=delivered_live, preference=preference, entry_protocol=entry_protocol, - note=f"Downloading m3u8 information from {domain}") + if delivered_live and timefree: + chunks = hacks._generate_as_live_chunks(playlist_url, start_at, end_at) + + formats.append({ + "url": playlist_url, # fallback to live for ffmpeg etc + "format_id": join_nonempty(domain, "chunked"), + "live": False, + "hls_media_playlist_data": hacks._playlist_from_chunks(self, chunks, domain, auth_data["token"]), + "preference": preference, + "ext": "m4a", + }) + else: + + formats += self._extract_m3u8_formats( + playlist_url, station, m3u8_id=domain, fatal=False, headers=auth_data["token"], + live=delivered_live, preference=preference, entry_protocol=entry_protocol, + note=f"Downloading m3u8 information from {domain}") return formats -- cgit v1.2.3-70-g09d2