From 4fc91bac9fed62cbd466f9b1501125264b782f5d Mon Sep 17 00:00:00 2001 From: Rafael Moraes <50295204+glomatico@users.noreply.github.com> Date: Sat, 23 May 2026 15:58:20 -0300 Subject: [PATCH] Add get_m3u8_master_url helper and use it --- gamdl/interface/song.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/gamdl/interface/song.py b/gamdl/interface/song.py index dfb3b94..35ba493 100644 --- a/gamdl/interface/song.py +++ b/gamdl/interface/song.py @@ -195,6 +195,16 @@ class AppleMusicSongInterface: def _get_m3u8_from_playback(self, playback: dict) -> str | None: return playback["songList"][0].get("hls-playlist-url") + async def get_m3u8_master_url( + self, + playback: dict | None, + song_metadata: dict | None, + ) -> str | None: + if playback: + return self._get_m3u8_from_playback(playback) + else: + return await self._get_m3u8_master_url_from_metadata(song_metadata) + async def _get_m3u8_master_url_from_metadata( self, song_metadata: dict, @@ -549,12 +559,10 @@ class AppleMusicSongInterface: ) if not self.skip_stream_info: - if playback: - m3u8_master_url = self._get_m3u8_from_playback(playback) - else: - m3u8_master_url = await self._get_m3u8_master_url_from_metadata( - media.media_metadata - ) + m3u8_master_url = await self.get_m3u8_master_url( + playback, + media.media_metadata, + ) media.stream_info = await self.get_stream_info( media.media_id,