You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When using beets on windows with the embedart plugin enabled with any setting enabled that uses imagemagick, it fails to detect imagemagick despite it being installed/available.
I did some poking around and while I'm inexperienced with python, it looks like the problem comes from this for statement:
When it runs "magick --version" the program returns the version properly, but the for loop doesn't break or exit so it then runs "convert --version" which returns an invalid command if it's not installed (or even if it is it seems). So when that happens, the "cls._version" variable is set as if the script never found imagemagick in the first place.
Adding a "break" after the "cls._legacy = legacy" line seems to let it go on to use imagemagick with no problems in my limited testing.
Unless this is all intended and it's my fault or on my end, in which case I apologize for wasting anyone's time.
Running this command in verbose (-vv) mode:
$ beet -vv --plugins=embedart embedart
Led to this problem:
user configuration: C:\Users\(profile)\AppData\Roaming\beets\config.yaml
data directory: C:\Users\(profile)\AppData\Roaming\beets
plugin paths:
ImageMagick version check failed: Command 'convert --version' returned non-zero exit status 4.
artresizer: method is PIL
embedart: ImageMagick 6.8.7 or higher not installed; 'compare_threshold' option ignored
Sending event: pluginload
Post "break" addition:
user configuration: C:\Users\(profile)\AppData\Roaming\beets\config.yaml
data directory: C:\Users\(profile)\AppData\Roaming\beets
plugin paths:
artresizer: method is ImageMagick
Sending event: pluginload
Setup
OS: Windows 10
Python version: 3.11.9
beets version: 2.0.0
Turning off plugins made problem go away (yes/no): n/a
Problem
When using beets on windows with the embedart plugin enabled with any setting enabled that uses imagemagick, it fails to detect imagemagick despite it being installed/available.
I did some poking around and while I'm inexperienced with python, it looks like the problem comes from this for statement:
beets/beets/util/artresizer.py
Line 83 in 54b2435
When it runs "magick --version" the program returns the version properly, but the for loop doesn't break or exit so it then runs "convert --version" which returns an invalid command if it's not installed (or even if it is it seems). So when that happens, the "cls._version" variable is set as if the script never found imagemagick in the first place.
beets/beets/util/artresizer.py
Lines 99 to 101 in 54b2435
Adding a "break" after the "cls._legacy = legacy" line seems to let it go on to use imagemagick with no problems in my limited testing.
Unless this is all intended and it's my fault or on my end, in which case I apologize for wasting anyone's time.
Running this command in verbose (
-vv
) mode:Led to this problem:
Post "break" addition:
Setup
My configuration (output of
beet config
) is:The text was updated successfully, but these errors were encountered: