Merge pull request #1244 from kevlahnota/master

support setlookup on ImageFetcher
This commit is contained in:
Anthony Calosa
2022-07-30 18:24:54 +08:00
committed by GitHub

View File

@@ -39,17 +39,41 @@ public abstract class ImageFetcher {
private HashMap<String, HashSet<Callback>> currentFetches = new HashMap<>();
private HashMap<String, String> tokenImages;
private String getScryfallDownloadURL(PaperCard c, boolean backFace, boolean useArtCrop) {
private String getScryfallDownloadURL(PaperCard c, boolean backFace, boolean useArtCrop, boolean hasSetLookup, String imagePath, ArrayList<String> downloadUrls) {
StaticData data = StaticData.instance();
CardEdition edition = data.getEditions().get(c.getEdition());
if (edition == null) // edition does not exist - some error occurred with card data
return null;
if (hasSetLookup) {
List<PaperCard> clones = StaticData.instance().getCommonCards().getAllCards(c.getName());
for (PaperCard pc : clones) {
if (clones.size() > 1) {//clones only
if (!c.getEdition().equalsIgnoreCase(pc.getEdition())) {
CardEdition ed = data.getEditions().get(pc.getEdition());
if (ed != null) {
String setCode =ed.getScryfallCode();
String langCode = ed.getCardsLangCode();
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(pc, backFace, setCode, langCode, useArtCrop));
}
}
} else {// original from set
CardEdition ed = data.getEditions().get(pc.getEdition());
if (ed != null) {
String setCode =ed.getScryfallCode();
String langCode = ed.getCardsLangCode();
downloadUrls.add(ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD + ImageUtil.getScryfallDownloadUrl(pc, backFace, setCode, langCode, useArtCrop));
}
}
}
return null;
} else {
// 1. Try MCI code first, as it original.
String setCode = edition.getScryfallCode();
String langCode = edition.getCardsLangCode();
return ForgeConstants.URL_PIC_SCRYFALL_DOWNLOAD +
ImageUtil.getScryfallDownloadUrl(c, backFace, setCode, langCode, useArtCrop);
}
}
public void fetchImage(final String imageKey, final Callback callback) {
FThreads.assertExecutedByEdt(true);
@@ -81,7 +105,8 @@ public abstract class ImageFetcher {
// Skip fetching if artist info is not available for art crop
if (useArtCrop && paperCard.getArtist().isEmpty())
return;
String imagePath = ImageUtil.getImageRelativePath(paperCard, false, true, false);
final boolean hasSetLookup = ImageKeys.hasSetLookup(imagePath);
final boolean backFace = imageKey.endsWith(ImageKeys.BACKFACE_POSTFIX);
String filename = backFace ? paperCard.getCardAltImageKey() : paperCard.getCardImageKey();
if (useArtCrop) {
@@ -93,14 +118,30 @@ public abstract class ImageFetcher {
if (!useArtCrop) {
//move priority of ftp image here
StringBuilder setDownload = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
if (!hasSetLookup) {
setDownload.append(ImageUtil.getDownloadUrl(paperCard, backFace));
downloadUrls.add(setDownload.toString());
} else {
List<PaperCard> clones = StaticData.instance().getCommonCards().getAllCards(paperCard.getName());
for (PaperCard pc : clones) {
if (clones.size() > 1) {//clones only
if (!paperCard.getEdition().equalsIgnoreCase(pc.getEdition())) {
StringBuilder set = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
set.append(ImageUtil.getDownloadUrl(pc, backFace));
downloadUrls.add(set.toString());
}
} else {// original from set
StringBuilder set = new StringBuilder(ForgeConstants.URL_PIC_DOWNLOAD);
set.append(ImageUtil.getDownloadUrl(pc, backFace));
downloadUrls.add(set.toString());
}
}
}
}
final String cardCollectorNumber = paperCard.getCollectorNumber();
if (!cardCollectorNumber.equals(IPaperCard.NO_COLLECTOR_NUMBER)) {
final String scryfallURL = this.getScryfallDownloadURL(paperCard, backFace, useArtCrop);
if (scryfallURL != null)
final String scryfallURL = this.getScryfallDownloadURL(paperCard, backFace, useArtCrop, hasSetLookup, imagePath, downloadUrls);
if (scryfallURL != null && !hasSetLookup)
downloadUrls.add(scryfallURL);
}
} else if (prefix.equals(ImageKeys.TOKEN_PREFIX)) {