[M15] Added temp. fix for image download of M15 cards from Wizards side. Problems caused by new web design of wizards. Images are now added as png files. Png images are saved with a jpg suffix name but they are correctly displayed in XMage. Needs more work for a clean solution.

This commit is contained in:
LevelX2 2014-07-09 17:36:07 +02:00
parent 63612b4291
commit 03e6ccf4ab

View file

@ -69,36 +69,61 @@ public class WizardCardsImageSource implements CardImageSource {
private Map<String, String> getSetLinks(String cardSet) { private Map<String, String> getSetLinks(String cardSet) {
Map<String, String> setLinks = new HashMap<>(); Map<String, String> setLinks = new HashMap<>();
try { try {
Document doc = Jsoup.connect("http://www.wizards.com/magic/tcg/article.aspx?x=mtg/tcg/" + setsAliases.get(cardSet)).get(); String urlDocument;
Elements cardsImages = doc.select("img[height$=370]"); if (cardSet.equals("M15")) {
for (int i = 0; i < cardsImages.size(); i++) { urlDocument = "http://magic.wizards.com/en/content/magic-2015-core-set-card-set-archive-products-game-info";
String cardName = normalizeName(cardsImages.get(i).attr("title")); Document doc = Jsoup.connect(urlDocument).get();
if (cardName != null && !cardName.isEmpty()) { Elements cardsImages = doc.select("div.advanced-card img");
if (cardName.equals("Forest") || cardName.equals("Swamp") || cardName.equals("Mountain") || cardName.equals("Island") || cardName.equals("Plains")) { for (int i = 0; i < cardsImages.size(); i++) {
int landNumber = 1; String cardName = normalizeName(cardsImages.get(i).attr("alt"));
while (setLinks.get((cardName + landNumber).toLowerCase()) != null) { if (cardName != null && !cardName.isEmpty()) {
landNumber++; if (cardName.equals("Forest") || cardName.equals("Swamp") || cardName.equals("Mountain") || cardName.equals("Island") || cardName.equals("Plains")) {
int landNumber = 1;
while (setLinks.get((cardName + landNumber).toLowerCase()) != null) {
landNumber++;
}
cardName += landNumber;
} }
cardName += landNumber; setLinks.put(cardName.toLowerCase(), cardsImages.get(i).attr("src"));
} else {
setLinks.put(Integer.toString(i), 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"));
} }
}
cardsImages = doc.select("img[height$=470]"); } else {
for (int i = 0; i < cardsImages.size(); i++) { urlDocument = "http://www.wizards.com/magic/tcg/article.aspx?x=mtg/tcg/" + setsAliases.get(cardSet);
String cardName = normalizeName(cardsImages.get(i).attr("title")); Document doc = Jsoup.connect(urlDocument).get();
Elements cardsImages = doc.select("img[height$=370]");
if (cardName != null && !cardName.isEmpty()) { for (int i = 0; i < cardsImages.size(); i++) {
String[] cardNames = cardName.replace(")", "").split(" \\("); String cardName = normalizeName(cardsImages.get(i).attr("title"));
for (String name : cardNames) { if (cardName != null && !cardName.isEmpty()) {
setLinks.put(name.toLowerCase(), cardsImages.get(i).attr("src")); if (cardName.equals("Forest") || cardName.equals("Swamp") || cardName.equals("Mountain") || cardName.equals("Island") || cardName.equals("Plains")) {
int landNumber = 1;
while (setLinks.get((cardName + landNumber).toLowerCase()) != null) {
landNumber++;
}
cardName += landNumber;
}
setLinks.put(cardName.toLowerCase(), cardsImages.get(i).attr("src"));
} else {
setLinks.put(Integer.toString(i), cardsImages.get(i).attr("src"));
} }
} else {
setLinks.put(Integer.toString(i), cardsImages.get(i).attr("src"));
} }
cardsImages = doc.select("img[height$=470]");
for (int i = 0; i < cardsImages.size(); i++) {
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.toLowerCase(), cardsImages.get(i).attr("src"));
}
} else {
setLinks.put(Integer.toString(i), cardsImages.get(i).attr("src"));
}
}
} }
} catch (IOException ex) { } catch (IOException ex) {
System.out.println("Exception when parsing the wizards page: " + ex.getMessage()); System.out.println("Exception when parsing the wizards page: " + ex.getMessage());