Improved Android Downloader and added the multiple set selection in the download option menu.
This commit is contained in:
@@ -87,9 +87,9 @@ public class ImgDownloader {
|
||||
while (e.hasMoreElements()) {
|
||||
ZipEntry entry = e.nextElement();
|
||||
String entryName = entry.getName();
|
||||
if (entryName.contains("sets/")) {
|
||||
if (entryName.contains("sets" + File.separator)) {
|
||||
if (entryName.contains("_cards.dat")) {
|
||||
String[] names = entryName.split("/");
|
||||
String[] names = entryName.split(File.separator);
|
||||
if (setName.equalsIgnoreCase(names[1])) {
|
||||
stream = zipFile.getInputStream(entry);
|
||||
byte[] buffer = new byte[1];
|
||||
@@ -413,7 +413,7 @@ public class ImgDownloader {
|
||||
}
|
||||
}
|
||||
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 = 0; i < availableSets.length; i++) {
|
||||
String currentSet = availableSets[i].toLowerCase().split(" - ")[0];
|
||||
if (!currentSet.equalsIgnoreCase(set)) {
|
||||
try {
|
||||
@@ -461,40 +461,39 @@ public class ImgDownloader {
|
||||
Integer ThumbX = 0;
|
||||
Integer ThumbY = 0;
|
||||
|
||||
if (targetres.equals("HI")) {
|
||||
if (targetres.equals("High")) {
|
||||
ImgX = 488;
|
||||
ImgY = 680;
|
||||
ThumbX = 90;
|
||||
ThumbY = 128;
|
||||
} else if (targetres.equals("LOW")) {
|
||||
} else if (targetres.equals("Medium")) {
|
||||
ImgX = 244;
|
||||
ImgY = 340;
|
||||
ThumbX = 45;
|
||||
ThumbY = 64;
|
||||
} else if (targetres.equals("Low")) {
|
||||
ImgX = 180;
|
||||
ImgY = 255;
|
||||
ThumbX = 45;
|
||||
ThumbY = 64;
|
||||
}
|
||||
|
||||
File baseFolder = new File(basePath);
|
||||
File[] listOfFiles = baseFolder.listFiles();
|
||||
String currentSet = "";
|
||||
for (int f = 1; f < availableSets.length; f++) {
|
||||
if (set.equalsIgnoreCase("*.*"))
|
||||
currentSet = availableSets[f];
|
||||
else
|
||||
currentSet = set;
|
||||
Map<String, String> mappa = new HashMap<String, String>();
|
||||
ZipFile zipFile = null;
|
||||
InputStream stream = null;
|
||||
java.nio.file.Path filePath = null;
|
||||
try {
|
||||
zipFile = new ZipFile(basePath + "/" + listOfFiles[0].getName());
|
||||
zipFile = new ZipFile(basePath + File.separator + listOfFiles[0].getName());
|
||||
Enumeration<? extends ZipEntry> e = zipFile.entries();
|
||||
while (e.hasMoreElements()) {
|
||||
ZipEntry entry = e.nextElement();
|
||||
String entryName = entry.getName();
|
||||
if (entryName != null && entryName.contains("sets/")) {
|
||||
if (entryName != null && entryName.contains("sets" + File.separator)) {
|
||||
if (entryName.contains("_cards.dat")) {
|
||||
String[] names = entryName.split("/");
|
||||
if (currentSet.equalsIgnoreCase(names[1])) {
|
||||
String[] names = entryName.split(File.separator);
|
||||
if (set.equalsIgnoreCase(names[1])) {
|
||||
stream = zipFile.getInputStream(entry);
|
||||
byte[] buffer = new byte[1];
|
||||
java.nio.file.Path outDir = Paths.get(basePath);
|
||||
@@ -511,8 +510,6 @@ public class ImgDownloader {
|
||||
} catch (Exception ex) {
|
||||
System.out.println("Error extracting zip file" + ex);
|
||||
}
|
||||
if (!set.equalsIgnoreCase("*.*"))
|
||||
f = availableSets.length;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -565,9 +562,8 @@ public class ImgDownloader {
|
||||
|
||||
progressBarDialog.setProgress(0);
|
||||
progressBarDialog.setMax(totalcards);
|
||||
progressBarDialog.setTitle("Downloading set: " + set);
|
||||
|
||||
File imgPath = new File(destinationPath + set + "/");
|
||||
File imgPath = new File(destinationPath + set + File.separator);
|
||||
if (!imgPath.exists()) {
|
||||
System.out.println("creating directory: " + imgPath.getName());
|
||||
boolean result = false;
|
||||
@@ -583,7 +579,7 @@ public class ImgDownloader {
|
||||
}
|
||||
}
|
||||
|
||||
File thumbPath = new File(destinationPath + set + "/thumbnails/");
|
||||
File thumbPath = new File(destinationPath + set + File.separator + "thumbnails" + File.separator);
|
||||
if (!thumbPath.exists()) {
|
||||
System.out.println("creating directory: " + thumbPath.getName());
|
||||
boolean result = false;
|
||||
@@ -627,7 +623,7 @@ public class ImgDownloader {
|
||||
System.err.println("Error: Problem reading card (" + mappa.get(id) + ") infos from: " + baseurl + id + ", i will not retry anymore...");
|
||||
continue;
|
||||
}
|
||||
String scryset = currentSet;
|
||||
String scryset = set;
|
||||
if (scryset.equalsIgnoreCase("MRQ"))
|
||||
scryset = "MMQ";
|
||||
else if (scryset.equalsIgnoreCase("AVN"))
|
||||
@@ -682,7 +678,7 @@ public class ImgDownloader {
|
||||
doc = Jsoup.connect(imageurl + scryset.toLowerCase()).get();
|
||||
} catch (Exception e3) {
|
||||
System.err.println("Error: Problem downloading card: " + mappa.get(id) + "-" + id + " from " + scryset + " on ScryFall, i will not retry anymore...");
|
||||
res = mappa.get(id) + " - " + currentSet + "/" + id + ".jpg\n" + res;
|
||||
res = mappa.get(id) + " - " + set + File.separator + id + ".jpg\n" + res;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -716,8 +712,8 @@ public class ImgDownloader {
|
||||
out.close();
|
||||
in.close();
|
||||
byte[] response = out.toByteArray();
|
||||
String cardimage = imgPath + "/" + id + ".jpg";
|
||||
String thumbcardimage = thumbPath + "/" + id + ".jpg";
|
||||
String cardimage = imgPath + File.separator + id + ".jpg";
|
||||
String thumbcardimage = thumbPath + File.separator + 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";
|
||||
@@ -795,8 +791,8 @@ public class ImgDownloader {
|
||||
out.close();
|
||||
in.close();
|
||||
byte[] response = out.toByteArray();
|
||||
String cardimage = imgPath + "/" + id + ".jpg";
|
||||
String thumbcardimage = thumbPath + "/" + id + ".jpg";
|
||||
String cardimage = imgPath + File.separator + id + ".jpg";
|
||||
String thumbcardimage = thumbPath + File.separator + id + ".jpg";
|
||||
FileOutputStream fos = new FileOutputStream(cardimage);
|
||||
fos.write(response);
|
||||
fos.close();
|
||||
@@ -1047,15 +1043,15 @@ public class ImgDownloader {
|
||||
}
|
||||
try {
|
||||
try {
|
||||
File oldzip = new File(destinationPath + "/" + set + "/" + set + ".zip");
|
||||
File oldzip = new File(destinationPath + File.separator + set + File.separator + set + ".zip");
|
||||
oldzip.delete();
|
||||
} catch (Exception e) {
|
||||
}
|
||||
ZipParameters zipParameters = new ZipParameters();
|
||||
zipParameters.setCompressionMethod(CompressionMethod.STORE);
|
||||
File folder = new File(destinationPath + set + "/");
|
||||
File folder = new File(destinationPath + set + File.separator);
|
||||
File[] listOfFile = folder.listFiles();
|
||||
net.lingala.zip4j.ZipFile zipped = new net.lingala.zip4j.ZipFile(destinationPath + "/" + set + "/" + set + ".zip");
|
||||
net.lingala.zip4j.ZipFile zipped = new net.lingala.zip4j.ZipFile(destinationPath + File.separator + set + File.separator + set + ".zip");
|
||||
for (int i = 0; i < listOfFile.length; i++) {
|
||||
if (listOfFile[i].isDirectory()) {
|
||||
zipped.addFolder(listOfFile[i], zipParameters);
|
||||
@@ -1063,7 +1059,7 @@ public class ImgDownloader {
|
||||
zipped.addFile(listOfFile[i], zipParameters);
|
||||
}
|
||||
}
|
||||
File destFolder = new File(destinationPath + set + "/");
|
||||
File destFolder = new File(destinationPath + set + File.separator);
|
||||
listOfFiles = destFolder.listFiles();
|
||||
for (int u = 0; u < listOfFiles.length; u++) {
|
||||
if (!listOfFiles[u].getName().contains(".zip")) {
|
||||
@@ -1078,7 +1074,7 @@ public class ImgDownloader {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import net.wagic.utils.DeckImporter;
|
||||
import net.wagic.utils.ImgDownloader;
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.widget.ListView;
|
||||
import android.app.Dialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
@@ -360,6 +361,8 @@ public class SDLActivity extends Activity implements OnKeyListener {
|
||||
|
||||
String set = "";
|
||||
String[] availableSets;
|
||||
ArrayList<String> selectedSets;
|
||||
boolean[] checkedSet;
|
||||
Integer totalset = 0;
|
||||
boolean finished = false;
|
||||
boolean loadResInProgress = false;
|
||||
@@ -404,11 +407,12 @@ public class SDLActivity extends Activity implements OnKeyListener {
|
||||
}
|
||||
}
|
||||
|
||||
availableSets = new String[sets.size() + 1];
|
||||
availableSets[0] = "*.* - All Wagic sets (thousands of cards)";
|
||||
availableSets = new String[sets.size()];
|
||||
checkedSet = new boolean[sets.size()];
|
||||
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());
|
||||
for (int i = 0; i < availableSets.length; i++) {
|
||||
availableSets[i] = sets.get(i) + " - " + ImgDownloader.getSetInfo(sets.get(i), true, getSystemStorageLocation());
|
||||
checkedSet[i] = false;
|
||||
progressBarDialogRes.incrementProgressBy((int) (1));
|
||||
}
|
||||
}
|
||||
@@ -437,20 +441,38 @@ public class SDLActivity extends Activity implements OnKeyListener {
|
||||
private void downloadCardImages() {
|
||||
AlertDialog.Builder cardDownloader = new AlertDialog.Builder(this);
|
||||
|
||||
cardDownloader.setTitle("Which Set would you like to download?");
|
||||
cardDownloader.setTitle("Which Sets would you like to download?");
|
||||
selectedSets = new ArrayList<String>();
|
||||
|
||||
cardDownloader.setSingleChoiceItems(availableSets, -1, new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int item) {
|
||||
set = availableSets[item].split(" - ")[0];
|
||||
cardDownloader.setMultiChoiceItems(availableSets, checkedSet, new DialogInterface.OnMultiChoiceClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
|
||||
checkedSet[which] = isChecked;
|
||||
if (checkedSet[which])
|
||||
selectedSets.add(availableSets[which].split(" - ")[0]);
|
||||
else
|
||||
selectedSets.remove(availableSets[which].split(" - ")[0]);
|
||||
}
|
||||
});
|
||||
|
||||
cardDownloader.setPositiveButton("Confirm Selection", new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
cardDownloader.setNeutralButton("Download All", new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
selectedSets.clear();
|
||||
for (int i = 0; i < availableSets.length; i++) {
|
||||
selectedSets.add(availableSets[i].split(" - ")[0]);
|
||||
}
|
||||
downloadCardImagesStart();
|
||||
}
|
||||
});
|
||||
|
||||
cardDownloader.setPositiveButton("Download Selected", new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (selectedSets.size() > 0)
|
||||
downloadCardImagesStart();
|
||||
else
|
||||
downloadCardImages();
|
||||
}
|
||||
});
|
||||
|
||||
cardDownloader.create().show();
|
||||
}
|
||||
|
||||
@@ -462,28 +484,47 @@ public class SDLActivity extends Activity implements OnKeyListener {
|
||||
private void downloadCardImagesStart() {
|
||||
final Handler mHandler = new Handler();
|
||||
cardDownloader = new ProgressDialog(this);
|
||||
cardDownloader.setTitle("Downloading set: " + set);
|
||||
cardDownloader.setTitle("Downloading now 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.");
|
||||
if (selectedSets.size() == 1)
|
||||
cardDownloader.setMessage("You choose to download just 1 set: Please don't quit Wagic or turn off Internet connection, you can hide this window and continue to play, a pop-up will notify the completion of download process.");
|
||||
else
|
||||
cardDownloader.setMessage("You choose to download " + selectedSets.size() + " sets: Please don't quit Wagic or turn off Internet connection, you can hide this window and continue to play, a pop-up will notify the completion of download process.");
|
||||
|
||||
new Thread(new Runnable() {
|
||||
public void run() {
|
||||
try {
|
||||
dowloadInProgress = true;
|
||||
res = ImgDownloader.DownloadCardImages(set, availableSets, "HI", getSystemStorageLocation(), getUserStorageLocation() + "sets/", cardDownloader);
|
||||
if (selectedSets != null) {
|
||||
for (int i = 0; i < selectedSets.size(); i++) {
|
||||
try {
|
||||
set = selectedSets.get(i);
|
||||
mHandler.post(new Runnable() {
|
||||
public void run() {
|
||||
cardDownloader.setTitle("Downloading set: " + set);
|
||||
}
|
||||
});
|
||||
String details = ImgDownloader.DownloadCardImages(set, availableSets, "High", getSystemStorageLocation(), getUserStorageLocation() + "sets/", cardDownloader);
|
||||
if (!details.isEmpty()) {
|
||||
if (!res.isEmpty())
|
||||
res = res + "\nSET " + set + ":\n" + details;
|
||||
else
|
||||
res = "SET " + set + ":\n" + details;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
res = e.getMessage();
|
||||
res = res + "\n" + e.getMessage();
|
||||
error = true;
|
||||
}
|
||||
}
|
||||
mHandler.post(new Runnable() {
|
||||
public void run() {
|
||||
downloadCardCompleted(error, res, set);
|
||||
downloadSelectedSetsCompleted(error, res);
|
||||
dowloadInProgress = false;
|
||||
cardDownloader.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
|
||||
cardDownloader.setButton(DialogInterface.BUTTON_POSITIVE, "Hide", new DialogInterface.OnClickListener() {
|
||||
@@ -521,19 +562,21 @@ public class SDLActivity extends Activity implements OnKeyListener {
|
||||
infoDialog.create().show();
|
||||
}
|
||||
|
||||
private void downloadCardCompleted(boolean error, String res, String set) {
|
||||
private void downloadSelectedSetsCompleted(boolean error, String res) {
|
||||
AlertDialog.Builder infoDialog = new AlertDialog.Builder(this);
|
||||
if (!error) {
|
||||
infoDialog.setTitle("Download Completed: " + set);
|
||||
infoDialog.setTitle("The download process has completed without any error");
|
||||
if (!res.isEmpty())
|
||||
infoDialog.setMessage("Warning: Following cards could not be downloaded:\n" + res);
|
||||
else
|
||||
infoDialog.setMessage("All the cards have been successfully downloaded");
|
||||
infoDialog.setMessage("Following cards could not be downloaded:\n" + res);
|
||||
} else {
|
||||
infoDialog.setTitle("Error downloading: " + set + ", please try again...");
|
||||
infoDialog.setTitle("Some errors occurred during the process!");
|
||||
infoDialog.setMessage(res);
|
||||
}
|
||||
infoDialog.create().show();
|
||||
res = "";
|
||||
set = "";
|
||||
selectedSets = new ArrayList<String>();
|
||||
error = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user