diff --git a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java index 2258a2551..8d4741e71 100644 --- a/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java +++ b/projects/mtg/Android/src/net/wagic/utils/ImgDownloader.java @@ -27,6 +27,7 @@ import java.util.HashMap; import java.util.stream.Stream; import android.graphics.*; +import android.app.ProgressDialog; public class ImgDownloader { @@ -141,104 +142,185 @@ public class ImgDownloader { return name + " (" + totalcards + " cards)"; } - public static String getSpecialCardUrl(String id){ + public static String getSpecialCardUrl(String id) { String cardurl = ""; - if(id.equals("15208711")) + + if (id.equals("15208711")) cardurl = "https://img.scryfall.com/cards/large/front/9/c/9c138bf9-8be6-4f1a-a82c-a84938ab84f5.jpg?1562279137"; - else if(id.equals("15208712")) + else if (id.equals("15208712")) cardurl = "https://img.scryfall.com/cards/normal/front/d/4/d453ee89-6122-4d51-989c-e78b046a9de3.jpg?1561758141"; - else if(id.equals("2050321")) + else if (id.equals("2050321")) cardurl = "https://img.scryfall.com/cards/large/front/1/8/18b9c83d-4422-4b95-9fc2-070ed6b5bdf6.jpg?1562701921"; - else if(id.equals("2050322")) + else if (id.equals("2050322")) cardurl = "https://crystal-cdn4.crystalcommerce.com/photos/504053/ooze_token_b.jpg"; - else if(id.equals("22010012")) + else if (id.equals("22010012")) cardurl = "https://img.scryfall.com/cards/normal/front/8/4/84dc847c-7a37-4c7f-b02c-30b3e4c91fb6.jpg?1561757490"; + else if (id.equals("8759611")) + cardurl = "https://img.scryfall.com/cards/large/front/4/1/41004bdf-8e09-4b2c-9e9c-26c25eac9854.jpg?1562493483"; + else if (id.equals("8759911")) + cardurl = "https://img.scryfall.com/cards/large/front/0/b/0b61d772-2d8b-4acf-9dd2-b2e8b03538c8.jpg?1562492461"; + else if (id.equals("8759511")) + cardurl = "https://img.scryfall.com/cards/large/front/d/2/d224c50f-8146-4c91-9401-04e5bd306d02.jpg?1562496100"; + else if (id.equals("8471611")) + cardurl = "https://img.scryfall.com/cards/png/front/8/4/84920a21-ee2a-41ac-a369-347633d10371.png?1562494702"; + else if (id.equals("8760011")) + cardurl = "https://img.scryfall.com/cards/large/front/4/2/42ba0e13-d20f-47f9-9c86-2b0b13c39ada.jpg?1562493487"; + else if (id.equals("401721")) + cardurl = "https://deckmaster.info/images/cards/DDP/401721-hr.jpg"; + else if (id.equals("401722")) + cardurl = "https://deckmaster.info/images/cards/DDP/401722-hr.jpg"; + else if (id.equals("19784311")) + cardurl = "https://deckmaster.info/images/cards/AKH/-4173-hr.jpg"; + else if (id.equals("19784312")) + cardurl = "https://deckmaster.info/images/cards/BNG/-10-hr.jpg"; + else if (id.equals("19784313")) + cardurl = "https://deckmaster.info/images/cards/DDD/201843-hr.jpg"; + else if (id.equals("20787512")) + cardurl = "https://deckmaster.info/images/cards/SOM/-227-hr.jpg"; + else if (id.equals("20787511")) + cardurl = "https://deckmaster.info/images/cards/SOM/-226-hr.jpg"; + else if (id.equals("11492111")) + cardurl = "https://deckmaster.info/images/cards/TSP/-2841-hr.jpg"; + else if (id.equals("11492112")) + cardurl = "https://deckmaster.info/images/cards/TSP/-2840-hr.jpg"; + else if (id.equals("11492113")) + cardurl = "https://img.scryfall.com/cards/large/front/5/b/5b9f471a-1822-4981-95a9-8923d83ddcbf.jpg?1562702075"; + else if (id.equals("11492114")) + cardurl = "https://deckmaster.info/images/cards/DDN/386322-hr.jpg"; + else if (id.equals("11492115")) + cardurl = "https://deckmaster.info/images/cards/DDE/209162-hr.jpg"; + return cardurl; } - public static String getSpecialTokenUrl(String id){ + public static String getSpecialTokenUrl(String id) { String tokenurl = ""; - if(id.equals("75291t")) + + if (id.equals("75291t")) tokenurl = "http://4.bp.blogspot.com/-y5Fanm3qvrU/Vmd4gGnl2DI/AAAAAAAAAWY/FCrS9FTgOJk/s1600/Tatsumasa%2BToken.jpg"; - else if(id.equals("202474t")) + else if (id.equals("435411t") || id.equals("435410t")) + tokenurl = "https://deckmaster.info/images/cards/XLN/-5173-hr.jpg"; + else if (id.equals("202474t") || id.equals("1098t")) tokenurl = "https://deckmaster.info/images/cards/AST/-884-hr.jpg"; - else if(id.equals("202590t")) + else if (id.equals("202590t")) tokenurl = "https://deckmaster.info/images/cards/AST/-892-hr.jpg"; - else if(id.equals("201124t")) + else if (id.equals("201124t")) tokenurl = "http://i1013.photobucket.com/albums/af260/lovesoldier99/STARFISHTOKEN.jpg"; - else if(id.equals("184735")) + else if (id.equals("184735")) tokenurl = "https://i.pinimg.com/originals/a9/fb/37/a9fb37bdfa8f8013b7eb854d155838e2.jpg"; - else if(id.equals("184598t")) + else if (id.equals("184598t")) tokenurl = "https://deckmaster.info/images/cards/HM/-2070-hr.jpg"; - else if(id.equals("184589t")) + else if (id.equals("184589t")) tokenurl = "http://d1f83aa4yffcdn.cloudfront.net/TOKEN/2%202%20Black%20Zombie.jpg"; - else if(id.equals("184730t")) - tokenurl="https://www.mtg.onl/static/c88f42f8bd5a7c25aa36902546b690f5/4d406/PROXY_Knight_W_1_1.jpg"; - else if(id.equals("1649t") || id.equals("201182t")) + else if (id.equals("184730t")) + tokenurl = "https://www.mtg.onl/static/c88f42f8bd5a7c25aa36902546b690f5/4d406/PROXY_Knight_W_1_1.jpg"; + else if (id.equals("1649t") || id.equals("201182t")) tokenurl = "https://pbs.twimg.com/media/DH9n-2JVwAA0o8z.jpg"; - else if(id.equals("140233t") || id.equals("191239t") || id.equals("205957t")) + else if (id.equals("140233t") || id.equals("191239t") || id.equals("205957t")) tokenurl = "https://i860.photobucket.com/albums/ab170/mistergreen527/White%20Tokens/WAvatarX-X1.jpg"; - else if(id.equals("1686t") || id.equals("2881t") || id.equals("201231t")) + else if (id.equals("1686t") || id.equals("2881t") || id.equals("201231t")) tokenurl = "https://deckmaster.info/images/cards/A25/-5648-hr.jpg"; - else if(id.equals("121261t")) + else if (id.equals("121261t")) tokenurl = "https://i.pinimg.com/originals/a9/fb/37/a9fb37bdfa8f8013b7eb854d155838e2.jpg"; - else if(id.equals("368951t")) + else if (id.equals("368951t")) tokenurl = "https://d1rw89lz12ur5s.cloudfront.net/photo/facetofacegames/file/36262794e9f37368e7872326715ac806/eletok.jpg"; - else if(id.equals("46168t")) + else if (id.equals("46168t")) tokenurl = "https://deckmaster.info/images/cards/KLD/-3287-hr.jpg"; - else if(id.equals("49026t")) + else if (id.equals("49026t")) tokenurl = "https://www.mtg.onl/static/a9d81341e62e39e75075b573739f39d6/4d406/PROXY_Wirefly_2_2.jpg"; - else if(id.equals("414506t")) + else if (id.equals("414506t")) tokenurl = "https://poromagia.com/media/cache/25/f0/25f0cd307adc18d7655c465408267469.jpg"; - else if(id.equals("6142t")) + else if (id.equals("6142t")) tokenurl = "https://cdn.staticneo.com/w/mtg/c/cd/Beast5.jpg"; - else if(id.equals("126166t")) + else if (id.equals("126166t")) tokenurl = "https://deckmaster.info/images/cards/C14/-487-hr.jpg"; - else if(id.equals("136155t")) + else if (id.equals("136155t")) tokenurl = "http://static1.squarespace.com/static/583dca25ff7c5080991b2c87/583de52de6f2e18631eb2b32/58405d0dbe6594762f5bd8e6/1565969982322/wurm-white.jpg"; - else if(id.equals("107091t")) + else if (id.equals("107091t")) tokenurl = "https://media.mtgsalvation.com/attachments/13/534/635032476540667501.jpg"; - else if(id.equals("452760t")) + else if (id.equals("452760t")) tokenurl = "https://deckmaster.info/images/cards/M19/-6036.jpg"; - else if(id.equals("2959t")) + else if (id.equals("2959t")) tokenurl = "https://deckmaster.info/images/cards/HM/-2070-hr.jpg"; - else if(id.equals("380486t")) + else if (id.equals("380486t")) tokenurl = "https://deckmaster.info/images/cards/BNG/-5-hr.jpg"; - else if(id.equals("380487t")) + else if (id.equals("380487t")) tokenurl = "https://poromagia.com/media/cache/25/f0/25f0cd307adc18d7655c465408267469.jpg"; - else if(id.equals("234849t")) + else if (id.equals("234849t")) tokenurl = "https://deckmaster.info/images/cards/RTR/-61-hr.jpg"; - else if(id.equals("23319t")) + else if (id.equals("23319t")) tokenurl = "https://i860.photobucket.com/albums/ab170/mistergreen527/White%20Tokens/WReflectionX-X1.jpg"; - else if(id.equals("205297t") || id.equals("50104t")) + else if (id.equals("205297t") || id.equals("50104t")) tokenurl = "https://www.mtg.onl/static/df30395b530524a3988428d4c0b37161/4d406/PROXY_Pest_0_1.jpg"; - else if(id.equals("3449t")) + else if (id.equals("3449t")) tokenurl = "https://www.mtg.onl/static/8c7fed1a0b8edd97c0fb0ceab24a654f/4d406/PROXY_Goblin_Scout_R_1_1.jpg"; - else if(id.equals("3392t")) + else if (id.equals("3392t")) tokenurl = "https://deckmaster.info/images/cards/DDR/417498-hr.jpg"; - else if(id.equals("3280t")) + else if (id.equals("3280t")) tokenurl = "https://media.mtgsalvation.com/attachments/54/421/635032484680831888.jpg"; - else if(id.equals("3242t")) + else if (id.equals("3242t")) tokenurl = "https://deckmaster.info/images/cards/MI/-2828-hr.jpg"; - else if(id.equals("426025t")) + else if (id.equals("426025t")) tokenurl = "https://cdn.shopify.com/s/files/1/0790/8591/products/Grnelementalfinal_800x800.jpg?v=1476398274"; - else if(id.equals("19878t")) + else if (id.equals("19878t")) tokenurl = "https://www.cardkingdom.com/images/magic-the-gathering/commander-2014/ape-token-zombie-token-blue-65252-medium.jpg"; - else if(id.equals("21381t") || id.equals("40198t")) + else if (id.equals("21381t") || id.equals("40198t")) tokenurl = "https://img.scryfall.com/cards/large/back/8/c/8ce60642-e207-46e6-b198-d803ff3b47f4.jpg?1562921132"; - else if(id.equals("265141t")) + else if (id.equals("265141t")) tokenurl = "https://media.mtgsalvation.com/attachments/102/31/635032498723573408.jpg"; - else if(id.equals("24624t")) + else if (id.equals("24624t")) tokenurl = "https://www.mtg.onl/static/6d717cba653ea9e3f6bd1419741671cb/4d406/PROXY_Minion_B_1_1.jpg"; + else if (id.equals("409810t") || id.equals("409805t") || id.equals("409953t") || id.equals("409997t") || id.equals("410032t")) + tokenurl = "https://deckmaster.info/images/cards/SOI/-2404-hr.jpg"; + else if (id.equals("74492t")) + tokenurl = "https://media.mtgsalvation.com/attachments/94/295/635032496473215708.jpg"; + else if (id.equals("88973t")) + tokenurl = "https://deckmaster.info/images/cards/DDQ/409655-hr.jpg"; + else if (id.equals("89051t")) + tokenurl = "https://www.mtg.onl/static/b7625a256e10bcec251a1a0abbf17bd4/4d406/PROXY_Horror_B_4_4.jpg"; + else if (id.equals("5261t")) + tokenurl = "https://static.cardmarket.com/img/5a0199344cad68eebeefca6fa24e52c3/items/1/MH1/376905.jpg"; + else if (id.equals("116384t")) + tokenurl = "https://deckmaster.info/images/cards/TSP/-114916-hr.jpg"; + else if (id.equals("116383t")) + tokenurl = "https://i.imgur.com/wRMebWg.jpg"; + else if (id.equals("114917t")) + tokenurl = "https://deckmaster.info/images/cards/JOU/-43-hr.jpg"; + else if (id.equals("5610t")) + tokenurl = "https://deckmaster.info/images/cards/DDE/207998-hr.jpg"; + else if (id.equals("185704t")) + tokenurl = "https://deckmaster.info/images/cards/ZEN/-277-hr.jpg"; + else if (id.equals("461099t")) + tokenurl = "https://img.scryfall.com/cards/large/front/d/e/de7ba875-f77b-404f-8b75-4ba6f81da410.jpg?1557575978"; + else if (id.equals("9667t")) + tokenurl = "https://www.mtg.onl/static/abe5178af8ebbe84f5504493a1b5f154/4d406/PROXY_Giant_Chicken_R_4_4.jpg"; + else if (id.equals("368549t")) + tokenurl = "https://deckmaster.info/images/cards/DDQ/409655-hr.jpg"; + else if (id.equals("73953t")) + tokenurl = "https://www.mtg.onl/static/98da67c454fe6cde61ae45af4f9c3150/4d406/PROXY_Giant_Teddy_Bear_5_5.jpg"; + else if (id.equals("74265t")) + tokenurl = "https://deckmaster.info/images/cards/UNH/-2064-hr.jpg"; + else if (id.equals("27634t")) + tokenurl = "https://www.mtg.onl/static/8b684bdea239d594e296a134f5ec1783/4d406/PROXY_Hippo_G_1_1.jpg"; + else if (id.equals("111046t")) + tokenurl = "https://media.mtgsalvation.com/attachments/32/354/635032480299772645.jpg"; + else if (id.equals("4771t")) + tokenurl = "https://www.mtg.onl/static/b8060dffbaf67ef987c6324c1523d3e4/4d406/PROXY_Hound_G_1_1.jpg"; + else if (id.equals("3591t")) + tokenurl = "https://i.pinimg.com/564x/6e/8d/fe/6e8dfeee2919a3efff210df56ab7b85d.jpg"; + return tokenurl; } - public static boolean hasToken(String id){ - if(id.equals("456378") || id.equals("2912") || id.equals("1514") || id.equals("364") || id.equals("69") || id.equals("369012") || + public static boolean hasToken(String id) { + if (id.equals("456378") || id.equals("2912") || id.equals("1514") || id.equals("364") || id.equals("69") || id.equals("369012") || id.equals("417759") || id.equals("386476") || id.equals("456371") || id.equals("456360") || id.equals("391958") || id.equals("466959") || - id.equals("466813") || id.equals("201176") || id.equals("202483") || id.equals("3546") || id.equals("425949") || id.equals("426027") || - id.equals("425853") || id.equals("425846") || id.equals("426036") || id.equals("370387") || id.equals("29955") || id.equals("29989") || - id.equals("19741") || id.equals("19722") || id.equals("19706") || id.equals("24597") || id.equals("24617") || id.equals("24563")) + id.equals("466813") || id.equals("201176") || id.equals("202483") || id.equals("3546") || id.equals("425949") || id.equals("426027") || + id.equals("425853") || id.equals("425846") || id.equals("426036") || id.equals("370387") || id.equals("29955") || id.equals("29989") || + id.equals("19741") || id.equals("19722") || id.equals("19706") || id.equals("24597") || id.equals("24617") || id.equals("24563") || + id.equals("253539") || id.equals("277995") || id.equals("265415") || id.equals("289225") || id.equals("289215") || id.equals("253529") || + id.equals("253641") || id.equals("270957") || id.equals("401685") || id.equals("89116") || id.equals("5183") || id.equals("5177") || + id.equals("209289") || id.equals("198171") || id.equals("10419") || id.equals("470542") || id.equals("29992")) return false; return true; } @@ -248,7 +330,7 @@ public class ImgDownloader { Elements outlinks = null; try { doc = Jsoup.connect(imageurl + "t" + set.toLowerCase()).get(); - if(doc != null) { + if (doc != null) { outlinks = doc.select("body a"); if (outlinks != null) { for (int k = 0; k < outlinks.size(); k++) { @@ -256,10 +338,10 @@ public class ImgDownloader { if (linktoken != null && !linktoken.isEmpty()) { try { Document tokendoc = Jsoup.connect(linktoken).get(); - if(tokendoc == null) + if (tokendoc == null) continue; Elements stats = tokendoc.select("head meta"); - if(stats != null) { + if (stats != null) { for (int j = 0; j < stats.size(); j++) { String a = stats.get(j).attributes().get("content"); if (stats.get(j).attributes().get("content").contains(tokenstats) && @@ -281,10 +363,10 @@ public class ImgDownloader { try { URL url = new URL("https://deckmaster.info/includes/ajax.php?action=cardSearch&searchString=" + name); HttpURLConnection httpcon = (HttpURLConnection) url.openConnection(); - if(httpcon != null) { + if (httpcon != null) { httpcon.addRequestProperty("User-Agent", "Mozilla/4.76"); InputStream stream = httpcon.getInputStream(); - if(stream != null) { + if (stream != null) { int i; while ((i = stream.read()) != -1) { json = json + ((char) i); @@ -304,10 +386,10 @@ public class ImgDownloader { for (int i = 0; i < urls.size(); i++) { try { Document tokendoc = Jsoup.connect("https://deckmaster.info/card.php?multiverseid=" + urls.get(i)).get(); - if(tokendoc == null) + if (tokendoc == null) continue; Elements stats = tokendoc.select("head meta"); - if(stats != null) { + if (stats != null) { 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", "★/★"))) @@ -336,18 +418,18 @@ public class ImgDownloader { if (!currentSet.equalsIgnoreCase(set)) { try { doc = Jsoup.connect(imageurl + "t" + currentSet).get(); - if(doc == null) + if (doc == null) continue; outlinks = doc.select("body a"); - if(outlinks != null) { + if (outlinks != null) { for (int k = 0; k < outlinks.size(); k++) { String linktoken = outlinks.get(k).attributes().get("href"); try { Document tokendoc = Jsoup.connect(linktoken).get(); - if(tokendoc == null) + if (tokendoc == null) continue; Elements stats = tokendoc.select("head meta"); - if(stats != null) { + if (stats != null) { for (int j = 0; j < stats.size(); j++) { String a = stats.get(j).attributes().get("content"); if (stats.get(j).attributes().get("content").contains(tokenstats) && stats.get(j).attributes().get("content").toLowerCase().contains(name.toLowerCase())) { @@ -368,7 +450,7 @@ public class ImgDownloader { throw new Exception(); } - public static String DownloadCardImages(String set, String[] availableSets, String targetres, String basePath, String destinationPath) throws IOException { + public static String DownloadCardImages(String set, String[] availableSets, String targetres, String basePath, String destinationPath, ProgressDialog progressBarDialog) throws IOException { String res = ""; String baseurl = "https://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid="; @@ -472,8 +554,19 @@ public class ImgDownloader { lines = lines.substring(c + 8); if (primitive != null && id != null && !id.equalsIgnoreCase("null")) mappa.put(id, primitive); + if (id.equals("114921")) { + mappa.put("11492111", "Citizen"); + mappa.put("11492112", "Camarid"); + mappa.put("11492113", "Thrull"); + mappa.put("11492114", "Goblin"); + mappa.put("11492115", "Saproling"); + } } + progressBarDialog.setProgress(0); + progressBarDialog.setMax(totalcards); + progressBarDialog.setTitle("Downloading set: " + set); + File imgPath = new File(destinationPath + set + "/"); if (!imgPath.exists()) { System.out.println("creating directory: " + imgPath.getName()); @@ -509,29 +602,29 @@ public class ImgDownloader { for (int y = 0; y < mappa.size(); y++) { String id = mappa.keySet().toArray()[y].toString(); Document doc = null; - try{ + try { doc = Jsoup.connect(baseurl + id).get(); - } catch(Exception e) { - System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will retry 2 times more..."); - try{ + } catch (Exception e) { + System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will retry 2 times more..."); + try { doc = Jsoup.connect(baseurl + id).get(); - } catch(Exception e2) { - System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will retry 1 time more..."); - try{ + } catch (Exception e2) { + System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will retry 1 time more..."); + try { doc = Jsoup.connect(baseurl + id).get(); - } catch(Exception e3) { - System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will not retry anymore..."); + } catch (Exception e3) { + System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will not retry anymore..."); continue; } } } - if(doc == null){ - System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will not retry anymore..."); + if (doc == null) { + System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will not retry anymore..."); continue; } Elements divs = doc.select("body div"); - if(divs == null){ - System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will not retry anymore..."); + if (divs == null) { + System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will not retry anymore..."); continue; } String scryset = currentSet; @@ -595,12 +688,12 @@ public class ImgDownloader { } } String specialcardurl = getSpecialCardUrl(id); - if(!specialcardurl.isEmpty()){ + if (!specialcardurl.isEmpty()) { URL url = new URL(specialcardurl); InputStream in; - try{ + try { in = new BufferedInputStream(url.openStream()); - }catch(Exception ex){ + } catch (Exception 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()); @@ -625,6 +718,11 @@ public class ImgDownloader { byte[] response = out.toByteArray(); String cardimage = imgPath + "/" + id + ".jpg"; String thumbcardimage = thumbPath + "/" + id + ".jpg"; + if (id.equals("11492111") || id.equals("11492112") || id.equals("11492113") || + id.equals("11492114") || id.equals("11492115")) { + cardimage = imgPath + File.separator + id + "t.jpg"; + thumbcardimage = thumbPath + File.separator + id + "t.jpg"; + } FileOutputStream fos = new FileOutputStream(cardimage); fos.write(response); fos.close(); @@ -644,15 +742,15 @@ public class ImgDownloader { } catch (IOException e) { e.printStackTrace(); } - + progressBarDialog.incrementProgressBy((int) (1)); continue; } - if(doc == null){ + if (doc == null) { System.err.println("Error: Problem fetching card: " + mappa.get(id) + "-" + id + " from " + scryset + " on ScryFall, i will not download it..."); continue; } Elements imgs = doc.select("body img"); - if(imgs == null){ + if (imgs == null) { System.err.println("Error: Problem fetching card: " + mappa.get(id) + "-" + id + " from " + scryset + " on ScryFall, i will not download it..."); continue; } @@ -770,7 +868,7 @@ public class ImgDownloader { } } } - if (hasToken(id) && ((text.trim().toLowerCase().contains("create") && text.trim().toLowerCase().contains("creature token")) || (text.trim().toLowerCase().contains("put") && text.trim().toLowerCase().contains("token")))) { + if (hasToken(id) && ((text.trim().toLowerCase().contains("create") && text.trim().toLowerCase().contains("creature token")) || (text.trim().toLowerCase().contains("put") && text.trim().toLowerCase().contains("token")))) { boolean tokenfound = false; String arrays[] = text.trim().split(" "); String nametoken = ""; @@ -833,17 +931,17 @@ public class ImgDownloader { } String specialtokenurl = getSpecialTokenUrl(id + "t"); Elements imgstoken; - if(!specialtokenurl.isEmpty()) { - try{ + if (!specialtokenurl.isEmpty()) { + try { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); } catch (Exception ex) { System.err.println("Error: Problem occurring while searching for token: " + nametoken + "-" + id + "t, i will not download it..."); break; } - if(doc == null) + if (doc == null) break; imgstoken = doc.select("body img"); - if(imgstoken == null) + if (imgstoken == null) break; tokenfound = true; } else { @@ -864,10 +962,10 @@ public class ImgDownloader { doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get(); } } - if(doc == null) + if (doc == null) break; imgstoken = doc.select("body img"); - if(imgstoken == null) + if (imgstoken == null) break; } for (int p = 0; p < imgstoken.size(); p++) { @@ -879,10 +977,10 @@ public class ImgDownloader { if (CardImageToken.isEmpty()) CardImageToken = imgstoken.get(p).attributes().get("data-src"); URL urltoken = new URL(CardImageToken); - if(!specialtokenurl.isEmpty()) + if (!specialtokenurl.isEmpty()) urltoken = new URL(specialtokenurl); HttpURLConnection httpcontoken = (HttpURLConnection) urltoken.openConnection(); - if(httpcontoken == null) { + if (httpcontoken == null) { System.err.println("Error: Problem downloading token: " + nametoken + "-" + id + "t, i will not download it..."); break; } @@ -942,7 +1040,7 @@ public class ImgDownloader { } } } - + progressBarDialog.incrementProgressBy((int) (1)); break; } } diff --git a/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java b/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java index d203341b5..8ea62a577 100644 --- a/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java +++ b/projects/mtg/Android/src/org/libsdl/app/SDLActivity.java @@ -358,64 +358,87 @@ public class SDLActivity extends Activity implements OnKeyListener { } } - private void downloadCardInfo() { - AlertDialog.Builder cardDownloader = new AlertDialog.Builder(this); - cardDownloader.setTitle("Image Downloader"); - - cardDownloader.setMessage("IMPORTANT: After you press OK you may have to wait a bit while Downloader will evaluate all the sets available in this game version."); - - cardDownloader.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - downloadCardImages(); - } - }); - - cardDownloader.create().show(); - } - String set = ""; String[] availableSets; Integer totalset = 0; + boolean finished = false; + boolean loadResInProgress = false; + ProgressDialog progressBarDialogRes; + + private void loadAvailableSets() { + final Handler mHandler = new Handler(); + progressBarDialogRes = new ProgressDialog(this); + progressBarDialogRes.setTitle("Loading all available sets..."); + progressBarDialogRes.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); + progressBarDialogRes.setProgress(0); + new Thread(new Runnable() { + public void run() { + ArrayList sets = new ArrayList(); + if (availableSets == null) { + loadResInProgress = true; + File baseFolder = new File(getSystemStorageLocation()); + File[] listOfFiles = baseFolder.listFiles(); + ZipFile zipFile = null; + try { + zipFile = new ZipFile(baseFolder + "/" + listOfFiles[0].getName()); + Enumeration e = zipFile.entries(); + while (e.hasMoreElements()) { + ZipEntry entry = e.nextElement(); + String entryName = entry.getName(); + if (entryName != null && entryName.contains("sets/")) { + if (!entryName.equalsIgnoreCase("sets/") && !entryName.contains("primitives") && !entryName.contains(".")) { + String[] names = entryName.split("/"); + sets.add(names[1]); + } + } + } + } catch (IOException ioe) { + System.out.println("Error opening zip file" + ioe); + } finally { + try { + if (zipFile != null) { + zipFile.close(); + } + } catch (IOException ioe) { + System.out.println("Error while closing zip file" + ioe); + } + } + + availableSets = new String[sets.size() + 1]; + availableSets[0] = "*.* - All Wagic sets (thousands of cards)"; + progressBarDialogRes.setMax(sets.size()); + for (int i = 1; i < availableSets.length; i++) { + availableSets[i] = sets.get(i - 1) + " - " + ImgDownloader.getSetInfo(sets.get(i - 1), true, getSystemStorageLocation()); + progressBarDialogRes.incrementProgressBy((int) (1)); + } + } + finished = true; + loadResInProgress = false; + progressBarDialogRes.dismiss(); + mHandler.post(new Runnable() { + public void run() { + while (!finished) { + try { + Thread.sleep(5000); + } catch (Exception e) { + } + } + downloadCardImages(); + } + }); + } + }).start(); + + progressBarDialogRes.show(); + + + } private void downloadCardImages() { AlertDialog.Builder cardDownloader = new AlertDialog.Builder(this); - cardDownloader.setTitle("Which Set would you like to download?"); - ArrayList sets = new ArrayList(); - if (availableSets == null) { - File baseFolder = new File(getSystemStorageLocation()); - File[] listOfFiles = baseFolder.listFiles(); - ZipFile zipFile = null; - try { - zipFile = new ZipFile(baseFolder + "/" + listOfFiles[0].getName()); - Enumeration e = zipFile.entries(); - while (e.hasMoreElements()) { - ZipEntry entry = e.nextElement(); - String entryName = entry.getName(); - if (entryName != null && entryName.contains("sets/")) { - if (!entryName.equalsIgnoreCase("sets/") && !entryName.contains("primitives") && !entryName.contains(".")) { - String[] names = entryName.split("/"); - sets.add(names[1]); - } - } - } - } catch (IOException ioe) { - System.out.println("Error opening zip file" + ioe); - } finally { - try { - if (zipFile != null) { - zipFile.close(); - } - } catch (IOException ioe) { - System.out.println("Error while closing zip file" + ioe); - } - } - availableSets = new String[sets.size() + 1]; - availableSets[0] = "*.* - All Wagic sets (thousands of cards)"; - for (int i = 1; i < availableSets.length; i++) { - availableSets[i] = sets.get(i - 1) + " - " + ImgDownloader.getSetInfo(sets.get(i - 1), true, getSystemStorageLocation()); - } - } + cardDownloader.setTitle("Which Set would you like to download?"); + cardDownloader.setSingleChoiceItems(availableSets, -1, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { set = availableSets[item].split(" - ")[0]; @@ -431,33 +454,71 @@ public class SDLActivity extends Activity implements OnKeyListener { cardDownloader.create().show(); } + boolean error = false; + String res = ""; + boolean dowloadInProgress = false; + ProgressDialog cardDownloader; + private void downloadCardImagesStart() { - AlertDialog.Builder cardDownloader = new AlertDialog.Builder(this); - cardDownloader.setTitle("Download of: " + set); + final Handler mHandler = new Handler(); + cardDownloader = new ProgressDialog(this); + cardDownloader.setTitle("Downloading set: " + set); + cardDownloader.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); + cardDownloader.setProgress(0); + cardDownloader.setMessage("Don't turn off phone or wi-fi/data connection and don't quit Wagic. The download could take several minutes, but you can hide this window and continue to play, a pop-up will notify the completion of process."); - cardDownloader.setMessage("IMPORTANT: After you press OK don't turn off phone or wi-fi/data connection and don't close Wagic.\nThe download process can take several minutes according to the number of images contained in the selected set.\nNOTE: if you choose *.* you may have to wait several hours!!!"); - - cardDownloader.setPositiveButton("OK", new DialogInterface.OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - boolean error = false; - String res = ""; + new Thread(new Runnable() { + public void run() { try { - res = ImgDownloader.DownloadCardImages(set, availableSets, "HI", getSystemStorageLocation(), getUserStorageLocation() + "sets/"); + dowloadInProgress = true; + res = ImgDownloader.DownloadCardImages(set, availableSets, "HI", getSystemStorageLocation(), getUserStorageLocation() + "sets/", cardDownloader); } catch (Exception e) { res = e.getMessage(); error = true; } - downloadCardCompleted(error, res, set); + mHandler.post(new Runnable() { + public void run() { + downloadCardCompleted(error, res, set); + dowloadInProgress = false; + cardDownloader.dismiss(); + } + }); + } + }).start(); + + cardDownloader.setButton(DialogInterface.BUTTON_POSITIVE, "Hide", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + cardDownloader.hide(); } }); - cardDownloader.setNegativeButton("Back", new DialogInterface.OnClickListener() { + cardDownloader.setButton(DialogInterface.BUTTON_NEGATIVE, "Stop Download", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + mHandler.post(new Runnable() { + public void run() { + downloadCardInterruped(set, cardDownloader.getProgress(), cardDownloader.getMax()); + dowloadInProgress = false; + cardDownloader.dismiss(); + } + }); + } + }); + + cardDownloader.show(); + } + + private void downloadCardInterruped(String set, int cardsDownloaded, int total) { + AlertDialog.Builder infoDialog = new AlertDialog.Builder(this); + infoDialog.setTitle("Download of " + set + " has been interrupted!"); + infoDialog.setMessage("WARNING: Only " + cardsDownloaded + " of " + total + " total cards have been downloaded and zip archive (" + set + ".zip) has not been created. You have to start the download again in order to complete the entire set."); + + infoDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { downloadCardImages(); } }); - cardDownloader.create().show(); + infoDialog.create().show(); } private void downloadCardCompleted(boolean error, String res, String set) { @@ -496,9 +557,17 @@ public class SDLActivity extends Activity implements OnKeyListener { importDeckOptions(); } else if (itemId == 3) { if (availableSets == null) - downloadCardInfo(); - else - downloadCardImages(); + loadAvailableSets(); + else { + if (loadResInProgress) { + progressBarDialogRes.show(); + progressBarDialogRes.show(); + } else if (dowloadInProgress) { + cardDownloader.show(); + cardDownloader.show(); + } else + downloadCardImages(); + } } else if (itemId == 4) { // display some info about the app AlertDialog.Builder infoDialog = new AlertDialog.Builder(this);