mirror of
https://github.com/tcsenpai/swingmusic.git
synced 2025-06-10 13:07:35 +00:00
try catch breaking parts of lyrics plugin
This commit is contained in:
parent
836bbe4dc5
commit
de5b2a53b1
@ -33,7 +33,7 @@ def send_lyrics():
|
|||||||
lyrics, is_synced, copyright = get_lyrics_from_tags(filepath)
|
lyrics, is_synced, copyright = get_lyrics_from_tags(filepath)
|
||||||
|
|
||||||
if not lyrics:
|
if not lyrics:
|
||||||
return {"error": "No lyrics found"}, 404
|
return {"error": "No lyrics found"}
|
||||||
|
|
||||||
return {"lyrics": lyrics, "synced": is_synced, "copyright": copyright}, 200
|
return {"lyrics": lyrics, "synced": is_synced, "copyright": copyright}, 200
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
from flask import Blueprint, request
|
from flask import Blueprint, request
|
||||||
|
|
||||||
from app.plugins.lyrics import Lyrics
|
from app.plugins.lyrics import Lyrics
|
||||||
from app.utils.hashing import create_hash
|
from app.utils.hashing import create_hash
|
||||||
|
|
||||||
@ -19,7 +20,7 @@ def search_lyrics():
|
|||||||
data = finder.search_lyrics_by_title_and_artist(title, artist)
|
data = finder.search_lyrics_by_title_and_artist(title, artist)
|
||||||
|
|
||||||
if not data:
|
if not data:
|
||||||
return {"downloaded": False, "all": []}, 404
|
return {"downloaded": False}
|
||||||
|
|
||||||
perfect_match = data[0]
|
perfect_match = data[0]
|
||||||
|
|
||||||
@ -31,9 +32,11 @@ def search_lyrics():
|
|||||||
i_album
|
i_album
|
||||||
) == create_hash(album):
|
) == create_hash(album):
|
||||||
perfect_match = track
|
perfect_match = track
|
||||||
break
|
|
||||||
|
else:
|
||||||
|
track["saved"] = False
|
||||||
|
|
||||||
track_id = perfect_match["track_id"]
|
track_id = perfect_match["track_id"]
|
||||||
downloaded = finder.download_lyrics_to_path_by_id(track_id, filepath)
|
downloaded = finder.download_lyrics(track_id, filepath)
|
||||||
|
|
||||||
return {"downloaded": downloaded, "all": data}, 200
|
return {"downloaded": downloaded}, 200
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
LASTFM_API_KEY = ""
|
LASTFM_API_KEY = ''
|
||||||
POSTHOG_API_KEY = ""
|
POSTHOG_API_KEY = ''
|
||||||
PLUGIN_LYRICS_AUTHORITY = ""
|
PLUGIN_LYRICS_AUTHORITY = ""
|
||||||
PLUGIN_LYRICS_ROOT_URL = ""
|
PLUGIN_LYRICS_ROOT_URL = ""
|
@ -78,7 +78,10 @@ class LyricsProvider(LRCProvider):
|
|||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return response
|
if response is not None and response.ok:
|
||||||
|
return response
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
def _get_token(self):
|
def _get_token(self):
|
||||||
# Check if token is cached and not expired
|
# Check if token is cached and not expired
|
||||||
@ -99,12 +102,17 @@ class LyricsProvider(LRCProvider):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Token not cached or expired, fetch a new token
|
# Token not cached or expired, fetch a new token
|
||||||
d = self._get("token.get", [("user_language", "en")]).json()
|
res = self._get("token.get", [("user_language", "en")])
|
||||||
if d["message"]["header"]["status_code"] == 401:
|
|
||||||
|
if res is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
res = res.json()
|
||||||
|
if res["message"]["header"]["status_code"] == 401:
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
return self._get_token()
|
return self._get_token()
|
||||||
|
|
||||||
new_token = d["message"]["body"]["user_token"]
|
new_token = res["message"]["body"]["user_token"]
|
||||||
expiration_time = current_time + 600 # 10 minutes expiration
|
expiration_time = current_time + 600 # 10 minutes expiration
|
||||||
|
|
||||||
# Cache the new token
|
# Cache the new token
|
||||||
@ -120,19 +128,19 @@ class LyricsProvider(LRCProvider):
|
|||||||
"track.subtitle.get", [("track_id", track_id), ("subtitle_format", "lrc")]
|
"track.subtitle.get", [("track_id", track_id), ("subtitle_format", "lrc")]
|
||||||
)
|
)
|
||||||
|
|
||||||
if not res.ok:
|
try:
|
||||||
|
res = res.json()
|
||||||
|
body = res["message"]["body"]
|
||||||
|
except AttributeError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
res = res.json()
|
|
||||||
body = res["message"]["body"]
|
|
||||||
|
|
||||||
if not body:
|
if not body:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return body["subtitle"]["subtitle_body"]
|
return body["subtitle"]["subtitle_body"]
|
||||||
|
|
||||||
def get_lrc(self, title: str, artist: str) -> Optional[str]:
|
def get_lrc(self, title: str, artist: str) -> Optional[str]:
|
||||||
r = self._get(
|
res = self._get(
|
||||||
"track.search",
|
"track.search",
|
||||||
[
|
[
|
||||||
("q_track_artist", f"{title} {artist}"),
|
("q_track_artist", f"{title} {artist}"),
|
||||||
@ -146,7 +154,11 @@ class LyricsProvider(LRCProvider):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
body = r.json()["message"]["body"]
|
try:
|
||||||
|
body = res.json()["message"]["body"]
|
||||||
|
except AttributeError:
|
||||||
|
return []
|
||||||
|
|
||||||
tracks = body["track_list"]
|
tracks = body["track_list"]
|
||||||
|
|
||||||
return [
|
return [
|
||||||
@ -183,14 +195,17 @@ class Lyrics(Plugin):
|
|||||||
return self.provider.get_lrc(title, artist)
|
return self.provider.get_lrc(title, artist)
|
||||||
|
|
||||||
@plugin_method
|
@plugin_method
|
||||||
def download_lyrics_to_path_by_id(self, trackid: str, path: str):
|
def download_lyrics(self, trackid: str, path: str):
|
||||||
lrc = self.provider.get_lrc_by_id(trackid)
|
lrc = self.provider.get_lrc_by_id(trackid)
|
||||||
|
is_valid = lrc is not None and lrc.replace("\n", "").strip() != ""
|
||||||
|
|
||||||
path = Path(path).with_suffix(".lrc")
|
if not is_valid:
|
||||||
|
|
||||||
if not lrc or lrc.replace("\n", "").strip() == "":
|
|
||||||
return False
|
return False
|
||||||
with open(path, "w", encoding="utf-8") as f:
|
|
||||||
f.write(lrc)
|
|
||||||
|
|
||||||
return True
|
if is_valid:
|
||||||
|
path = Path(path).with_suffix(".lrc")
|
||||||
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
|
f.write(lrc)
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user