snejus / beetcamp

Bandcamp autotagger source for beets (http://beets.io)
GNU General Public License v2.0
64 stars 11 forks source link

Ignore non-bandcamp URLs #17

Closed arogl closed 3 years ago

arogl commented 3 years ago

I get the following if I enter any non-bandcamp URL, so I have to diable bandcamp plugin

[A]pply, More candidates, Skip, Use as-is, as Tracks, Group albums,
Enter search, enter Id, aBort? i
Enter release ID: https://www.discogs.com/Nightwish-Angels-Fall-First/release/2709470
Tagging Nightwish - Angels Fall First
Searching for album ID: https://www.discogs.com/Nightwish-Angels-Fall-First/release/2709470
Requesting MusicBrainz release https://www.discogs.com/Nightwish-Angels-Fall-First/release/2709470
Invalid MBID (https://www.discogs.com/Nightwish-Angels-Fall-First/release/2709470).
discogs: Searching for release https://www.discogs.com/Nightwish-Angels-Fall-First/release/2709470
discogs: Searching for master release 2765
Sending event: albuminfo_received
Candidate: Nightwish - Angels Fall First (2709470)
Computing track assignment...
...done.
Success. Distance: 0.49
beatport: Searching for release https://www.discogs.com/Nightwish-Angels-Fall-First/release/2709470
beatport: Not a valid Beatport release ID.
Traceback (most recent call last):
  File "/home/arogl/.local/bin/beet", line 33, in <module>
    sys.exit(load_entry_point('beets', 'console_scripts', 'beet')())
  File "/mnt/h/Git/beets/beets/ui/__init__.py", line 1291, in main
    _raw_main(args)
  File "/mnt/h/Git/beets/beets/ui/__init__.py", line 1278, in _raw_main
    subcommand.func(lib, suboptions, subargs)
  File "/mnt/h/Git/beets/beets/ui/commands.py", line 973, in import_func
    import_files(lib, paths, query)
  File "/mnt/h/Git/beets/beets/ui/commands.py", line 943, in import_files
    session.run()
  File "/mnt/h/Git/beets/beets/importer.py", line 343, in run
    pl.run_sequential()
  File "/mnt/h/Git/beets/beets/util/pipeline.py", line 386, in run_sequential
    list(self.pull())
  File "/mnt/h/Git/beets/beets/util/pipeline.py", line 463, in pull
    out = coro.send(msg)
  File "/mnt/h/Git/beets/beets/util/pipeline.py", line 171, in coro
    task = func(*(args + (task,)))
  File "/mnt/h/Git/beets/beets/importer.py", line 1401, in user_query
    task.choose_match(session)
  File "/mnt/h/Git/beets/beets/importer.py", line 858, in choose_match
    choice = session.choose_match(self)
  File "/mnt/h/Git/beets/beets/ui/commands.py", line 743, in choose_match
    post_choice = choice.callback(self, task)
  File "/mnt/h/Git/beets/beets/ui/commands.py", line 674, in manual_id
    _, _, prop = autotag.tag_album(
  File "/mnt/h/Git/beets/beets/autotag/match.py", line 424, in tag_album
    for id_candidate in hooks.albums_for_id(search_id):
  File "/mnt/h/Git/beets/beets/autotag/hooks.py", line 584, in albums_for_id
    for a in plugins.album_for_id(album_id):
  File "/mnt/h/Git/beets/beets/plugins.py", line 409, in album_for_id
    album = plugin.album_for_id(album_id)
  File "/home/arogl/.local/lib/python3.8/site-packages/beetsplug/bandcamp/__init__.py", line 246, in album_for_id
    return self.get_album_info(album_id)
  File "/home/arogl/.local/lib/python3.8/site-packages/beetsplug/bandcamp/__init__.py", line 257, in get_album_info
    guru = self.guru(url, html=self._get(url))
  File "/home/arogl/.local/lib/python3.8/site-packages/beetsplug/bandcamp/__init__.py", line 152, in guru
    self._gurucache[url] = Metaguru(html, self.media)
  File "/home/arogl/.local/lib/python3.8/site-packages/beetsplug/bandcamp/_metaguru.py", line 199, in __init__
    self.meta = json.loads(match.group())
  File "/usr/lib/python3.8/json/__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.8/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.8/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 5 (char 4)

You can see it knows it is not a beatport release, but tries to parse the invalid/empty JSON response

snejus commented 3 years ago

Thanks for reporting this @arogl, will address it in the next patch release!

snejus commented 3 years ago

This should now be fixed in 0.9.3.