fix for downloading cards from wizards spoilers

This commit is contained in:
North 2013-06-29 00:08:10 +03:00
parent a5eebbbf12
commit 4c83fd7d6a

View file

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