lyrics: Fallback to plain lyrics if synced not available

This commit is contained in:
Edgars Supe 2024-01-25 19:19:37 +02:00
parent 755e825928
commit 09360259cc
3 changed files with 20 additions and 1 deletions

View file

@ -277,7 +277,7 @@ class LRCLib(Backend):
return None
if self.config["synced"]:
return data.get("syncedLyrics")
return data.get("syncedLyrics") or data.get("plainLyrics")
return data.get("plainLyrics")

View file

@ -8,6 +8,10 @@ Unreleased
New features:
Bug fixes:
* :doc:`plugins/lyrics`: LRCLib will fallback to plain lyrics if synced lyrics
are not found and `synced` flag is set to `yes`.
For packagers:
Other changes:

View file

@ -620,6 +620,7 @@ class LRCLibLyricsTest(unittest.TestCase):
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
self.plugin.config["synced"] = False
lyrics = lrclib.fetch("la", "la", "la", 999)
assert lyrics == mock_response["plainLyrics"]
@ -627,6 +628,19 @@ class LRCLibLyricsTest(unittest.TestCase):
lyrics = lrclib.fetch("la", "la", "la", 999)
assert lyrics == mock_response["syncedLyrics"]
@patch("beetsplug.lyrics.requests.get")
def test_fetch_synced_lyrics_fallback(self, mock_get):
mock_response = {
"syncedLyrics": "",
"plainLyrics": "la la la",
}
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
self.plugin.config["synced"] = True
lyrics = lrclib.fetch("la", "la", "la", 999)
assert lyrics == mock_response["plainLyrics"]
@patch("beetsplug.lyrics.requests.get")
def test_fetch_plain_lyrics(self, mock_get):
mock_response = {
@ -636,6 +650,7 @@ class LRCLibLyricsTest(unittest.TestCase):
mock_get.return_value.json.return_value = mock_response
mock_get.return_value.status_code = 200
self.plugin.config["synced"] = False
lyrics = lrclib.fetch("la", "la", "la", 999)
assert lyrics == mock_response["plainLyrics"]