diff --git a/beets/util/lyrics.py b/beets/util/lyrics.py index 18d886e7f0..e3909394ed 100644 --- a/beets/util/lyrics.py +++ b/beets/util/lyrics.py @@ -105,7 +105,7 @@ def _split_lines(self) -> list[tuple[str, str]]: """ return [ (m[1], m[2]) if (m := self.LINE_PARTS_PAT.match(line)) else ("", "") - for line in self.text.splitlines() + for line in (self.text or "").splitlines() ] @cached_property diff --git a/beetsplug/lyrics.py b/beetsplug/lyrics.py index 0e7c986cb8..62f85c7651 100644 --- a/beetsplug/lyrics.py +++ b/beetsplug/lyrics.py @@ -398,10 +398,10 @@ def fetch( for group in self.fetch_candidates(artist, title, album, length): candidates = [evaluate_item(item) for item in group] if item := self.pick_best_match(candidates): - lyrics = item.get_text(self.config["synced"].get(bool)) - return Lyrics( - lyrics, self.__class__.name, f"{self.GET_URL}/{item.id}" - ) + if lyrics := item.get_text(self.config["synced"].get(bool)): + return Lyrics( + lyrics, self.__class__.name, f"{self.GET_URL}/{item.id}" + ) return None diff --git a/test/plugins/test_lyrics.py b/test/plugins/test_lyrics.py index 1251043774..7b79dee3d4 100644 --- a/test/plugins/test_lyrics.py +++ b/test/plugins/test_lyrics.py @@ -644,6 +644,11 @@ def test_synced_config_option( "plain", id="plain by default", ), + pytest.param( + [lyrics_match(syncedLyrics=None, plainLyrics=None)], + None, + id="no lyrics when both fields are null", + ), pytest.param( [ lyrics_match(