diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java index aa597c8deeb..bbec3caccdb 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java @@ -60,7 +60,7 @@ public class WizardCardsImageSource implements CardImageSource { Document doc = Jsoup.connect("http://www.wizards.com/magic/tcg/article.aspx?x=mtg/tcg/" + setsAliases.get(cardSet)).get(); Elements cardsImages = doc.select("img[height$=370]"); for (int i = 0; i < cardsImages.size(); i++) { - String cardName = cardsImages.get(i).attr("title").replace("\u00C6", "AE").replace("\u2019", "'"); + String cardName = normalizeName(cardsImages.get(i).attr("title")); if (cardName != null && !cardName.isEmpty()) { if (cardName.equals("Forest") || cardName.equals("Swamp") || cardName.equals("Mountain") || cardName.equals("Island") || cardName.equals("Plains")) { int landNumber = 1; @@ -69,7 +69,7 @@ public class WizardCardsImageSource implements CardImageSource { } cardName += landNumber; } - setLinks.put(cardName, cardsImages.get(i).attr("src")); + setLinks.put(cardName.toLowerCase(), cardsImages.get(i).attr("src")); } else { setLinks.put(Integer.toString(i), cardsImages.get(i).attr("src")); } @@ -77,12 +77,12 @@ public class WizardCardsImageSource implements CardImageSource { cardsImages = doc.select("img[height$=470]"); for (int i = 0; i < cardsImages.size(); i++) { - String cardName = cardsImages.get(i).attr("title").replace("\u00C6", "AE").replace("\u2019", "'"); + String cardName = normalizeName(cardsImages.get(i).attr("title")); if (cardName != null && !cardName.isEmpty()) { String[] cardNames = cardName.replace(")", "").split(" \\("); for (String name : cardNames) { - setLinks.put(name, cardsImages.get(i).attr("src")); + setLinks.put(name.toLowerCase(), cardsImages.get(i).attr("src")); } } else { setLinks.put(Integer.toString(i), cardsImages.get(i).attr("src")); @@ -94,6 +94,17 @@ public class WizardCardsImageSource implements CardImageSource { return setLinks; } + private String normalizeName(String name) { + return name.replace("\u2014", "-").replace("\u2019", "'") + .replace("\u00C6", "AE").replace("\u00E6", "ae") + .replace("\u00C1", "A").replace("\u00E1", "a") + .replace("\u00C2", "A").replace("\u00E2", "a") + .replace("\u00D6", "O").replace("\u00F6", "o") + .replace("\u00DB", "U").replace("\u00FB", "u") + .replace("\u00DC", "U").replace("\u00FC", "u") + .replace("\u00E9", "e").replace("&", "//"); + } + @Override public String generateURL(CardDownloadData card) throws Exception { Integer collectorId = card.getCollectorId(); @@ -110,7 +121,7 @@ public class WizardCardsImageSource implements CardImageSource { setLinks = getSetLinks(cardSet); sets.put(cardSet, setLinks); } - String link = setLinks.get(card.getDownloadName()); + String link = setLinks.get(card.getDownloadName().toLowerCase()); if (link == null) { if (setLinks.size() >= collectorId) { link = setLinks.get(Integer.toString(collectorId - 1));