Allow fetchart to manipulate cover art candidates using all selected options #5440
+244
−322
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fixes #4452.
Also, addresses conversations around candidate validation and refactoring ArtResizer to manipulate cover art in one go.
See #4133 (comment)
I felt that the cover art candidate validation was doing more than it should. In no instance where a candidate was considered for any manipulation was
CANDIDATE_BAD
returned, so I interpreted that as the candidate being valid. I adapted the work done in #4606 along with some of the feedback it received and used the pattern of returningTrue
orFalse
. I also interpretedCANDIDATE_EXACT
to mean that no further checks are needed, so returned straight away in cases whereCANDIDATE_EXACT
was returned before.Now, the Candidate convert method is responsible for determining if any manipulation is needed, puts all those options into one object, and passes them to ArtResizer.convert if manipulation is needed.
I tried to make the new
convert
functions behave the same way thatresize
,convert_format
, anddeinterlace
worked while combining their functionality. Reviewers should double check this. The only difference is that I no longer explicitly deinterlace unless the deinterlace option is set.To Do
Documentation(bugfix and refactor)