Use a better default search string from comic files

This commit is contained in:
Luis Ángel San Martín 2025-05-05 19:20:51 +02:00
parent dfb1cb9b70
commit 6b1987a16a
2 changed files with 25 additions and 7 deletions

View File

@ -143,9 +143,7 @@ void ComicVineDialog::goNext()
showLoading(tr("Looking for volume..."));
// TODO: option to handle exact matches?
// TODO: parse the file name to create better searches
searchVolume({ title, 1, true });
searchVolume({ volumeSearchStringFromComic(comic), 1, true });
}
} else if (content->currentWidget() == selectVolumeWidget) {
currentVolumeId = selectVolumeWidget->getSelectedVolumeInfo().id;
@ -260,10 +258,11 @@ void ComicVineDialog::show()
mode = ScraperMode::SingleComic;
ComicDB singleComic = comics[0];
QString title = singleComic.getTitleOrFileName();
titleHeader->setSubTitle(title);
showSearchSingleComic(singleComic.getParentFolderName());
showSearchSingleComic(volumeSearchStringFromComic(singleComic));
} else if (comics.length() > 1) {
titleHeader->setSubTitle(tr("%1 comics selected").arg(comics.length()));
showSeriesQuestion();
@ -533,6 +532,25 @@ void ComicVineDialog::toggleSkipButton()
skipButton->setHidden(true);
}
QString ComicVineDialog::volumeSearchStringFromComic(const ComicDB &comic)
{
auto volume = comic.info.volume.toString().trimmed();
if (!volume.isEmpty())
return volume;
auto series = comic.info.series.toString().trimmed();
if (!series.isEmpty())
return series;
auto alternateSeries = comic.info.alternateSeries.toString().trimmed();
if (!alternateSeries.isEmpty())
return alternateSeries;
// extract information from file name
auto parentFolderName = comic.getParentFolderName();
return parentFolderName;
}
void ComicVineDialog::goToNextComic()
{
if (mode == ScraperMode::SingleComic || currentIndex == (comics.count() - 1)) {
@ -543,11 +561,11 @@ void ComicVineDialog::goToNextComic()
currentIndex++;
ComicDB comic = comics[currentIndex];
QString title = comic.getTitleOrFileName();
titleHeader->setSubTitle(tr("comic %1 of %2 - %3").arg(currentIndex + 1).arg(comics.length()).arg(title));
// TODO: parse title
showSearchSingleComic(title);
showSearchSingleComic(volumeSearchStringFromComic(comic));
}
void ComicVineDialog::clearState()

View File

@ -66,8 +66,8 @@ protected slots:
private:
void clearState();
void toggleSkipButton();
QString volumeSearchStringFromComic(const ComicDB &comic);
enum class ScraperMode {
SingleComic, // the scraper has been opened for a single comic