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

View File

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