From 1eba4321536bb300fd9087974c7c72c538b869ae Mon Sep 17 00:00:00 2001 From: Rafael Moraes <50295204+glomatico@users.noreply.github.com> Date: Sat, 23 May 2026 15:45:09 -0300 Subject: [PATCH] Handle DRM-free tracks in AppleMusic downloader --- gamdl/downloader/song.py | 44 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/gamdl/downloader/song.py b/gamdl/downloader/song.py index 654b362..567375f 100644 --- a/gamdl/downloader/song.py +++ b/gamdl/downloader/song.py @@ -159,26 +159,32 @@ class AppleMusicSongDownloader: self, download_item: DownloadItem, ) -> None: - encrypted_path = self.base.get_temp_path( - download_item.media.media_metadata["id"], - download_item.uuid_, - "encrypted", - ".m4a", - ) - await self.base.download_stream( - download_item.media.stream_info.audio_track.stream_url, - encrypted_path, - ) + if download_item.media.stream_info.audio_track.drm_free: + await self.base.download_stream( + download_item.media.stream_info.audio_track.stream_url, + download_item.staged_path, + ) + else: + encrypted_path = self.base.get_temp_path( + download_item.media.media_metadata["id"], + download_item.uuid_, + "encrypted", + ".m4a", + ) + await self.base.download_stream( + download_item.media.stream_info.audio_track.stream_url, + encrypted_path, + ) - await self.stage( - encrypted_path, - download_item.staged_path, - download_item.media.media_id, - download_item.media.decryption_key, - download_item.media.stream_info.audio_track.fairplay_key, - download_item.media.stream_info.audio_track.use_cenc, - download_item.media.stream_info.audio_track.use_single_content_key, - ) + await self.stage( + encrypted_path, + download_item.staged_path, + download_item.media.media_id, + download_item.media.decryption_key, + download_item.media.stream_info.audio_track.fairplay_key, + download_item.media.stream_info.audio_track.use_cenc, + download_item.media.stream_info.audio_track.use_single_content_key, + ) cover_bytes = ( await self.base.interface.base.get_cover_bytes(