From 0c9c7c0a562bdd4a0abebe267d5f61910b6a56ec Mon Sep 17 00:00:00 2001 From: Quercitron Date: Sat, 17 Jun 2017 17:55:35 +0300 Subject: [PATCH] Add scryfall.com as a source for card images (closes #3496). --- .../card/dl/sources/ScryfallImageSource.java | 78 +++++++++++++++++++ .../plugins/card/images/DownloadPictures.java | 6 +- 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java 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 new file mode 100644 index 00000000000..1166e40fc89 --- /dev/null +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSource.java @@ -0,0 +1,78 @@ +package org.mage.plugins.card.dl.sources; + +import org.mage.plugins.card.images.CardDownloadData; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author Quercitron + * + */ +public enum ScryfallImageSource implements CardImageSource { + + instance; + + @Override + public String generateURL(CardDownloadData card) throws Exception { + return "https://api.scryfall.com/cards/" + formatSetName(card.getSet()) + "/" + card.getCollectorId() + "?format=image"; + } + + @Override + public String generateTokenUrl(CardDownloadData card) throws Exception { + return null; + } + + @Override + public String getNextHttpImageUrl() { + return null; + } + + @Override + public String getFileForHttpImage(String httpImageUrl) { + return null; + } + + @Override + public String getSourceName() { + return "scryfall.com"; + } + + @Override + public float getAverageSize() { + return 240; + } + + @Override + public int getTotalImages() { + return -1; + } + + @Override + public boolean isTokenSource() { + return false; + } + + @Override + public void doPause(String httpImageUrl) { + + } + + private String formatSetName(String setName) { + if (setNameReplacement.containsKey(setName)) { + setName = setNameReplacement.get(setName); + } + return setName.toLowerCase(); + } + + private static final Map setNameReplacement = new HashMap() { + { + put("DD3GVL", "gvl"); + put("DD3JVC", "jvc"); + put("DD3DVD", "dvd"); + put("DD3EVG", "evg"); + put("MPS-AKH", "mp2"); + put("MBP", "pmei"); + } + }; +} diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java index df97403a865..9ecd63cad63 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/images/DownloadPictures.java @@ -110,7 +110,8 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab "mtg.onl", "alternative.mtg.onl", "GrabBag", - "magidex.com" + "magidex.com", + "scryfall.com", //"mtgathering.ru HQ", //"mtgathering.ru MQ", //"mtgathering.ru LQ", @@ -148,6 +149,9 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab case 7: cardImageSource = MagidexImageSource.instance; break; + case 8: + cardImageSource = ScryfallImageSource.instance; + break; } updateCardsToDownload(); });