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<ScanStepAssociatePlayListTracks>(params));
|
||||||
_scanSteps.emplace_back(std::make_unique<ScanStepUpdateLibraryFields>(params));
|
_scanSteps.emplace_back(std::make_unique<ScanStepUpdateLibraryFields>(params));
|
||||||
_scanSteps.emplace_back(std::make_unique<ScanStepAssociateReleaseImages>(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<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
|
_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
|
_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<ScanStepAssociateExternalLyrics>(params));
|
||||||
_scanSteps.emplace_back(std::make_unique<ScanStepRemoveOrphanedDbEntries>(params));
|
_scanSteps.emplace_back(std::make_unique<ScanStepRemoveOrphanedDbEntries>(params));
|
||||||
_scanSteps.emplace_back(std::make_unique<ScanStepCompact>(params));
|
_scanSteps.emplace_back(std::make_unique<ScanStepCompact>(params));
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ namespace lms::scanner
|
|||||||
if (artwork)
|
if (artwork)
|
||||||
return artwork;
|
return artwork;
|
||||||
|
|
||||||
// Fallback on embedded media image
|
// Fallback on embedded Media image
|
||||||
{
|
{
|
||||||
db::TrackEmbeddedImage::FindParameters params;
|
db::TrackEmbeddedImage::FindParameters params;
|
||||||
params.setRelease(release->getId());
|
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;
|
return artwork;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -282,7 +294,7 @@ namespace lms::scanner
|
|||||||
.releaseImageFileNames = _releaseImageFileNames,
|
.releaseImageFileNames = _releaseImageFileNames,
|
||||||
};
|
};
|
||||||
|
|
||||||
ReleaseArtworkAssociationContainer artistArtworkAssociations;
|
ReleaseArtworkAssociationContainer releaseArtworkAssociations;
|
||||||
auto processJobsDone = [&](std::span<std::unique_ptr<core::IJob>> jobs) {
|
auto processJobsDone = [&](std::span<std::unique_ptr<core::IJob>> jobs) {
|
||||||
if (_abortScan)
|
if (_abortScan)
|
||||||
return;
|
return;
|
||||||
@@ -292,12 +304,12 @@ namespace lms::scanner
|
|||||||
const auto& associationJob{ static_cast<const ComputeReleaseArtworkAssociationsJob&>(*job) };
|
const auto& associationJob{ static_cast<const ComputeReleaseArtworkAssociationsJob&>(*job) };
|
||||||
const auto& artistAssociations{ associationJob.getAssociations() };
|
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();
|
context.currentStepStats.processedElems += associationJob.getProcessedReleaseCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateReleasePreferredArtworks(session, artistArtworkAssociations, true);
|
updateReleasePreferredArtworks(session, releaseArtworkAssociations, true);
|
||||||
_progressCallback(context.currentStepStats);
|
_progressCallback(context.currentStepStats);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -311,6 +323,6 @@ namespace lms::scanner
|
|||||||
queue.finish();
|
queue.finish();
|
||||||
|
|
||||||
// process all remaining associations
|
// process all remaining associations
|
||||||
updateReleasePreferredArtworks(session, artistArtworkAssociations, false);
|
updateReleasePreferredArtworks(session, releaseArtworkAssociations, false);
|
||||||
}
|
}
|
||||||
} // namespace lms::scanner
|
} // namespace lms::scanner
|
||||||
|
|||||||
Reference in New Issue
Block a user