check has_lyrics before fetching lyrics

This commit is contained in:
Rafael Moraes
2024-09-21 16:11:43 -03:00
parent 2a0dff032e
commit e0a5fef214
2 changed files with 22 additions and 14 deletions
+8 -5
View File
@@ -15,6 +15,7 @@ from .downloader import Downloader
from .downloader_episode import DownloaderEpisode
from .downloader_song import DownloaderSong
from .enums import DownloadMode, Quality
from .models import Lyrics
from .spotify_api import SpotifyApi
spotify_api_sig = inspect.signature(SpotifyApi.__init__)
@@ -361,9 +362,8 @@ def main(
media_id = downloader.get_media_id(media_metadata)
media_type = media_metadata["type"]
logger.debug("Getting stream info")
stream_info = downloader.get_stream_info(
**{f"{media_type}_id": media_id},
)
gid_metadata = downloader.get_gid_metadata(media_id, media_type)
stream_info = downloader.get_stream_info(gid_metadata, media_type)
if not stream_info.file_id:
logger.warning(
f"({queue_progress}) Media is not available on Spotify's "
@@ -377,8 +377,11 @@ def main(
logger.debug("Getting decryption key")
decryption_key = downloader.get_decryption_key(stream_info.file_id)
if media_type == "track":
logger.debug("Getting lyrics")
lyrics = downloader_song.get_lyrics(media_id)
if gid_metadata.get("has_lyrics"):
logger.debug("Getting lyrics")
lyrics = downloader_song.get_lyrics(media_id)
else:
lyrics = Lyrics()
if not download_queue.album_metadata:
logger.debug("Getting album metadata")
album_metadata = spotify_api.get_album(
+14 -9
View File
@@ -250,21 +250,26 @@ class Downloader:
return quality, audio_file
return None, None
def get_gid_metadata(
self,
media_id: str,
media_type: str,
) -> dict:
gid = self.spotify_api.media_id_to_gid(media_id)
return self.spotify_api.get_gid_metadata(gid, media_type)
def get_stream_info(
self,
track_id: str = None,
episode_id: str = None,
gid_metadata: dict,
media_type: str,
) -> StreamInfo:
if not track_id and not episode_id:
raise RuntimeError()
stream_info = StreamInfo()
gid = self.spotify_api.media_id_to_gid(track_id or episode_id)
if track_id:
gid_metadata = self.spotify_api.get_gid_metadata(gid, "track")
if media_type == "track":
audio_files = gid_metadata.get("file")
elif episode_id:
gid_metadata = self.spotify_api.get_gid_metadata(gid, "episode")
elif media_type == "episode":
audio_files = gid_metadata.get("audio")
else:
raise RuntimeError()
audio_files = audio_files or gid_metadata.get("alternative")
if not audio_files:
return stream_info