If the card info is null, there's no point in trying to look for the sets.

This commit is contained in:
Lukas Brübach 2024-11-14 20:26:57 +01:00
parent f7fa8521b7
commit 58af3cdce8
2 changed files with 56 additions and 54 deletions

View file

@ -175,8 +175,8 @@ void PictureLoaderWorker::processLoadQueue()
QString cardName = cardBeingLoaded.getCard()->getName(); QString cardName = cardBeingLoaded.getCard()->getName();
QString correctedCardName = cardBeingLoaded.getCard()->getCorrectedName(); QString correctedCardName = cardBeingLoaded.getCard()->getCorrectedName();
qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName //qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName
<< "]: Trying to load picture"; // << "]: Trying to load picture";
if (CardDatabaseManager::getInstance()->isUuidForPreferredPrinting( if (CardDatabaseManager::getInstance()->isUuidForPreferredPrinting(
cardName, cardBeingLoaded.getCard()->getPixmapCacheKey())) { cardName, cardBeingLoaded.getCard()->getPixmapCacheKey())) {
@ -185,8 +185,8 @@ void PictureLoaderWorker::processLoadQueue()
} }
} }
qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName //qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName
<< "]: No custom picture, trying to download"; // << "]: No custom picture, trying to download";
cardsToDownload.append(cardBeingLoaded); cardsToDownload.append(cardBeingLoaded);
cardBeingLoaded.clear(); cardBeingLoaded.clear();
if (!downloadRunning) { if (!downloadRunning) {
@ -228,22 +228,22 @@ bool PictureLoaderWorker::cardImageExistsOnDisk(QString &setName, QString &corre
for (const auto &_picsPath : picsPaths) { for (const auto &_picsPath : picsPaths) {
imgReader.setFileName(_picsPath); imgReader.setFileName(_picsPath);
if (imgReader.read(&image)) { if (imgReader.read(&image)) {
qDebug().nospace() << "PictureLoader: [card: " << correctedCardname << " set: " << setName //qDebug().nospace() << "PictureLoader: [card: " << correctedCardname << " set: " << setName
<< "]: Picture found on disk."; // << "]: Picture found on disk.";
imageLoaded(cardBeingLoaded.getCard(), image); imageLoaded(cardBeingLoaded.getCard(), image);
return true; return true;
} }
imgReader.setFileName(_picsPath + ".full"); imgReader.setFileName(_picsPath + ".full");
if (imgReader.read(&image)) { if (imgReader.read(&image)) {
qDebug().nospace() << "PictureLoader: [card: " << correctedCardname << " set: " << setName //qDebug().nospace() << "PictureLoader: [card: " << correctedCardname << " set: " << setName
<< "]: Picture.full found on disk."; // << "]: Picture.full found on disk.";
imageLoaded(cardBeingLoaded.getCard(), image); imageLoaded(cardBeingLoaded.getCard(), image);
return true; return true;
} }
imgReader.setFileName(_picsPath + ".xlhq"); imgReader.setFileName(_picsPath + ".xlhq");
if (imgReader.read(&image)) { if (imgReader.read(&image)) {
qDebug().nospace() << "PictureLoader: [card: " << correctedCardname << " set: " << setName //qDebug().nospace() << "PictureLoader: [card: " << correctedCardname << " set: " << setName
<< "]: Picture.xlhq found on disk."; // << "]: Picture.xlhq found on disk.";
imageLoaded(cardBeingLoaded.getCard(), image); imageLoaded(cardBeingLoaded.getCard(), image);
return true; return true;
} }
@ -259,6 +259,8 @@ static int parse(const QString &urlTemplate,
std::function<QString(const QString &)> getProperty, std::function<QString(const QString &)> getProperty,
QMap<QString, QString> &transformMap) QMap<QString, QString> &transformMap)
{ {
(void) cardName;
(void) setName;
static const QRegularExpression rxFillWith("^(.+)_fill_with_(.+)$"); static const QRegularExpression rxFillWith("^(.+)_fill_with_(.+)$");
static const QRegularExpression rxSubStr("^(.+)_substr_(\\d+)_(\\d+)$"); static const QRegularExpression rxSubStr("^(.+)_substr_(\\d+)_(\\d+)$");
@ -289,18 +291,18 @@ static int parse(const QString &urlTemplate,
} }
QString propertyValue = getProperty(cardPropertyName); QString propertyValue = getProperty(cardPropertyName);
if (propertyValue.isEmpty()) { if (propertyValue.isEmpty()) {
qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName << "]: Requested " //qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName << "]: Requested "
<< propType << "property (" << cardPropertyName << ") for Url template (" << urlTemplate // << propType << "property (" << cardPropertyName << ") for Url template (" << urlTemplate
<< ") is not available"; // << ") is not available";
return 1; return 1;
} else { } else {
int propLength = propertyValue.length(); int propLength = propertyValue.length();
if (subStrLen > 0) { if (subStrLen > 0) {
if (subStrPos + subStrLen > propLength) { if (subStrPos + subStrLen > propLength) {
qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName << "]: Requested " //qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName << "]: Requested "
<< propType << " property (" << cardPropertyName << ") for Url template (" // << propType << " property (" << cardPropertyName << ") for Url template ("
<< urlTemplate << ") is smaller than substr specification (" << subStrPos // << urlTemplate << ") is smaller than substr specification (" << subStrPos
<< " + " << subStrLen << " > " << propLength << ")"; // << " + " << subStrLen << " > " << propLength << ")";
return 1; return 1;
} else { } else {
propertyValue = propertyValue.mid(subStrPos, subStrLen); propertyValue = propertyValue.mid(subStrPos, subStrLen);
@ -311,9 +313,9 @@ static int parse(const QString &urlTemplate,
if (!fillWith.isEmpty()) { if (!fillWith.isEmpty()) {
int fillLength = fillWith.length(); int fillLength = fillWith.length();
if (fillLength < propLength) { if (fillLength < propLength) {
qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName << "]: Requested " //qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName << "]: Requested "
<< propType << " property (" << cardPropertyName << ") for Url template (" // << propType << " property (" << cardPropertyName << ") for Url template ("
<< urlTemplate << ") is longer than fill specification (" << fillWith << ")"; // << urlTemplate << ") is longer than fill specification (" << fillWith << ")";
return 1; return 1;
} else { } else {
@ -380,9 +382,9 @@ QString PictureToLoad::transformUrl(const QString &urlTemplate) const
* populated in this card, so it should return an empty string, * populated in this card, so it should return an empty string,
* indicating an invalid Url. * indicating an invalid Url.
*/ */
qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName //qDebug().nospace() << "PictureLoader: [card: " << cardName << " set: " << setName
<< "]: Requested information (" << prop << ") for Url template (" << urlTemplate // << "]: Requested information (" << prop << ") for Url template (" << urlTemplate
<< ") is not available"; // << ") is not available";
return QString(); return QString();
} }
} }
@ -410,9 +412,9 @@ void PictureLoaderWorker::startNextPicDownload()
picDownloadFailed(); picDownloadFailed();
} else { } else {
QUrl url(picUrl); QUrl url(picUrl);
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getCorrectedName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getCorrectedName()
<< " set: " << cardBeingDownloaded.getSetName() << "]: Trying to fetch picture from url " // << " set: " << cardBeingDownloaded.getSetName() << "]: Trying to fetch picture from url "
<< url.toDisplayString(); // << url.toDisplayString();
makeRequest(url); makeRequest(url);
} }
} }
@ -428,10 +430,10 @@ void PictureLoaderWorker::picDownloadFailed()
loadQueue.prepend(cardBeingDownloaded); loadQueue.prepend(cardBeingDownloaded);
mutex.unlock(); mutex.unlock();
} else { } else {
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getCorrectedName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getCorrectedName()
<< " set: " << cardBeingDownloaded.getSetName() << "]: Picture NOT found, " // << " set: " << cardBeingDownloaded.getSetName() << "]: Picture NOT found, "
<< (picDownload ? "download failed" : "downloads disabled") // << (picDownload ? "download failed" : "downloads disabled")
<< ", no more url combinations to try: BAILING OUT"; // << ", no more url combinations to try: BAILING OUT";
imageLoaded(cardBeingDownloaded.getCard(), QImage()); imageLoaded(cardBeingDownloaded.getCard(), QImage());
cardBeingDownloaded.clear(); cardBeingDownloaded.clear();
} }
@ -459,19 +461,19 @@ void PictureLoaderWorker::picDownloadFinished(QNetworkReply *reply)
if (reply->error()) { if (reply->error()) {
if (isFromCache) { if (isFromCache) {
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName()
<< " set: " << cardBeingDownloaded.getSetName() // << " set: " << cardBeingDownloaded.getSetName()
<< "]: Removing corrupted cache file for url " << reply->url().toDisplayString() // << "]: Removing corrupted cache file for url " << reply->url().toDisplayString()
<< " and retrying (" << reply->errorString() << ")"; // << " and retrying (" << reply->errorString() << ")";
networkManager->cache()->remove(reply->url()); networkManager->cache()->remove(reply->url());
makeRequest(reply->url()); makeRequest(reply->url());
} else { } else {
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName()
<< " set: " << cardBeingDownloaded.getSetName() // << " set: " << cardBeingDownloaded.getSetName()
<< "]: " << (picDownload ? "Download" : "Cache search") << " failed for url " // << "]: " << (picDownload ? "Download" : "Cache search") << " failed for url "
<< reply->url().toDisplayString() << " (" << reply->errorString() << ")"; // << reply->url().toDisplayString() << " (" << reply->errorString() << ")";
picDownloadFailed(); picDownloadFailed();
startNextPicDownload(); startNextPicDownload();
@ -486,9 +488,9 @@ void PictureLoaderWorker::picDownloadFinished(QNetworkReply *reply)
if (statusCode == 301 || statusCode == 302 || statusCode == 303 || statusCode == 305 || statusCode == 307 || if (statusCode == 301 || statusCode == 302 || statusCode == 303 || statusCode == 305 || statusCode == 307 ||
statusCode == 308) { statusCode == 308) {
QUrl redirectUrl = reply->header(QNetworkRequest::LocationHeader).toUrl(); QUrl redirectUrl = reply->header(QNetworkRequest::LocationHeader).toUrl();
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName()
<< " set: " << cardBeingDownloaded.getSetName() << "]: following " // << " set: " << cardBeingDownloaded.getSetName() << "]: following "
<< (isFromCache ? "cached redirect" : "redirect") << " to " << redirectUrl.toDisplayString(); // << (isFromCache ? "cached redirect" : "redirect") << " to " << redirectUrl.toDisplayString();
makeRequest(redirectUrl); makeRequest(redirectUrl);
reply->deleteLater(); reply->deleteLater();
return; return;
@ -498,9 +500,9 @@ void PictureLoaderWorker::picDownloadFinished(QNetworkReply *reply)
const QByteArray &picData = reply->peek(reply->size()); const QByteArray &picData = reply->peek(reply->size());
if (imageIsBlackListed(picData)) { if (imageIsBlackListed(picData)) {
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName()
<< " set: " << cardBeingDownloaded.getSetName() // << " set: " << cardBeingDownloaded.getSetName()
<< "]: Picture found, but blacklisted, will consider it as not found"; // << "]: Picture found, but blacklisted, will consider it as not found";
picDownloadFailed(); picDownloadFailed();
reply->deleteLater(); reply->deleteLater();
@ -533,19 +535,19 @@ void PictureLoaderWorker::picDownloadFinished(QNetworkReply *reply)
imageLoaded(cardBeingDownloaded.getCard(), testImage); imageLoaded(cardBeingDownloaded.getCard(), testImage);
logSuccessMessage = true; logSuccessMessage = true;
} else { } else {
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName()
<< " set: " << cardBeingDownloaded.getSetName() << "]: Possible " // << " set: " << cardBeingDownloaded.getSetName() << "]: Possible "
<< (isFromCache ? "cached" : "downloaded") << " picture at " // << (isFromCache ? "cached" : "downloaded") << " picture at "
<< reply->url().toDisplayString() << " could not be loaded: " << reply->errorString(); // << reply->url().toDisplayString() << " could not be loaded: " << reply->errorString();
picDownloadFailed(); picDownloadFailed();
} }
if (logSuccessMessage) { if (logSuccessMessage) {
qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName() //qDebug().nospace() << "PictureLoader: [card: " << cardBeingDownloaded.getCard()->getName()
<< " set: " << cardBeingDownloaded.getSetName() << "]: Image successfully " // << " set: " << cardBeingDownloaded.getSetName() << "]: Image successfully "
<< (isFromCache ? "loaded from cached" : "downloaded from") << " url " // << (isFromCache ? "loaded from cached" : "downloaded from") << " url "
<< reply->url().toDisplayString(); // << reply->url().toDisplayString();
} }
reply->deleteLater(); reply->deleteLater();
@ -612,7 +614,7 @@ void PictureLoader::getCardBackPixmap(QPixmap &pixmap, QSize size)
{ {
QString backCacheKey = "_trice_card_back_" + QString::number(size.width()) + QString::number(size.height()); QString backCacheKey = "_trice_card_back_" + QString::number(size.width()) + QString::number(size.height());
if (!QPixmapCache::find(backCacheKey, &pixmap)) { if (!QPixmapCache::find(backCacheKey, &pixmap)) {
qDebug() << "PictureLoader: cache fail for" << backCacheKey; //qDebug() << "PictureLoader: cache fail for" << backCacheKey;
pixmap = QPixmap("theme:cardback").scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation); pixmap = QPixmap("theme:cardback").scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
QPixmapCache::insert(backCacheKey, pixmap); QPixmapCache::insert(backCacheKey, pixmap);
} }

View file

@ -444,7 +444,7 @@ QList<CardInfoPtr> CardDatabase::getCards(const QStringList &cardNames) const
CardInfoPtr CardDatabase::getCardByNameAndUUID(const QString &cardName, const QString &uuid) const CardInfoPtr CardDatabase::getCardByNameAndUUID(const QString &cardName, const QString &uuid) const
{ {
auto info = getCard(cardName); auto info = getCard(cardName);
if (uuid.isNull() || uuid.isEmpty()) { if (uuid.isNull() || uuid.isEmpty() || info.isNull()) {
return info; return info;
} }