mirror of
https://github.com/correl/mage.git
synced 2025-04-13 17:00:09 -09:00
refactoring to CardImageSource
This commit is contained in:
parent
467d246a12
commit
b13394f03c
4 changed files with 37 additions and 34 deletions
Mage.Client/src/main/java/org/mage/plugins/card
|
@ -1,12 +1,14 @@
|
||||||
package org.mage.plugins.card.dl.sources;
|
package org.mage.plugins.card.dl.sources;
|
||||||
|
|
||||||
|
import org.mage.plugins.card.images.CardDownloadData;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author North
|
* @author North
|
||||||
*/
|
*/
|
||||||
public interface CardImageSource {
|
public interface CardImageSource {
|
||||||
|
|
||||||
String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondFace, boolean isFlipCard, boolean isSplitCard, boolean flippedView) throws Exception;
|
String generateURL(CardDownloadData card) throws Exception;
|
||||||
String generateTokenUrl(String name, String set);
|
String generateTokenUrl(CardDownloadData card);
|
||||||
Float getAverageSize();
|
Float getAverageSize();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package org.mage.plugins.card.dl.sources;
|
package org.mage.plugins.card.dl.sources;
|
||||||
|
|
||||||
|
import org.mage.plugins.card.images.CardDownloadData;
|
||||||
import org.mage.plugins.card.utils.CardImageUtils;
|
import org.mage.plugins.card.utils.CardImageUtils;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -64,7 +65,9 @@ public class MagicCardsImageSource implements CardImageSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide, boolean isFlipCard, boolean isSplitCard, boolean flippedView) throws Exception {
|
public String generateURL(CardDownloadData card) throws Exception {
|
||||||
|
Integer collectorId = card.getCollectorId();
|
||||||
|
String cardSet = card.getSet();
|
||||||
if (collectorId == null || cardSet == null) {
|
if (collectorId == null || cardSet == null) {
|
||||||
throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet);
|
throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet);
|
||||||
}
|
}
|
||||||
|
@ -72,14 +75,14 @@ public class MagicCardsImageSource implements CardImageSource {
|
||||||
StringBuilder url = new StringBuilder("http://magiccards.info/scans/en/");
|
StringBuilder url = new StringBuilder("http://magiccards.info/scans/en/");
|
||||||
url.append(set.toLowerCase()).append("/").append(collectorId);
|
url.append(set.toLowerCase()).append("/").append(collectorId);
|
||||||
|
|
||||||
if (twoFacedCard) {
|
if (card.isTwoFacedCard()) {
|
||||||
url.append(secondSide ? "b" : "a");
|
url.append(card.isSecondSide() ? "b" : "a");
|
||||||
}
|
}
|
||||||
if (isSplitCard) {
|
if (card.isSplitCard()) {
|
||||||
url.append("a");
|
url.append("a");
|
||||||
}
|
}
|
||||||
if (isFlipCard) {
|
if (card.isFlipCard()) {
|
||||||
if (flippedView) { // download rotated by 180 degree image
|
if (card.isFlippedSide()) { // download rotated by 180 degree image
|
||||||
url.append("b");
|
url.append("b");
|
||||||
} else {
|
} else {
|
||||||
url.append("a");
|
url.append("a");
|
||||||
|
@ -91,17 +94,15 @@ public class MagicCardsImageSource implements CardImageSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String generateTokenUrl(String name, String set) {
|
public String generateTokenUrl(CardDownloadData card) {
|
||||||
String _name = name.replaceAll(" ", "-").replace(",", "").toLowerCase();
|
String name = card.getName().replaceAll(" ", "-").replace(",", "").toLowerCase();
|
||||||
String _set = "not-supported-set";
|
String set = "not-supported-set";
|
||||||
if (setNameReplacement.containsKey(set)) {
|
if (setNameReplacement.containsKey(card.getSet())) {
|
||||||
_set = setNameReplacement.get(set);
|
set = setNameReplacement.get(card.getSet());
|
||||||
} else {
|
} else {
|
||||||
_set += "-" + set;
|
set += "-" + card.getSet();
|
||||||
}
|
}
|
||||||
String url = "http://magiccards.info/extras/token/" + _set + "/" + _name + ".jpg";
|
return "http://magiccards.info/extras/token/" + set + "/" + name + ".jpg";
|
||||||
return url;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.mage.plugins.card.dl.sources;
|
||||||
import org.jsoup.Jsoup;
|
import org.jsoup.Jsoup;
|
||||||
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Document;
|
||||||
import org.jsoup.select.Elements;
|
import org.jsoup.select.Elements;
|
||||||
|
import org.mage.plugins.card.images.CardDownloadData;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
@ -15,8 +16,8 @@ import java.util.Map;
|
||||||
public class WizardCardsImageSource implements CardImageSource {
|
public class WizardCardsImageSource implements CardImageSource {
|
||||||
|
|
||||||
private static CardImageSource instance;
|
private static CardImageSource instance;
|
||||||
private static Map setsAliases;
|
private static Map<String, String> setsAliases;
|
||||||
private Map sets;
|
private Map<String, Map<String, String>> sets;
|
||||||
|
|
||||||
public static CardImageSource getInstance() {
|
public static CardImageSource getInstance() {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
|
@ -26,8 +27,8 @@ public class WizardCardsImageSource implements CardImageSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
public WizardCardsImageSource() {
|
public WizardCardsImageSource() {
|
||||||
sets = new HashMap();
|
sets = new HashMap<String, Map<String, String>>();
|
||||||
setsAliases = new HashMap();
|
setsAliases = new HashMap<String, String>();
|
||||||
setsAliases.put("MMA", "modernmasters/cig");
|
setsAliases.put("MMA", "modernmasters/cig");
|
||||||
setsAliases.put("DGM", "dragonsmaze/cig");
|
setsAliases.put("DGM", "dragonsmaze/cig");
|
||||||
setsAliases.put("GTC", "gatecrash/cig");
|
setsAliases.put("GTC", "gatecrash/cig");
|
||||||
|
@ -56,7 +57,7 @@ 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<String, String>();
|
Map<String, String> setLinks = new HashMap<String, String>();
|
||||||
try {
|
try {
|
||||||
Document doc = Jsoup.connect("http://www.wizards.com/magic/tcg/article.aspx?x=mtg/tcg/" + (String) setsAliases.get(cardSet)).get();
|
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]");
|
Elements cardsImages = doc.select("img[height$=370]");
|
||||||
for (int i = 0; i < cardsImages.size(); i++) {
|
for (int i = 0; i < cardsImages.size(); i++) {
|
||||||
String cardName = cardsImages.get(i).attr("title").replace("\u00C6", "AE").replace("\u2019", "'");
|
String cardName = cardsImages.get(i).attr("title").replace("\u00C6", "AE").replace("\u2019", "'");
|
||||||
|
@ -94,20 +95,22 @@ public class WizardCardsImageSource implements CardImageSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String generateURL(Integer collectorId, String cardName, String cardSet, boolean twoFacedCard, boolean secondSide, boolean isFlipCard, boolean isSplitCard, boolean flippedView) throws Exception {
|
public String generateURL(CardDownloadData card) throws Exception {
|
||||||
|
Integer collectorId = card.getCollectorId();
|
||||||
|
String cardSet = card.getSet();
|
||||||
if (collectorId == null || cardSet == null) {
|
if (collectorId == null || cardSet == null) {
|
||||||
throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet);
|
throw new Exception("Wrong parameters for image: collector id: " + collectorId + ",card set: " + cardSet);
|
||||||
}
|
}
|
||||||
if (flippedView) { //doesn't support rotated images
|
if (card.isFlippedSide()) { //doesn't support rotated images
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (setsAliases.get(cardSet) != null) {
|
if (setsAliases.get(cardSet) != null) {
|
||||||
Map<String, String> setLinks = (Map<String, String>) sets.get(cardSet);
|
Map<String, String> setLinks = sets.get(cardSet);
|
||||||
if (setLinks == null) {
|
if (setLinks == null) {
|
||||||
setLinks = getSetLinks(cardSet);
|
setLinks = getSetLinks(cardSet);
|
||||||
sets.put(cardSet, setLinks);
|
sets.put(cardSet, setLinks);
|
||||||
}
|
}
|
||||||
String link = setLinks.get(cardName);
|
String link = setLinks.get(card.getDownloadName());
|
||||||
if (link == null) {
|
if (link == null) {
|
||||||
if (setLinks.size() >= collectorId) {
|
if (setLinks.size() >= collectorId) {
|
||||||
link = setLinks.get(Integer.toString(collectorId - 1));
|
link = setLinks.get(Integer.toString(collectorId - 1));
|
||||||
|
@ -127,7 +130,7 @@ public class WizardCardsImageSource implements CardImageSource {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String generateTokenUrl(String name, String set) {
|
public String generateTokenUrl(CardDownloadData card) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,4 +138,4 @@ public class WizardCardsImageSource implements CardImageSource {
|
||||||
public Float getAverageSize() {
|
public Float getAverageSize() {
|
||||||
return 60.0f;
|
return 60.0f;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -60,8 +60,6 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
|
||||||
|
|
||||||
private ExecutorService executor = Executors.newFixedThreadPool(10);
|
private ExecutorService executor = Executors.newFixedThreadPool(10);
|
||||||
|
|
||||||
public static final Proxy.Type[] types = Proxy.Type.values();
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
startDownload(null, null, null);
|
startDownload(null, null, null);
|
||||||
}
|
}
|
||||||
|
@ -399,10 +397,9 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
|
||||||
if (card.getCollectorId() != 0) {
|
if (card.getCollectorId() != 0) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
url = cardImageSource.generateTokenUrl(card.getName(), card.getSet());
|
url = cardImageSource.generateTokenUrl(card);
|
||||||
} else {
|
} else {
|
||||||
url = cardImageSource.generateURL(card.getCollectorId(), card.getDownloadName(), card.getSet(),
|
url = cardImageSource.generateURL(card);
|
||||||
card.isTwoFacedCard(), card.isSecondSide(), card.isFlipCard(), card.isSplitCard(), card.isFlippedSide());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url != null) {
|
if (url != null) {
|
||||||
|
@ -566,7 +563,7 @@ public class DownloadPictures extends DefaultBoundedRangeModel implements Runnab
|
||||||
count = DownloadPictures.this.cards.size();
|
count = DownloadPictures.this.cards.size();
|
||||||
|
|
||||||
if (count == 0) {
|
if (count == 0) {
|
||||||
bar.setString(String.format("0 cards remaining! Please close!", count));
|
bar.setString("0 cards remaining! Please close!");
|
||||||
} else {
|
} else {
|
||||||
bar.setString(String.format("%d cards remaining! Please choose another source!", count));
|
bar.setString(String.format("%d cards remaining! Please choose another source!", count));
|
||||||
//executor = Executors.newFixedThreadPool(10);
|
//executor = Executors.newFixedThreadPool(10);
|
||||||
|
|
Loading…
Add table
Reference in a new issue