mirror of
https://github.com/glomatico/votify.git
synced 2026-10-28 17:52:51 +01:00
check has_lyrics before fetching lyrics
This commit is contained in:
+8
-5
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user