Added downloading double-faced cards images from magiccards.info

This commit is contained in:
magenoxx 2011-09-23 07:01:54 +04:00
parent a140932ec8
commit 08baa314f4
6 changed files with 53 additions and 11 deletions

View file

@ -6,7 +6,7 @@ package org.mage.plugins.card.dl.sources;
*/
public interface CardImageSource {
String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception;
String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondFace) throws Exception;
String generateTokenUrl(String name, String set);
Float getAverageSize();
}

View file

@ -50,15 +50,20 @@ public class MagicCardsImageSource implements CardImageSource {
}
@Override
public String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception {
public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide) throws Exception {
if (collectorId == null || cardSet == null) {
throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet);
}
String set = CardImageUtils.updateSet(cardSet, true);
String url = "http://magiccards.info/scans/en/";
url += set.toLowerCase() + "/" + collectorId + ".jpg";
StringBuilder url = new StringBuilder("http://magiccards.info/scans/en/");
url.append(set.toLowerCase()).append("/").append(collectorId);
return url;
if (twoFacedCard) {
url.append(secondSide ? "b" : "a");
}
url.append(".jpg");
return url.toString();
}
@Override

View file

@ -51,7 +51,7 @@ public class MtgatheringRuImageSource implements CardImageSource {
}
@Override
public String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception {
public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide) throws Exception {
if (collectorId == null || cardSet == null) {
throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet);
}

View file

@ -70,7 +70,7 @@ public class WizardCardsImageSource implements CardImageSource {
}
@Override
public String generateURL(Integer collectorId, String cardName, String cardSet) throws Exception {
public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide) throws Exception {
if (collectorId == null || cardSet == null) {
throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet);
}

View file

@ -10,6 +10,8 @@ public class CardInfo {
private String set;
private Integer collectorId;
private boolean token;
private boolean twoFacedCard;
private boolean secondSide;
public CardInfo(String name, String set, Integer collectorId) {
this.name = name;
@ -25,11 +27,22 @@ public class CardInfo {
this.token = token;
}
public CardInfo(String name, String set, Integer collectorId, boolean token, boolean twoFacedCard, boolean secondSide) {
this.name = name;
this.set = set;
this.collectorId = collectorId;
this.token = token;
this.twoFacedCard = twoFacedCard;
this.secondSide = secondSide;
}
public CardInfo(final CardInfo card) {
this.name = card.name;
this.set = card.set;
this.collectorId = card.collectorId;
this.token = card.token;
this.twoFacedCard = card.twoFacedCard;
this.secondSide = card.secondSide;
}
@Override
@ -53,6 +66,12 @@ public class CardInfo {
if (this.token != other.token) {
return false;
}
if (this.twoFacedCard != other.twoFacedCard) {
return false;
}
if (this.secondSide != other.secondSide) {
return false;
}
return true;
}
@ -63,6 +82,8 @@ public class CardInfo {
hash = 47 * hash + (this.set != null ? this.set.hashCode() : 0);
hash = 47 * hash + (this.collectorId != null ? this.collectorId.hashCode() : 0);
hash = 47 * hash + (this.token ? 1 : 0);
hash = 47 * hash + (this.twoFacedCard ? 1 : 0);
hash = 47 * hash + (this.secondSide ? 1 : 0);
return hash;
}
@ -97,4 +118,12 @@ public class CardInfo {
public void setToken(boolean token) {
this.token = token;
}
public boolean isTwoFacedCard() {
return twoFacedCard;
}
public boolean isSecondSide() {
return secondSide;
}
}

View file

@ -71,7 +71,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
private static CardImageSource cardImageSource;
private Proxy p;
private Proxy p = Proxy.NO_PROXY;;
private ExecutorService executor = Executors.newFixedThreadPool(10);
@ -234,7 +234,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
File file;
for (Card card : allCards) {
if (card.getCardNumber() > 0 && !card.getExpansionSetCode().isEmpty()) {
CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(), false);
CardInfo url = new CardInfo(card.getName(), card.getExpansionSetCode(), card.getCardNumber(), false, card.canTransform(), card.isNightCard());
boolean withCollectorId = false;
if (card.getName().equals("Forest") || card.getName().equals("Mountain") || card.getName().equals("Swamp") || card.getName().equals("Island") || card.getName().equals("Plains")) {
withCollectorId = true;
@ -265,8 +265,16 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
if (cardName.equals("Forest") || cardName.equals("Swamp") || cardName.equals("Mountain") || cardName.equals("Island") || cardName.equals("Plains")) {
cardName = card.getClass().getName().replace(card.getClass().getPackage().getName() + ".", "");
}
CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), false);
CardInfo url = new CardInfo(cardName, card.getExpansionSetCode(), card.getCardNumber(), false, card.canTransform(), card.isNightCard());
allCardsUrls.add(url);
if (card.canTransform()) {
// add second side for downloading
// it has the same expansion set code and card number as original one
// second side = true;
Card secondSide = card.getSecondCardFace();
url = new CardInfo(secondSide.getName(), card.getExpansionSetCode(), card.getCardNumber(), false, card.canTransform(), true);
allCardsUrls.add(url);
}
} else {
if (card.getCardNumber() < 1) {
System.err.println("There was a critical error!");
@ -439,7 +447,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
}
url = cardImageSource.generateTokenUrl(card.getName(), card.getSet());
} else {
url = cardImageSource.generateURL(card.getCollectorId(), card.getName(), card.getSet());
url = cardImageSource.generateURL(card.getCollectorId(), card.getName(), card.getSet(), card.isTwoFacedCard(), card.isSecondSide());
}
if (url != null) {