feat: Lyrics-Funktion und Install-Script
- Lyrics-Ansicht mit Taste l (lrclib.net API) - Install-Script fuer systemweite Installation - README aktualisiert
This commit is contained in:
@@ -197,5 +197,43 @@ class SpotifyClient:
|
||||
return self._get("/me")
|
||||
|
||||
|
||||
class LyricsClient:
|
||||
LRCLIB_URL = "https://lrclib.net/api"
|
||||
|
||||
def get_lyrics(self, track_name, artist_name, album_name=None, duration_ms=None):
|
||||
import requests as req
|
||||
|
||||
params = {
|
||||
"track_name": track_name,
|
||||
"artist_name": artist_name,
|
||||
}
|
||||
if album_name:
|
||||
params["album_name"] = album_name
|
||||
if duration_ms:
|
||||
params["duration"] = duration_ms // 1000
|
||||
|
||||
try:
|
||||
resp = req.get(f"{self.LRCLIB_URL}/get", params=params, timeout=5)
|
||||
if resp.status_code == 200:
|
||||
data = resp.json()
|
||||
return data.get("syncedLyrics") or data.get("plainLyrics")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
try:
|
||||
resp = req.get(f"{self.LRCLIB_URL}/search", params={
|
||||
"q": f"{track_name} {artist_name}"
|
||||
}, timeout=5)
|
||||
if resp.status_code == 200:
|
||||
results = resp.json()
|
||||
if results:
|
||||
data = results[0]
|
||||
return data.get("syncedLyrics") or data.get("plainLyrics")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return None
|
||||
|
||||
|
||||
class TokenExpired(Exception):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user