mirror of
https://github.com/glomatico/gamdl.git
synced 2026-06-13 04:05:14 +03:00
Replace _base with base in interfaces
This commit is contained in:
@@ -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,
|
||||
)
|
||||
|
||||
@@ -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
@@ -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,
|
||||
)
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user