Keep existing artwork for tracks

Hello everyone,

Could someone please help (noob!) When I import tracks into beets that have existing artwork, the artwork is removed and replaced with a generic waveform image. Is there a config to run tracks through beets to correct metadata but keep existing artwork?

Could you please post the output of beet config and beet version? Beets shouldn’t be doing this by default.

Can you also try importing with -vvv and post the logs here?

Hi Jack,

I have the latest version of beets v1.6.0.

directory: ~/Music/NEW_MUSIC
library: ~/Music/NEW_MUSIC_DB/newmusic.blb

import:
   move: no
   copy: yes

paths: 
    default: /$albumartist/$album %aunique{}/$title %aunique{} 
    singleton: /$albumartist/$album %aunique{}/$title %aunique{} 
    comp: /Compilation/$album %aunique{}/$track $title %aunique{} 
    albumtype:soundtrack: Soundtracks/$album %aunique{}/$track $title %aunique{}

plugins: fetchart embedart zero the discogs beatport4 


fetchart:
   cautious: yes
   auto: yes
   minwidth: 0
   maxwidth: 0
   quality: 0
   max_filesize: 0
   enforce_ratio: no
   sources:
    – filesystem
    – coverart
    – itunes
    – amazon
    – albumart
   google_key: -----
   google_engine: ------
   store_source: no
   high_resolution: no
   deinterlace: no
   cover_format:
   
embedart:
   maxwidth: 0
   auto: yes
   compare_threshold: 0
   ifempty: no
   remove_art_file: no
   quality: 0

the:
   the: yes
   a: yes
   format: ‘{0}, {1}’
   strip: no
   patterns: []

zero:
   fields: comments
   comments: -> None
   update_database: true

discogs:
   index_tracks: yes
   user_token: --------
   source_weight: 0.0

beatport4:
   art: yes
   art_overwrite: no
   username: ------
   password: -------
   source_weight: 0.0

Seems that I have some errors for plugins?

beet import logging
** error loading plugin fetchart:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.fetchart'

** error loading plugin embedart:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.embedart'

** error loading plugin zero:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.zero'

** error loading plugin the:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.the'

** error loading plugin discogs:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.discogs'

** error loading plugin beatport4:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.beatport4'

There doesn’t seem to be anything obviously wrong with your configuration. Those errors don’t sound right (although I can’t imagine how missing plugins would cause beets to remove artwork) - looks similar to #3730. Is that the full log from an import with -vvv?

My first thought was the config but seems I’ve opened up a can of worms now! Thank you for the link, seems to be a similar issue.

Here is full log:

beet -vvv import
user configuration: /Users/jc/.config/beets/config.yaml
data directory: /Users/jc/.config/beets
plugin paths: /Users/jc/.local/lib/python3.8/site-packages/beetsplug
** error loading plugin fetchart:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.fetchart'

** error loading plugin embedart:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.embedart'

** error loading plugin zero:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.zero'

** error loading plugin the:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.the'

** error loading plugin discogs:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.discogs'

** error loading plugin beatport4:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets/plugins.py", line 268, in load_plugins
    namespace = __import__(modname, None, None)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ModuleNotFoundError: No module named 'beetsplug.beatport4'

Sending event: pluginload
library database: /Users/jc/Music/NEW_MUSIC_DB/newmusic.blb
library directory: /Users/jc/Music/NEW_MUSIC
Sending event: library_opened
error: no path specified

How did you install beets? It seems like it’s installed in /Library/Frameworks/Python.framework/Versions/3.11/lib/python3.11/site-packages/beets (i.e. system-wide), but it’s trying to pull plugins from /Users/jc/.local/lib/python3.8/site-packages/beetsplug (it should be the same site-packages path by default I believe).

So, I have uninstalled python and beats and re-installed, to see if it would correct but same error.

beets installation: pip install https://github.com/beetbox/beets/tarball/master

beets version 1.6.1

Python version 3.11.4

Any suggestions on how to fix this would be much appreciated.

Not sure if this is linked, but plugins seemed to be working fine before I installed extrafiles plugin? I have now uninstalled this.

I think the issue here is that you’ve got two copies of beets installed - a global installation and a user installation.

The global one is the one you installed with pip install, but it seems like the pip install --user beets-extrafiles (assuming you used the command from their documentation) installed a user copy too (as extrafiles has a dependency on beets).

Try pip uninstall --user beets and see if that fixes it.

Thanks very much Jack, seems to have fixed the problem! :grinning:
Now just the original, minor problem of keeping album artwork.

beet -vvv import 
user configuration: /Users/jc/.config/beets/config.yaml
data directory: /Users/jc/.config/beets
plugin paths: 
Sending event: pluginload
library database: /Users/jc/Music/NEW_MUSIC_DB/newmusic.blbpip3 uninstall
library directory: /Users/jc/Music/NEW_MUSIC
Sending event: library_opened
error: no path specified
beet version
beets version 1.6.0
Python version 3.11.4
plugins: beatport4, discogs, embedart, fetchart, the, zero

Do the source files have artwork embedded in them or is it a separate file?

Can you provide the logs of an import with -vvv? i.e. actually import an album - seeing the full logs of the import process might help us work out what’s happening.

Can you perform an import (still with -vvv) without the item already being in your library? fetchart only runs after an album has been imported and I think the logs from that will be useful.

I think the waveform icon is being provided by your OS. If you hit space with the file selected in Finder, what does Quick Look display for the artwork?

By the looks of things, fetchart never find any artwork for the album and beatport4 crashes whilst trying to apply artwork. It seems that this is a bug in the beatport4 plugin - it’s trying to access ImportTaks#item but that field doesn’t exist (although it does exist for singleton imports). It’s probably worth raising an issue on Samik081/beets-beatport4 (assuming that’s the plugin you’re using).

Yes, when I hit space it only shows waveform icon.

Thanks for clarifying the issue, I will contact developer as you recommended. These are in fact beatport tracks so artwork should be exactly the same.

Thanks for your help Jack :+1: