Improvement on token search algorithm, not it even uses deckmaster website.
This commit is contained in:
@@ -4,6 +4,7 @@ import org.jsoup.Jsoup;
|
|||||||
import org.jsoup.nodes.Document;
|
import org.jsoup.nodes.Document;
|
||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
import org.jsoup.select.Elements;
|
import org.jsoup.select.Elements;
|
||||||
|
import org.jsoup.nodes.Node;
|
||||||
|
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipFile;
|
import java.util.zip.ZipFile;
|
||||||
@@ -14,11 +15,15 @@ import net.lingala.zip4j.model.enums.CompressionMethod;
|
|||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import android.graphics.*;
|
import android.graphics.*;
|
||||||
@@ -158,7 +163,49 @@ public class ImgDownloader {
|
|||||||
}
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
System.out.println("Warning: Token " + name + " has not been found between " + set + " tokens, i will search for it between any other set...");
|
System.out.println("Warning: Token " + name + " has not been found between " + set + " tokens, i will search for it in https://deckmaster.info");
|
||||||
|
String json = "";
|
||||||
|
try {
|
||||||
|
URL url = new URL("https://deckmaster.info/includes/ajax.php?action=cardSearch&searchString=" + name);
|
||||||
|
HttpURLConnection httpcon = (HttpURLConnection) url.openConnection();
|
||||||
|
httpcon.addRequestProperty("User-Agent", "Mozilla/4.76");
|
||||||
|
InputStream stream = httpcon.getInputStream();
|
||||||
|
int i;
|
||||||
|
while ((i = stream.read()) != -1) {
|
||||||
|
json = json + ((char) i);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
List<String> urls = new ArrayList<String>();
|
||||||
|
String[] tok = json.split(",");
|
||||||
|
for (int i = 0; i < tok.length; i++) {
|
||||||
|
if (tok[i].contains("multiverseid")) {
|
||||||
|
String id = tok[i].split(":")[1].replace("\"", "");
|
||||||
|
urls.add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 0; i < urls.size(); i++) {
|
||||||
|
try {
|
||||||
|
Document tokendoc = Jsoup.connect("https://deckmaster.info/card.php?multiverseid=" + urls.get(i)).get();
|
||||||
|
Elements stats = tokendoc.select("head meta");
|
||||||
|
for (int j = 0; j < stats.size(); j++) {
|
||||||
|
if (stats.get(j).attributes().get("content").contains("Token Creature") && stats.get(j).attributes().get("content").toLowerCase().contains(name.toLowerCase())) {
|
||||||
|
if (stats.get(j).attributes().get("content").contains(tokenstats.replace("X/X", "*/*")))
|
||||||
|
return tokendoc;
|
||||||
|
stats = tokendoc.select("body textarea");
|
||||||
|
for (int y = 0; y < stats.size(); y++) {
|
||||||
|
List<Node> nodes = stats.get(y).childNodes();
|
||||||
|
for (int p = 0; p < nodes.size(); p++) {
|
||||||
|
if (stats.get(y).childNode(p).attributes().get("#text").contains(tokenstats))
|
||||||
|
return tokendoc;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
System.out.println("Warning: Token " + name + " has not been found in https://deckmaster.info so i will search for it between any other set in " + imageurl + " (it can take long time)");
|
||||||
for (int i = 1; i < availableSets.length; i++) {
|
for (int i = 1; i < availableSets.length; i++) {
|
||||||
String currentSet = availableSets[i].toLowerCase().split(" - ")[0];
|
String currentSet = availableSets[i].toLowerCase().split(" - ")[0];
|
||||||
if (!currentSet.equalsIgnoreCase(set)) {
|
if (!currentSet.equalsIgnoreCase(set)) {
|
||||||
@@ -413,7 +460,23 @@ public class ImgDownloader {
|
|||||||
if (CardImage.isEmpty())
|
if (CardImage.isEmpty())
|
||||||
CardImage = imgs.get(i).attributes().get("data-src");
|
CardImage = imgs.get(i).attributes().get("data-src");
|
||||||
URL url = new URL(CardImage);
|
URL url = new URL(CardImage);
|
||||||
InputStream in = new BufferedInputStream(url.openStream());
|
InputStream in = null;
|
||||||
|
try {
|
||||||
|
in = new BufferedInputStream(url.openStream());
|
||||||
|
} catch (IOException ex) {
|
||||||
|
System.err.println("Error: Problem downloading card: " + mappa.get(id) + "-" + id + " from " + scryset + " on ScryFall, i will retry 2 times more...");
|
||||||
|
try {
|
||||||
|
in = new BufferedInputStream(url.openStream());
|
||||||
|
} catch (IOException ex2) {
|
||||||
|
System.err.println("Error: Problem downloading card: " + mappa.get(id) + "-" + id + " from " + scryset + " on ScryFall, i will retry 1 time more...");
|
||||||
|
try {
|
||||||
|
in = new BufferedInputStream(url.openStream());
|
||||||
|
} catch (IOException ex3) {
|
||||||
|
System.err.println("Error: Problem downloading card: " + mappa.get(id) + "-" + id + " from " + scryset + " on ScryFall, i will not retry anymore...");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
byte[] buf = new byte[1024];
|
byte[] buf = new byte[1024];
|
||||||
int n = 0;
|
int n = 0;
|
||||||
@@ -577,13 +640,33 @@ public class ImgDownloader {
|
|||||||
}
|
}
|
||||||
Elements imgstoken = doc.select("body img");
|
Elements imgstoken = doc.select("body img");
|
||||||
for (int p = 0; p < imgstoken.size(); p++) {
|
for (int p = 0; p < imgstoken.size(); p++) {
|
||||||
String titletoken = imgstoken.get(p).attributes().get("title");
|
String titletoken = imgstoken.get(p).attributes().get("alt");
|
||||||
|
if (titletoken.isEmpty())
|
||||||
|
titletoken = imgstoken.get(p).attributes().get("title");
|
||||||
if (titletoken.toLowerCase().contains(nametocheck.toLowerCase())) {
|
if (titletoken.toLowerCase().contains(nametocheck.toLowerCase())) {
|
||||||
String CardImageToken = imgstoken.get(p).attributes().get("src");
|
String CardImageToken = imgstoken.get(p).attributes().get("src");
|
||||||
if (CardImageToken.isEmpty())
|
if (CardImageToken.isEmpty())
|
||||||
CardImageToken = imgstoken.get(p).attributes().get("data-src");
|
CardImageToken = imgstoken.get(p).attributes().get("data-src");
|
||||||
URL urltoken = new URL(CardImageToken);
|
URL urltoken = new URL(CardImageToken);
|
||||||
InputStream intoken = new BufferedInputStream(urltoken.openStream());
|
HttpURLConnection httpcontoken = (HttpURLConnection) urltoken.openConnection();
|
||||||
|
httpcontoken.addRequestProperty("User-Agent", "Mozilla/4.76");
|
||||||
|
InputStream intoken = null;
|
||||||
|
try {
|
||||||
|
intoken = new BufferedInputStream(httpcontoken.getInputStream());
|
||||||
|
} catch (IOException ex) {
|
||||||
|
System.err.println("Error: Problem downloading token: " + nametoken + "-" + id + "t, i will retry 2 times more...");
|
||||||
|
try {
|
||||||
|
intoken = new BufferedInputStream(httpcontoken.getInputStream());
|
||||||
|
} catch (IOException ex2) {
|
||||||
|
System.err.println("Error: Problem downloading token: " + nametoken + "-" + id + "t, i will retry 1 time more...");
|
||||||
|
try {
|
||||||
|
intoken = new BufferedInputStream(httpcontoken.getInputStream());
|
||||||
|
} catch (IOException ex3) {
|
||||||
|
System.err.println("Error: Problem downloading token: " + nametoken + "-" + id + "t, i will not retry anymore...");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
ByteArrayOutputStream outtoken = new ByteArrayOutputStream();
|
ByteArrayOutputStream outtoken = new ByteArrayOutputStream();
|
||||||
byte[] buftoken = new byte[1024];
|
byte[] buftoken = new byte[1024];
|
||||||
int ntoken = 0;
|
int ntoken = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user