beetbox/beets

Multiple errors trying to fetch lyrics during import

Open

#5,998 opened on Sep 11, 2025

View on GitHub
 (14 comments) (0 reactions) (0 assignees)Python (1,837 forks)batch import
buggood first issuelyrics

Repository metrics

Stars
 (12,133 stars)
PR merge metrics
 (Avg merge 9d 12h) (46 merged PRs in 30d)

Description

Problem

I recently installed a newer version of Beets, v2.3.0, after not having used it for a while (probably a few releases, maybe version, ago). On my first attempt to import an album, I found that lyrics were not being successfully imported. After some trouble-shooting and searching through GitHub issues, I discovered there had been a change in parameter formatting for the Lyrics plug-in. So, I fixed that (i.e. changed sources: tekstowo to sources: [tekstowo]), which at least now attempted to fetch lyrics.

However, there are several errors happening that I am having trouble diagnosing. Here is verbose output:

beet -vv import "/home/dan/Music/Supertramp/The Very Best of Supertramp"
user configuration: /home/dan/.config/beets/config.yaml
data directory: /home/dan/.config/beets
plugin paths: 
ImageMagick version check failed: [Errno 2] No such file or directory: 'magick'
artresizer: method is ImageMagick
fetchart: google: Disabling art source due to missing key
fetchart: lastfm: Disabling art source due to missing key
Sending event: pluginload
library database: /home/dan/data/musiclibrary.blb
library directory: /home/dan/Music
Sending event: library_opened
Sending event: import_begin
Sending event: import_task_created
Sending event: import_task_start
Looking up: /home/dan/Music/Supertramp/The Very Best of Supertramp
Tagging Supertramp - The Very Best of Supertramp
Searching for discovered album ID: d78f95ef-a6ca-3b76-ba31-8c9f3654dc45
Requesting MusicBrainz release d78f95ef-a6ca-3b76-ba31-8c9f3654dc45
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_album_extract
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best of Supertramp (d78f95ef-a6ca-3b76-ba31-8c9f3654dc45)
Computing track assignment...
...done.
Success. Distance: 0.00
Album ID match recommendation is 3
Search terms: Supertramp - The Very Best of Supertramp
Album might be VA: False
Searching for MusicBrainz releases with: {'release': 'the very best of supertramp', 'artist': 'supertramp', 'tracks': '15'}
Requesting MusicBrainz release d78f95ef-a6ca-3b76-ba31-8c9f3654dc45
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_album_extract
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best of Supertramp (d78f95ef-a6ca-3b76-ba31-8c9f3654dc45)
Duplicate.
Requesting MusicBrainz release 64a679f2-93cc-4abc-a086-a4bd9549ba9c
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_album_extract
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best of Supertramp (64a679f2-93cc-4abc-a086-a4bd9549ba9c)
Computing track assignment...
...done.
Success. Distance: 0.12
Requesting MusicBrainz release eef6bb50-1fa5-4dd3-b6fe-6a2b4b7e8aea
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_album_extract
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best of Supertramp (eef6bb50-1fa5-4dd3-b6fe-6a2b4b7e8aea)
Computing track assignment...
...done.
Success. Distance: 0.32
Requesting MusicBrainz release 9fea56b3-ff57-333d-bca1-1a1ae485268e
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_album_extract
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best of Supertramp (9fea56b3-ff57-333d-bca1-1a1ae485268e)
Computing track assignment...
...done.
Success. Distance: 0.12
Requesting MusicBrainz release 9906fe09-a0b1-410b-aed5-1146c186de22
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_track_extract
Sending event: mb_album_extract
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best of Supertramp (9906fe09-a0b1-410b-aed5-1146c186de22)
Computing track assignment...
...done.
Success. Distance: 0.12
discogs: Searching for master release 25449
discogs: Searching for master release 25449
discogs: Searching for master release 25449
discogs: Searching for master release 25449
discogs: Searching for master release 560431
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best Of Supertramp (389572)
Computing track assignment...
...done.
Success. Distance: 0.41
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best Of Supertramp (983628)
Computing track assignment...
...done.
Success. Distance: 0.52
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best Of Supertramp (2558598)
Computing track assignment...
...done.
Success. Distance: 0.54
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best Of Supertramp (492403)
Computing track assignment...
...done.
Success. Distance: 0.43
Sending event: albuminfo_received
Candidate: Supertramp - The Very Best Of Supertramp 2 (782129)
Computing track assignment...
...done.
Success. Distance: 0.58
Evaluating 10 candidates.

/home/dan/Music/Supertramp/The Very Best of Supertramp (15 items)
Sending event: import_task_before_choice
Sending event: before_choose_candidate

  Match (100.0%):
  Supertramp - The Very Best of Supertramp
  MusicBrainz, CD, 1990, GB, A&M Records, 397 091-2, None
  https://musicbrainz.org/release/d78f95ef-a6ca-3b76-ba31-8c9f3654dc45
  * Artist: Supertramp
  * Album: The Very Best of Supertramp
➜ [A]pply, More candidates, Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? A
Sending event: import_task_choice
Sending event: import_task_apply
Replacing item 1: /home/dan/Music/Supertramp/The Very Best of Supertramp/01 School.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 2: /home/dan/Music/Supertramp/The Very Best of Supertramp/02 Goodbye Stranger.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 3: /home/dan/Music/Supertramp/The Very Best of Supertramp/03 The Logical Song.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 4: /home/dan/Music/Supertramp/The Very Best of Supertramp/04 Bloody Well Right.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 5: /home/dan/Music/Supertramp/The Very Best of Supertramp/05 Breakfast in America.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 6: /home/dan/Music/Supertramp/The Very Best of Supertramp/06 Rudy.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 7: /home/dan/Music/Supertramp/The Very Best of Supertramp/07 Take the Long Way Home.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 8: /home/dan/Music/Supertramp/The Very Best of Supertramp/08 Crime of the Century.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 9: /home/dan/Music/Supertramp/The Very Best of Supertramp/09 Dreamer.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 10: /home/dan/Music/Supertramp/The Very Best of Supertramp/10 Ain't Nobody but Me.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 11: /home/dan/Music/Supertramp/The Very Best of Supertramp/11 Hide in Your Shell.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 12: /home/dan/Music/Supertramp/The Very Best of Supertramp/12 From Now On.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 13: /home/dan/Music/Supertramp/The Very Best of Supertramp/13 Give a Little Bit.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 14: /home/dan/Music/Supertramp/The Very Best of Supertramp/14 It's Raining Again.mp3
Sending event: database_change
Sending event: item_removed
Replacing item 15: /home/dan/Music/Supertramp/The Very Best of Supertramp/15 Cannonball.mp3
Sending event: database_change
Sending event: database_change
Sending event: album_removed
Sending event: item_removed
15 of 15 items replaced
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Sending event: database_change
Reimported album 1. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp
Reimported album 1. Preserving flexible attributes ['media', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp
Reimported item 1. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/01 School.mp3
Reimported item 1. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/01 School.mp3
Sending event: database_change
Reimported item 2. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/02 Goodbye Stranger.mp3
Reimported item 2. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/02 Goodbye Stranger.mp3
Sending event: database_change
Reimported item 3. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/03 The Logical Song.mp3
Reimported item 3. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/03 The Logical Song.mp3
Sending event: database_change
Reimported item 4. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/04 Bloody Well Right.mp3
Reimported item 4. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/04 Bloody Well Right.mp3
Sending event: database_change
Reimported item 5. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/05 Breakfast in America.mp3
Reimported item 5. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/05 Breakfast in America.mp3
Sending event: database_change
Reimported item 6. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/06 Rudy.mp3
Reimported item 6. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/06 Rudy.mp3
Sending event: database_change
Reimported item 7. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/07 Take the Long Way Home.mp3
Reimported item 7. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/07 Take the Long Way Home.mp3
Sending event: database_change
Reimported item 8. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/08 Crime of the Century.mp3
Reimported item 8. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/08 Crime of the Century.mp3
Sending event: database_change
Reimported item 9. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/09 Dreamer.mp3
Reimported item 9. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/09 Dreamer.mp3
Sending event: database_change
Reimported item 10. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/10 Ain't Nobody but Me.mp3
Reimported item 10. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/10 Ain't Nobody but Me.mp3
Sending event: database_change
Reimported item 11. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/11 Hide in Your Shell.mp3
Reimported item 11. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/11 Hide in Your Shell.mp3
Sending event: database_change
Reimported item 12. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/12 From Now On.mp3
Reimported item 12. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/12 From Now On.mp3
Sending event: database_change
Reimported item 13. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/13 Give a Little Bit.mp3
Reimported item 13. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/13 Give a Little Bit.mp3
Sending event: database_change
Reimported item 14. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/14 It's Raining Again.mp3
Reimported item 14. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/14 It's Raining Again.mp3
Sending event: database_change
Reimported item 15. Preserving attribute ['added']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/15 Cannonball.mp3
Reimported item 15. Preserving flexible attributes ['track_alt', 'data_source']. Path: /home/dan/Music/Supertramp/The Very Best of Supertramp/15 Cannonball.mp3
Sending event: database_change
lyrics: LyricsPlugin: Fetching lyrics for Supertramp - School
lyrics: Tekstowo: Fetching HTML from https://www.tekstowo.pl/szukaj,School+Supertramp.html
Traceback (most recent call last):
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 238, in handle_request
    yield
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 1112, in get_lyrics
    if lyrics_info := backend.fetch(artist, title, *args):
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 532, in fetch
    for result in self.get_results(artist, title):
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 526, in get_results
    for candidate in self.search(artist, title):
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 592, in search
    if html := self.fetch_text(self.build_url(title, artist)):
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 219, in fetch_text
    r = r_session.get(url, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 557, in get
    return self.request('GET', url, **kwargs)
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 79, in request
    r.raise_for_status()
  File "/usr/lib/python3/dist-packages/requests/models.py", line 943, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://www.tekstowo.pl/szukaj,School+Supertramp.html

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/dan/.local/bin/beet", line 8, in <module>
    sys.exit(main())
  File "/home/dan/.local/lib/python3.10/site-packages/beets/ui/__init__.py", line 1870, in main
    _raw_main(args)
  File "/home/dan/.local/lib/python3.10/site-packages/beets/ui/__init__.py", line 1849, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/home/dan/.local/lib/python3.10/site-packages/beets/ui/commands.py", line 1394, in import_func
    import_files(lib, paths, query)
  File "/home/dan/.local/lib/python3.10/site-packages/beets/ui/commands.py", line 1330, in import_files
    session.run()
  File "/home/dan/.local/lib/python3.10/site-packages/beets/importer.py", line 385, in run
    pl.run_parallel(QUEUE_SIZE)
  File "/home/dan/.local/lib/python3.10/site-packages/beets/util/pipeline.py", line 469, in run_parallel
    raise exc_info[1].with_traceback(exc_info[2])
  File "/home/dan/.local/lib/python3.10/site-packages/beets/util/pipeline.py", line 334, in run
    out = self.coro.send(msg)
  File "/home/dan/.local/lib/python3.10/site-packages/beets/util/pipeline.py", line 217, in coro
    func(*(args + (task,)))
  File "/home/dan/.local/lib/python3.10/site-packages/beets/importer.py", line 1735, in plugin_stage
    func(session, task)
  File "/home/dan/.local/lib/python3.10/site-packages/beets/plugins.py", line 203, in wrapper
    return func(*args, **kwargs)
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 1065, in imported
    self.add_item_lyrics(item, False)
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 1091, in add_item_lyrics
    if lyrics := self.find_lyrics(item):
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 1078, in find_lyrics
    return "\n\n---\n\n".join(next(filter(None, matches), []))
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 1070, in <genexpr>
    [
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 1073, in <listcomp>
    if (lyrics := self.get_lyrics(a, t, album, length))
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 1111, in get_lyrics
    with backend.handle_request():
  File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/home/dan/.local/lib/python3.10/site-packages/beetsplug/lyrics.py", line 239, in handle_request
    except requests.JSONDecodeError:
AttributeError: module 'requests' has no attribute 'JSONDecodeError'

Here are my config.yaml data:

directory: ~/Music
library: ~/data/musiclibrary.blb
asciify_paths: yes
id3v23: yes
plugins: lyrics fetchart zero embedart scrub importreplace discogs

ui:
    color: yes

import:
    move: yes
    write: yes
    log: /home/dan/Music/import-log.txt
    timid: yes

zero:
    fields: comments day
    
lyrics:
    force: no
    google_API_key: AIzaSyB0_CqS60uoEzp81MVYZNN2-pP_8kmMIrQ
    # sources: musixmatch google
    sources: [tekstowo]

embedart:
    maxwidth: 300
    remove_art_file: yes

fetchart:
    cautious: true
    sources: filesystem itunes

syncpl:
    dest: /media/dan/HulkTunes
    playlist_dir: /home/dan/Desktop
    include_playlist: yes
    delete: no
    playlists: HulkTunes

importreplace:
  replacements:
    - item_fields: title artist artist_sort artist_credit
      album_fields: album artist artist_sort artist_credit
      replace:
        '[\u2018-\u201B]': ''''
        '[\u201C-\u201F]': '"'
        '[\u2010-\u2015]': '-'

Setup

  • OS: Linux Mint 21.3
  • Python version: 3.10.12
  • beets version: 2.3.0
  • plugins: discogs, embedart, fetchart, importreplace, lyrics, scrub, zero
  • Turning off plugins made problem go away (yes/no): N/A

Other info

After noticing the requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://www.tekstowo.pl/szukaj,School+Supertramp.html message, I shut down my VPN client and tried again, but with the same results.

Contributor guide