Replace _base with base in interfaces

This commit is contained in:
Rafael Moraes
2026-04-20 10:26:39 -03:00
parent de76ce898e
commit 939e9459ef
4 changed files with 55 additions and 58 deletions
+12 -12
View File
@@ -44,7 +44,7 @@ class AppleMusicInterface:
self.concurrency = concurrency
self.disallowed_media_types = disallowed_media_types
self._base = song._base
self.base = song.base
@staticmethod
def get_url_info(url: str) -> AppleMusicUrlInfo | None:
@@ -74,7 +74,7 @@ class AppleMusicInterface:
if not media_metadata:
try:
media_metadata = (
await self._base.apple_music_api.get_song(
await self.base.apple_music_api.get_song(
media_id,
)
)[
@@ -88,7 +88,7 @@ class AppleMusicInterface:
)
if not media_id:
media_id = self._base.parse_catalog_media_id(media_metadata)
media_id = self.base.parse_catalog_media_id(media_metadata)
base_media = AppleMusicMedia(media_id, media_metadata)
@@ -132,7 +132,7 @@ class AppleMusicInterface:
if not media_metadata:
try:
media_metadata = (
await self._base.apple_music_api.get_music_video(
await self.base.apple_music_api.get_music_video(
media_id,
)
)["data"][0]
@@ -184,7 +184,7 @@ class AppleMusicInterface:
) -> AppleMusicMedia:
try:
media_metadata = (
await self._base.apple_music_api.get_uploaded_video(
await self.base.apple_music_api.get_uploaded_video(
media_id,
)
)["data"][0]
@@ -230,11 +230,11 @@ class AppleMusicInterface:
) -> AsyncGenerator[AppleMusicMedia, None]:
try:
media_metadata = (
await self._base.apple_music_api.get_library_album(
await self.base.apple_music_api.get_library_album(
media_id,
)
if is_library
else await self._base.apple_music_api.get_album(
else await self.base.apple_music_api.get_album(
media_id,
)
)["data"][0]
@@ -308,11 +308,11 @@ class AppleMusicInterface:
) -> AsyncGenerator[AppleMusicMedia, None]:
try:
media_metadata = (
await self._base.apple_music_api.get_library_playlist(
await self.base.apple_music_api.get_library_playlist(
media_id,
)
if is_library
else await self._base.apple_music_api.get_playlist(
else await self.base.apple_music_api.get_playlist(
media_id,
)
)["data"][0]
@@ -357,7 +357,7 @@ class AppleMusicInterface:
href_uri = media_metadata["relationships"]["tracks"].get("href")
while next_uri:
try:
extended_data = await self._base.apple_music_api.get_extended_api_data(
extended_data = await self.base.apple_music_api.get_extended_api_data(
next_uri,
href_uri,
)
@@ -405,7 +405,7 @@ class AppleMusicInterface:
) -> AsyncGenerator[AppleMusicMedia, None]:
try:
media_metadata = (
await self._base.apple_music_api.get_artist(
await self.base.apple_music_api.get_artist(
media_id,
)
)[
@@ -468,7 +468,7 @@ class AppleMusicInterface:
href_uri = items_relation.get("href")
while next_uri:
try:
extended_data = await self._base.apple_music_api.get_extended_api_data(
extended_data = await self.base.apple_music_api.get_extended_api_data(
next_uri,
href_uri,
)
+21 -22
View File
@@ -41,19 +41,18 @@ class AppleMusicMusicVideoInterface:
Callable[[list[dict | m3u8.Playlist]], dict] | None
) = None,
):
self.base = base
self.resolution = resolution
self.codec_priority = codec_priority
self.ask_video_codec_function = ask_video_codec_function
self.ask_audio_codec_function = ask_audio_codec_function
self._base = base
async def get_itunes_page_metadata(
self,
music_video_metadata: dict,
) -> dict:
url_media_id = self._base.parse_media_id_from_url(music_video_metadata)
itunes_page = await self._base.itunes_api.get_itunes_page(
url_media_id = self.base.parse_media_id_from_url(music_video_metadata)
itunes_page = await self.base.itunes_api.get_itunes_page(
"music-video",
url_media_id,
)
@@ -88,11 +87,11 @@ class AppleMusicMusicVideoInterface:
) -> MediaTags:
log = logger.bind(
action="get_music_video_tags",
media_id=self._base.parse_catalog_media_id(metadata),
media_id=self.base.parse_catalog_media_id(metadata),
)
url_media_id = self._base.parse_media_id_from_url(metadata)
lookup_metadata = (await self._base.itunes_api.get_lookup_result(url_media_id))[
url_media_id = self.base.parse_media_id_from_url(metadata)
lookup_metadata = (await self.base.itunes_api.get_lookup_result(url_media_id))[
"results"
]
@@ -108,18 +107,18 @@ class AppleMusicMusicVideoInterface:
artist=lookup_metadata[0]["artistName"],
artist_id=int(lookup_metadata[0]["artistId"]),
copyright=itunes_page_metadata.get("copyright"),
date=self._base.parse_date(lookup_metadata[0]["releaseDate"]),
date=self.base.parse_date(lookup_metadata[0]["releaseDate"]),
genre=lookup_metadata[0]["primaryGenreName"],
genre_id=int(itunes_page_metadata["genres"][0]["genreId"]),
media_type=MediaType.MUSIC_VIDEO,
storefront=self._base.itunes_api.storefront_id,
storefront=self.base.itunes_api.storefront_id,
title=lookup_metadata[0]["trackCensoredName"],
title_id=int(metadata["id"]),
rating=rating,
)
if len(lookup_metadata) > 1:
album = await self._base.get_album_cached(
album = await self.base.get_album_cached(
itunes_page_metadata["collectionId"]
)
if not album:
@@ -145,10 +144,10 @@ class AppleMusicMusicVideoInterface:
) -> StreamInfoAv | None:
log = logger.bind(
action="get_music_video_stream_info",
media_id=self._base.parse_catalog_media_id(metadata),
media_id=self.base.parse_catalog_media_id(metadata),
)
url_media_id = self._base.parse_media_id_from_url(metadata)
url_media_id = self.base.parse_media_id_from_url(metadata)
m3u8_master_url = None
if url_media_id == metadata["id"]:
@@ -157,7 +156,7 @@ class AppleMusicMusicVideoInterface:
)
if not m3u8_master_url:
webplayback_response = await self._base.apple_music_api.get_webplayback(
webplayback_response = await self.base.apple_music_api.get_webplayback(
metadata["id"]
)
m3u8_master_url = self._get_m3u8_master_url_from_webplayback(
@@ -165,7 +164,7 @@ class AppleMusicMusicVideoInterface:
)
playlist_master_m3u8_obj = m3u8.loads(
(await self._base.get_response(m3u8_master_url)).text
(await self.base.get_response(m3u8_master_url)).text
)
playlist_master_m3u8_obj.base_uri = m3u8_master_url.rpartition("/")[0]
stream_info_video = await self._get_stream_info_video(playlist_master_m3u8_obj)
@@ -319,7 +318,7 @@ class AppleMusicMusicVideoInterface:
stream_info.width, stream_info.height = playlist.stream_info.resolution
playlist_m3u8_obj = m3u8.loads(
(await self._base.get_response(stream_info.stream_url)).text
(await self.base.get_response(stream_info.stream_url)).text
)
stream_info.widevine_pssh = self._get_widevine_pssh(playlist_m3u8_obj)
stream_info.fairplay_key = self._get_fairplay_key(playlist_m3u8_obj)
@@ -345,7 +344,7 @@ class AppleMusicMusicVideoInterface:
stream_info.codec = playlist["group_id"]
playlist_m3u8_obj = m3u8.loads(
(await self._base.get_response(stream_info.stream_url)).text
(await self.base.get_response(stream_info.stream_url)).text
)
stream_info.widevine_pssh = self._get_widevine_pssh(playlist_m3u8_obj)
stream_info.fairplay_key = self._get_fairplay_key(playlist_m3u8_obj)
@@ -358,11 +357,11 @@ class AppleMusicMusicVideoInterface:
stream_info: StreamInfoAv,
) -> DecryptionKeyAv:
decryption_key_video, decryption_key_audio = await asyncio.gather(
self._base.get_decryption_key(
self.base.get_decryption_key(
stream_info.video_track.widevine_pssh,
stream_info.media_id,
),
self._base.get_decryption_key(
self.base.get_decryption_key(
stream_info.audio_track.widevine_pssh,
stream_info.media_id,
),
@@ -380,21 +379,21 @@ class AppleMusicMusicVideoInterface:
playlist_track: dict | None = None,
) -> AppleMusicMedia:
media = AppleMusicMedia(
media_id=self._base.parse_catalog_media_id(music_video_metadata),
media_id=self.base.parse_catalog_media_id(music_video_metadata),
media_metadata=music_video_metadata,
)
if not self._base.is_media_streamable(music_video_metadata):
if not self.base.is_media_streamable(music_video_metadata):
raise GamdlInterfaceMediaNotStreamableError(media.media_id)
if playlist_metadata and playlist_track:
media.playlist_metadata = playlist_metadata
media.playlist_tags = self._base.get_playlist_tags(
media.playlist_tags = self.base.get_playlist_tags(
playlist_metadata,
playlist_track,
)
media.cover = await self._base.get_cover(music_video_metadata)
media.cover = await self.base.get_cover(music_video_metadata)
itunes_page_metadata = await self.get_itunes_page_metadata(music_video_metadata)
media.tags = await self.get_tags(
+17 -18
View File
@@ -43,21 +43,20 @@ class AppleMusicSongInterface:
skip_decryption_key_non_legacy: bool = False,
ask_codec_function: Callable[[list[dict]], dict] | None = None,
):
self.base = base
self.synced_lyrics_format = synced_lyrics_format
self.codec_priority = codec_priority
self.use_album_date = use_album_date
self.skip_decryption_key_non_legacy = skip_decryption_key_non_legacy
self.ask_codec_function = ask_codec_function
self._base = base
async def get_lyrics(
self,
song_metadata: dict,
) -> Lyrics | None:
log = logger.bind(
action="get_lyrics",
song_id=self._base.parse_catalog_media_id(song_metadata),
song_id=self.base.parse_catalog_media_id(song_metadata),
)
if not song_metadata["attributes"]["hasLyrics"]:
@@ -69,8 +68,8 @@ class AppleMusicSongInterface:
or "lyrics" not in song_metadata["relationships"]
):
song_metadata = (
await self._base.apple_music_api.get_song(
self._base.parse_catalog_media_id(song_metadata)
await self.base.apple_music_api.get_song(
self.base.parse_catalog_media_id(song_metadata)
)
)["data"][0]
@@ -219,10 +218,10 @@ class AppleMusicSongInterface:
composer_sort=webplayback_metadata.get("sort-composer"),
copyright=webplayback_metadata.get("copyright"),
date=(
await self._base.get_media_date(webplayback_metadata["playlistId"])
await self.base.get_media_date(webplayback_metadata["playlistId"])
if self.use_album_date
else (
self._base.parse_date(webplayback_metadata["releaseDate"])
self.base.parse_date(webplayback_metadata["releaseDate"])
if webplayback_metadata.get("releaseDate")
else None
)
@@ -268,8 +267,8 @@ class AppleMusicSongInterface:
if "extendedAssetUrls" not in song_metadata["attributes"]:
song_metadata = (
await self._base.apple_music_api.get_song(
self._base.parse_catalog_media_id(song_metadata),
await self.base.apple_music_api.get_song(
self.base.parse_catalog_media_id(song_metadata),
)
)["data"][0]
@@ -280,7 +279,7 @@ class AppleMusicSongInterface:
return None
m3u8_master_obj = m3u8.loads(
(await self._base.get_response(m3u8_master_url)).text
(await self.base.get_response(m3u8_master_url)).text
)
m3u8_master_data = m3u8_master_obj.data
@@ -327,7 +326,7 @@ class AppleMusicSongInterface:
)
else:
m3u8_obj = m3u8.loads(
(await self._base.get_response(stream_info.stream_url)).text
(await self.base.get_response(stream_info.stream_url)).text
)
stream_info.widevine_pssh = self._get_drm_uri_from_m3u8_keys(
@@ -437,7 +436,7 @@ class AppleMusicSongInterface:
)["URL"]
m3u8_obj = m3u8.loads(
(await self._base.get_response(stream_info.stream_url)).text
(await self.base.get_response(stream_info.stream_url)).text
)
stream_info.widevine_pssh = m3u8_obj.keys[0].uri
@@ -457,27 +456,27 @@ class AppleMusicSongInterface:
playlist_track: int | None = None,
) -> AppleMusicMedia:
media = AppleMusicMedia(
media_id=self._base.parse_catalog_media_id(song_metadata),
media_id=self.base.parse_catalog_media_id(song_metadata),
media_metadata=song_metadata,
)
if not self._base.is_media_streamable(song_metadata):
if not self.base.is_media_streamable(song_metadata):
raise GamdlInterfaceMediaNotStreamableError(
media_id=media.media_id,
)
if playlist_metadata and playlist_track:
media.playlist_metadata = playlist_metadata
media.playlist_tags = self._base.get_playlist_tags(
media.playlist_tags = self.base.get_playlist_tags(
playlist_metadata,
playlist_track,
)
media.cover = await self._base.get_cover(song_metadata)
media.cover = await self.base.get_cover(song_metadata)
media.lyrics = await self.get_lyrics(song_metadata)
webplayback = await self._base.apple_music_api.get_webplayback(media.media_id)
webplayback = await self.base.apple_music_api.get_webplayback(media.media_id)
media.tags = await self.get_tags(
webplayback,
@@ -508,7 +507,7 @@ class AppleMusicSongInterface:
and not self.skip_decryption_key_non_legacy
) or media.stream_info.audio_track.legacy:
media.decryption_key = DecryptionKeyAv(
audio_track=await self._base.get_decryption_key(
audio_track=await self.base.get_decryption_key(
media.stream_info.audio_track.widevine_pssh,
media.media_id,
)
+5 -6
View File
@@ -21,11 +21,10 @@ class AppleMusicUploadedVideoInterface:
quality: UploadedVideoQuality = UploadedVideoQuality.BEST,
ask_quality_function: Callable[[list[dict]], dict] | None = None,
):
self.base = base
self.quality = quality
self.ask_quality_function = ask_quality_function
self._base = base
def _get_best_stream_url(self, metadata: dict) -> str:
best_quality = next(
(
@@ -89,10 +88,10 @@ class AppleMusicUploadedVideoInterface:
tags = MediaTags(
artist=attributes.get("artistName"),
date=self._base.parse_date(upload_date) if upload_date else None,
date=self.base.parse_date(upload_date) if upload_date else None,
title=attributes.get("name"),
title_id=int(metadata["id"]),
storefront=self._base.itunes_api.storefront_id,
storefront=self.base.itunes_api.storefront_id,
)
log.debug("success", tags=tags)
@@ -108,10 +107,10 @@ class AppleMusicUploadedVideoInterface:
uploaded_video_metadata,
)
if not self._base.is_media_streamable(uploaded_video_metadata):
if not self.base.is_media_streamable(uploaded_video_metadata):
raise GamdlInterfaceMediaNotStreamableError(media.media_id)
media.cover = await self._base.get_cover(uploaded_video_metadata)
media.cover = await self.base.get_cover(uploaded_video_metadata)
media.stream_info = await self.get_stream_info(uploaded_video_metadata)
if not media.stream_info: