From 8bd7e346fb0207a8663fa5ba99b317b36b856d38 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sat, 7 Sep 2024 13:34:23 +0400 Subject: [PATCH] images: fixed broken images download from scryfall (#12817); --- .../org/mage/plugins/card/dl/sources/ScryfallApiCard.java | 1 + .../mage/plugins/card/dl/sources/ScryfallImageSource.java | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallApiCard.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallApiCard.java index 5d9385f48d7..9c527825a78 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallApiCard.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallApiCard.java @@ -16,6 +16,7 @@ import java.util.Map; */ public class ScryfallApiCard { + public String id; public String name; public String set; // set code public String collector_number; diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java index 78671efc9ad..4087f85051d 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java @@ -451,6 +451,7 @@ public class ScryfallImageSource implements CardImageSource { // bulk files are too big, so must read and parse it in stream mode only // 500k reprints in diff languages + Set usedCards = new HashSet<>(); Gson gson = new Gson(); try (TFileInputStream inputStream = new TFileInputStream(textBulkPath.toFile()); InputStreamReader inputReader = new InputStreamReader(inputStream); @@ -478,6 +479,13 @@ public class ScryfallImageSource implements CardImageSource { continue; } + // workaround for duplicated lines in bulk data, see https://github.com/magefree/mage/issues/12817 + if (usedCards.contains(card.id)) { + logger.warn("WARNING, must report to scryfall about duplicated lines for bulk data: " + key + ", id " + card.id); + continue; + } + usedCards.add(card.id); + // default versions list depends on scryfall bulk data order (en first) bulkCardsDatabaseDefault.put(key, card); bulkCardsDatabaseAll.add(card);