Allow to pick up a 'Other' image if no 'Front' or 'Media' image is found, fixes #718
This commit is contained in:
@@ -508,9 +508,9 @@ namespace lms::scanner
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociatePlayListTracks>(params));
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepUpdateLibraryFields>(params));
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateReleaseImages>(params));
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateArtistImages>(params)); // must come after ScanStepAssociateReleaseImages
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateMediumImages>(params)); // must come after ScanStepAssociateReleaseImages
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateTrackImages>(params)); // must come after ScanStepAssociateMediumImages and ScanStepAssociateReleaseImages
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateArtistImages>(params)); // must come after ScanStepAssociateReleaseImages (because and artist image can fallback on a release image)
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateMediumImages>(params)); // must come after ScanStepAssociateReleaseImages (because and medium image can fallback on a release image)
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateTrackImages>(params)); // must come after ScanStepAssociateMediumImages and ScanStepAssociateReleaseImages (because and track image can fallback on a medium or release image)
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateExternalLyrics>(params));
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepRemoveOrphanedDbEntries>(params));
|
||||
_scanSteps.emplace_back(std::make_unique<ScanStepCompact>(params));
|
||||
|
||||
@@ -151,7 +151,7 @@ namespace lms::scanner
|
||||
if (artwork)
|
||||
return artwork;
|
||||
|
||||
// Fallback on embedded media image
|
||||
// Fallback on embedded Media image
|
||||
{
|
||||
db::TrackEmbeddedImage::FindParameters params;
|
||||
params.setRelease(release->getId());
|
||||
@@ -163,6 +163,18 @@ namespace lms::scanner
|
||||
});
|
||||
}
|
||||
|
||||
// Fallback on embedded Other image, as some tracks may be badly tagged
|
||||
{
|
||||
db::TrackEmbeddedImage::FindParameters params;
|
||||
params.setRelease(release->getId());
|
||||
params.setImageType(db::ImageType::Other);
|
||||
params.setSortMethod(db::TrackEmbeddedImageSortMethod::DiscNumberThenTrackNumberThenSizeDesc);
|
||||
db::TrackEmbeddedImage::find(session, params, [&](const db::TrackEmbeddedImage::pointer& image) {
|
||||
if (!artwork)
|
||||
artwork = db::Artwork::find(session, image->getId());
|
||||
});
|
||||
}
|
||||
|
||||
return artwork;
|
||||
}
|
||||
|
||||
@@ -282,7 +294,7 @@ namespace lms::scanner
|
||||
.releaseImageFileNames = _releaseImageFileNames,
|
||||
};
|
||||
|
||||
ReleaseArtworkAssociationContainer artistArtworkAssociations;
|
||||
ReleaseArtworkAssociationContainer releaseArtworkAssociations;
|
||||
auto processJobsDone = [&](std::span<std::unique_ptr<core::IJob>> jobs) {
|
||||
if (_abortScan)
|
||||
return;
|
||||
@@ -292,12 +304,12 @@ namespace lms::scanner
|
||||
const auto& associationJob{ static_cast<const ComputeReleaseArtworkAssociationsJob&>(*job) };
|
||||
const auto& artistAssociations{ associationJob.getAssociations() };
|
||||
|
||||
artistArtworkAssociations.insert(std::end(artistArtworkAssociations), std::cbegin(artistAssociations), std::cend(artistAssociations));
|
||||
releaseArtworkAssociations.insert(std::end(releaseArtworkAssociations), std::cbegin(artistAssociations), std::cend(artistAssociations));
|
||||
|
||||
context.currentStepStats.processedElems += associationJob.getProcessedReleaseCount();
|
||||
}
|
||||
|
||||
updateReleasePreferredArtworks(session, artistArtworkAssociations, true);
|
||||
updateReleasePreferredArtworks(session, releaseArtworkAssociations, true);
|
||||
_progressCallback(context.currentStepStats);
|
||||
};
|
||||
|
||||
@@ -311,6 +323,6 @@ namespace lms::scanner
|
||||
queue.finish();
|
||||
|
||||
// process all remaining associations
|
||||
updateReleasePreferredArtworks(session, artistArtworkAssociations, false);
|
||||
updateReleasePreferredArtworks(session, releaseArtworkAssociations, false);
|
||||
}
|
||||
} // namespace lms::scanner
|
||||
|
||||
Reference in New Issue
Block a user