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);