-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update artresizer's ImageMagick commands to use the magick binary #3236
Update artresizer's ImageMagick commands to use the magick binary #3236
Conversation
Updated artresizer's ImageMagick commands to use the magick binary added in ImageMagick 7.x, rather than the legacy utilities ('convert', 'identify', etc.) This resolves an issue where beets is failing to detect or use ImageMagick on Windows even when it is set correctly on the PATH, which in turn restores functionality to the fetchart and embedart plugins on Windows. Closes #2093
Thanks! This seems like a good thing to do, but as a maintainer I'm contractually obligated to worry about backwards compatibility. How much do we need to worry about systems with only the older versions of IM, without the We do something similar in audioread to switch between |
You're right, it looks like the CentOS repos are still serving version 6.7 of ImageMagick. Even Ubuntu is on 6.9. Testing a solution now. |
When the `magick` binary is not available, artresizer will fall back to the "legacy" binaries (`convert`, `identify`, etc.)
Fixed various whitespace issues and a global variable reference to comply with flake8 linting.
`get_im_version` now returns an additional bool `isLegacy`, which indicates whether the the `magick` binary is accessible. It is stored in `self.im_legacy` on initialization of an `ArtResizer` object, and can be accessed via `ArtResizer.shared.im_legacy`
Fixes an error introduced in 1a6e0a7 where a TypeError exception was raised when calling `_check_method()` with no ImageMagick installation present.
How do you feel about this solution? Tested and working with both
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! This looks like it's on the right track. Here are a few coding suggestions.
- Refactored convert and identify command names to an ArtResizer member variable, set on ArtResizer init. Functions that use this info will now access it from there. - Changed the way `cmd` variables are written so that the command name and command args are assigned directly to `cmd`, rather than doing `command_output(cmd + args)` - `get_im_version()` will now always return a tuple containing two values: a tuple representing the version, and either a bool or None flag representing whether we should send legacy commands to ImageMagick - Improved readability of successful return value in `get_im_version()`
Thanks for the review! I've implemented the requested changes in 48be3a7. |
`get_im_version` should now always return a tuple containing: - index 0: a tuple representing the version - index 1: a bool or None, representing legacy status
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great; thank you!! Here is another round of low-level suggestions. Thanks for sticking with this! 😃
- Moved several variable assignments outside of try blocks - Added and clarified various comments and docstrings - Modified the command loop in `get_im_version()` to a slightly more readable approach - `get_im_version()` now returns None when ImageMagick is unavailable - Updated `ArtResizer._check_method` to handle our new returns in a way that is more readable - Fixed an issue where `get_im_version()` could crash if the regex search failed to find a match
Looks like Appveyor's failing tests because it's having issues setting up unrar in the test environment. 👌 Latest round of requested changes implemented in 278d87f. |
Update artresizer's ImageMagick commands to use the magick binary
Updated artresizer's ImageMagick commands to use the magick binary added in ImageMagick 7.x, rather than the legacy utilities ('convert', 'identify', etc.) This resolves an issue where beets is failing to detect or use ImageMagick on Windows even when it is set correctly on the PATH, which in turn restores functionality to the fetchart and embedart plugins on Windows.
Closes #2093