mirror of
https://github.com/glomatico/gamdl.git
synced 2026-06-13 04:05:14 +03:00
Support Apple Music library items
This commit is contained in:
@@ -101,19 +101,16 @@ class AppleMusicInterface:
|
|||||||
total: int | None = None,
|
total: int | None = None,
|
||||||
media_metadata: dict | None = None,
|
media_metadata: dict | None = None,
|
||||||
playlist_metadata: dict | None = None,
|
playlist_metadata: dict | None = None,
|
||||||
|
is_library: bool = False,
|
||||||
) -> AsyncGenerator[AppleMusicMedia, None]:
|
) -> AsyncGenerator[AppleMusicMedia, None]:
|
||||||
media = AppleMusicMedia(
|
media = AppleMusicMedia(
|
||||||
media_id=media_id,
|
media_id=media_id,
|
||||||
|
is_library=is_library,
|
||||||
|
index=index,
|
||||||
|
total=total,
|
||||||
|
media_metadata=media_metadata,
|
||||||
|
playlist_metadata=playlist_metadata,
|
||||||
)
|
)
|
||||||
|
|
||||||
if index is not None:
|
|
||||||
media.index = index
|
|
||||||
if total is not None:
|
|
||||||
media.total = total
|
|
||||||
|
|
||||||
media.media_metadata = media_metadata
|
|
||||||
media.playlist_metadata = playlist_metadata
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
async for media in self.song.get_media(media):
|
async for media in self.song.get_media(media):
|
||||||
yield media
|
yield media
|
||||||
@@ -133,16 +130,17 @@ class AppleMusicInterface:
|
|||||||
total: int | None = None,
|
total: int | None = None,
|
||||||
media_metadata: dict | None = None,
|
media_metadata: dict | None = None,
|
||||||
playlist_metadata: dict | None = None,
|
playlist_metadata: dict | None = None,
|
||||||
|
is_library: bool = False,
|
||||||
) -> AsyncGenerator[AppleMusicMedia, None]:
|
) -> AsyncGenerator[AppleMusicMedia, None]:
|
||||||
media = AppleMusicMedia(
|
media = AppleMusicMedia(
|
||||||
media_id=media_id,
|
media_id=media_id,
|
||||||
|
is_library=is_library,
|
||||||
|
index=index,
|
||||||
|
total=total,
|
||||||
|
media_metadata=media_metadata,
|
||||||
|
playlist_metadata=playlist_metadata,
|
||||||
)
|
)
|
||||||
|
|
||||||
if index is not None:
|
|
||||||
media.index = index
|
|
||||||
if total is not None:
|
|
||||||
media.total = total
|
|
||||||
|
|
||||||
media.media_metadata = media_metadata
|
media.media_metadata = media_metadata
|
||||||
media.playlist_metadata = playlist_metadata
|
media.playlist_metadata = playlist_metadata
|
||||||
|
|
||||||
@@ -187,12 +185,14 @@ class AppleMusicInterface:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
base_media.media_metadata = (
|
base_media.media_metadata = (
|
||||||
await self.base.apple_music_api.get_library_album(
|
await (
|
||||||
media_id,
|
self.base.apple_music_api.get_library_album(
|
||||||
)
|
media_id,
|
||||||
if is_library
|
)
|
||||||
else await self.base.apple_music_api.get_album(
|
if is_library
|
||||||
media_id,
|
else self.base.apple_music_api.get_album(
|
||||||
|
media_id,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)["data"][0]
|
)["data"][0]
|
||||||
|
|
||||||
@@ -214,6 +214,7 @@ class AppleMusicInterface:
|
|||||||
index=index,
|
index=index,
|
||||||
total=base_media.media_metadata["attributes"]["trackCount"],
|
total=base_media.media_metadata["attributes"]["trackCount"],
|
||||||
media_metadata=track,
|
media_metadata=track,
|
||||||
|
is_library=is_library,
|
||||||
)
|
)
|
||||||
if track["type"] in {"songs", "library-songs"}
|
if track["type"] in {"songs", "library-songs"}
|
||||||
else self._get_music_video_media(
|
else self._get_music_video_media(
|
||||||
@@ -221,6 +222,7 @@ class AppleMusicInterface:
|
|||||||
index=index,
|
index=index,
|
||||||
total=base_media.media_metadata["attributes"]["trackCount"],
|
total=base_media.media_metadata["attributes"]["trackCount"],
|
||||||
media_metadata=track,
|
media_metadata=track,
|
||||||
|
is_library=is_library,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
for index, track in enumerate(tracks)
|
for index, track in enumerate(tracks)
|
||||||
@@ -246,12 +248,14 @@ class AppleMusicInterface:
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
base_media.media_metadata = (
|
base_media.media_metadata = (
|
||||||
await self.base.apple_music_api.get_library_playlist(
|
await (
|
||||||
media_id,
|
self.base.apple_music_api.get_library_playlist(
|
||||||
)
|
media_id,
|
||||||
if is_library
|
)
|
||||||
else await self.base.apple_music_api.get_playlist(
|
if is_library
|
||||||
media_id,
|
else self.base.apple_music_api.get_playlist(
|
||||||
|
media_id,
|
||||||
|
)
|
||||||
)
|
)
|
||||||
)["data"][0]
|
)["data"][0]
|
||||||
|
|
||||||
@@ -283,6 +287,7 @@ class AppleMusicInterface:
|
|||||||
index=index,
|
index=index,
|
||||||
media_metadata=track,
|
media_metadata=track,
|
||||||
playlist_metadata=base_media.media_metadata,
|
playlist_metadata=base_media.media_metadata,
|
||||||
|
is_library=is_library,
|
||||||
)
|
)
|
||||||
if track["type"] in {"songs", "library-songs"}
|
if track["type"] in {"songs", "library-songs"}
|
||||||
else self._get_music_video_media(
|
else self._get_music_video_media(
|
||||||
@@ -290,6 +295,7 @@ class AppleMusicInterface:
|
|||||||
index=index,
|
index=index,
|
||||||
media_metadata=track,
|
media_metadata=track,
|
||||||
playlist_metadata=base_media.media_metadata,
|
playlist_metadata=base_media.media_metadata,
|
||||||
|
is_library=is_library,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
for index, track in enumerate(tracks)
|
for index, track in enumerate(tracks)
|
||||||
@@ -425,32 +431,38 @@ class AppleMusicInterface:
|
|||||||
url_info.type,
|
url_info.type,
|
||||||
)
|
)
|
||||||
|
|
||||||
if url_info.type == "song" or url_info.sub_id:
|
if (
|
||||||
|
url_info.type == "song"
|
||||||
|
or url_info.library_type == "songs"
|
||||||
|
or url_info.sub_id
|
||||||
|
):
|
||||||
async for media in self._get_song_media(
|
async for media in self._get_song_media(
|
||||||
media_id=url_info.sub_id or url_info.id,
|
media_id=url_info.sub_id or url_info.id or url_info.library_id,
|
||||||
index=0,
|
index=0,
|
||||||
total=1,
|
total=1,
|
||||||
|
is_library=bool(url_info.library_type),
|
||||||
):
|
):
|
||||||
yield media
|
yield media
|
||||||
|
|
||||||
elif url_info.type == "music-video":
|
elif url_info.type == "music-video" or url_info.library_type == "music-videos":
|
||||||
async for media in self._get_music_video_media(
|
async for media in self._get_music_video_media(
|
||||||
media_id=url_info.id,
|
media_id=url_info.id or url_info.library_id,
|
||||||
index=0,
|
index=0,
|
||||||
total=1,
|
total=1,
|
||||||
|
is_library=bool(url_info.library_type),
|
||||||
):
|
):
|
||||||
yield media
|
yield media
|
||||||
|
|
||||||
elif url_info.type == "album" or url_info.library_type == "albums":
|
elif url_info.type == "album" or url_info.library_type == "albums":
|
||||||
async for media in self._get_album_media(
|
async for media in self._get_album_media(
|
||||||
media_id=url_info.library_id or url_info.id,
|
media_id=url_info.id or url_info.library_id,
|
||||||
is_library=bool(url_info.library_type),
|
is_library=bool(url_info.library_type),
|
||||||
):
|
):
|
||||||
yield media
|
yield media
|
||||||
|
|
||||||
elif url_info.type == "playlist" or url_info.library_type == "playlist":
|
elif url_info.type == "playlist" or url_info.library_type == "playlist":
|
||||||
async for media in self._get_playlist_media(
|
async for media in self._get_playlist_media(
|
||||||
media_id=url_info.library_id or url_info.id,
|
media_id=url_info.id or url_info.library_id,
|
||||||
is_library=bool(url_info.library_type),
|
is_library=bool(url_info.library_type),
|
||||||
):
|
):
|
||||||
yield media
|
yield media
|
||||||
|
|||||||
Reference in New Issue
Block a user