diff --git a/beetsplug/lyrics.py b/beetsplug/lyrics.py index 800e0302a..15e02cf4f 100644 --- a/beetsplug/lyrics.py +++ b/beetsplug/lyrics.py @@ -51,6 +51,7 @@ except ImportError: class HTMLParseError(Exception): pass +from beets.autotag.hooks import string_dist from beets import plugins from beets import ui import beets @@ -233,6 +234,7 @@ class Backend: def __init__(self, config, log): self._log = log + self.config = config @staticmethod def _encode(s): @@ -461,7 +463,7 @@ class Tekstowo(Backend): if not song_page_html: return None - return self.extract_lyrics(song_page_html) + return self.extract_lyrics(song_page_html, artist, title) def parse_search_results(self, html): html = _scrape_strip_cruft(html) @@ -493,7 +495,7 @@ class Tekstowo(Backend): return self.BASE_URL + link.get('href') - def extract_lyrics(self, html): + def extract_lyrics(self, html, artist, title): html = _scrape_strip_cruft(html) html = _scrape_merge_paragraphs(html) @@ -501,6 +503,24 @@ class Tekstowo(Backend): if not soup: return None + info_div = soup.find("div", class_="col-auto") + if not info_div: + return None + + info_elements = info_div.find_all("a") + if not info_elements: + return None + + html_title = info_elements[-1].get_text() + html_artist = info_elements[-2].get_text() + + title_dist = string_dist(html_title, title) + artist_dist = string_dist(html_artist, artist) + + thresh = self.config['dist_thresh'].get(float) + if title_dist > thresh or artist_dist > thresh: + return None + lyrics_div = soup.select("div.song-text > div.inner-text") if not lyrics_div: return None @@ -724,6 +744,7 @@ class LyricsPlugin(plugins.BeetsPlugin): 'force': False, 'local': False, 'sources': self.SOURCES, + 'dist_thresh': 0.1, }) self.config['bing_client_secret'].redact = True self.config['google_API_key'].redact = True diff --git a/docs/changelog.rst b/docs/changelog.rst old mode 100644 new mode 100755 index 3703f422e..c7f3eb614 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -119,6 +119,9 @@ Bug fixes: * :doc:`/plugins/lastgenre`: Fix a duplicated entry for trip hop in the default genre list. :bug:`4510` +* :doc:`plugins/lyrics`: Fixed issue with Tekstowo backend not actually checking + if the found song matches. + :bug:`4406` For packagers: diff --git a/test/rsrc/lyrics/tekstowopl/piosenka24kgoldncityofangels1.txt b/test/rsrc/lyrics/tekstowopl/piosenka24kgoldncityofangels1.txt new file mode 100755 index 000000000..de91cc339 --- /dev/null +++ b/test/rsrc/lyrics/tekstowopl/piosenka24kgoldncityofangels1.txt @@ -0,0 +1,910 @@ + +
+ + + + + + ++ Historia edycji tekstu + +
| Rok wydania: | 2019 Edytuj metrykę |
|---|---|
| Płyty: | Dropped Outta College |
Największy serwis z tekstami piosenek w Polsce. Każdy może znaleźć u nas teksty piosenek, teledyski oraz tłumaczenia swoich ulubionych utworów.
Zachęcamy wszystkich użytkowników do dodawania nowych tekstów, tłumaczeń i teledysków!
+ Historia edycji tekstu + +
+ Niestety nikt nie dodał jeszcze tłumaczenia tego utworu. +
++ Dodaj tłumaczenie lub wyślij prośbę o tłumaczenie +
+ ++
| Autor: | (brak) Edytuj metrykę |
|---|
Największy serwis z tekstami piosenek w Polsce. Każdy może znaleźć u nas teksty piosenek, teledyski oraz tłumaczenia swoich ulubionych utworów.
Zachęcamy wszystkich użytkowników do dodawania nowych tekstów, tłumaczeń i teledysków!
| Ścieżka dźwiękowa: |
|---|
Największy serwis z tekstami piosenek w Polsce. Każdy może znaleźć u nas teksty piosenek, teledyski oraz tłumaczenia swoich ulubionych utworów.
Zachęcamy wszystkich użytkowników do dodawania nowych tekstów, tłumaczeń i teledysków!
Największy serwis z tekstami piosenek w Polsce. Każdy może znaleźć u nas teksty piosenek, teledyski oraz tłumaczenia swoich ulubionych utworów.
Zachęcamy wszystkich użytkowników do dodawania nowych tekstów, tłumaczeń i teledysków!
Największy serwis z tekstami piosenek w Polsce. Każdy może znaleźć u nas teksty piosenek, teledyski oraz tłumaczenia swoich ulubionych utworów.
Zachęcamy wszystkich użytkowników do dodawania nowych tekstów, tłumaczeń i teledysków!
Komentarze (0):
+ +