ImgScroll/src/main/java/com/rarchives/ripme/ripper/DownloadFileThread.java

65 lines
2.2 KiB
Java
Raw Normal View History

package com.rarchives.ripme.ripper;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import org.apache.log4j.Logger;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
import com.rarchives.ripme.utils.Utils;
public class DownloadFileThread extends Thread {
private static final Logger logger = Logger.getLogger(DownloadFileThread.class);
private URL url;
private File saveAs;
private int retries;
public DownloadFileThread(URL url, File saveAs) {
super();
this.url = url;
this.saveAs = saveAs;
this.retries = Utils.getConfigInteger("download.retries", 1);
}
public void run() {
// Check if file already exists
if (saveAs.exists()) {
if (Utils.getConfigBoolean("file.overwrite", false)) {
2014-02-28 04:49:28 +01:00
logger.info("[!] File already exists and 'file.overwrite' is true, deleting: " + saveAs);
saveAs.delete();
} else {
2014-02-28 04:49:28 +01:00
logger.info("[!] Not downloading " + url + " because file already exists: " + saveAs);
return;
}
}
int tries = 0; // Number of attempts to download
do {
try {
logger.info("[ ] Downloading file from: " + url + (tries > 0 ? " Retry #" + tries : ""));
tries += 1;
Response response;
response = Jsoup.connect(url.toExternalForm())
.ignoreContentType(true)
.execute();
FileOutputStream out = (new FileOutputStream(saveAs));
out.write(response.bodyAsBytes());
out.close();
break; // Download successful: break out of infinite loop
} catch (IOException e) {
logger.error("[!] Exception while downloading file: " + url + " - " + e.getMessage());
}
if (tries > this.retries) {
logger.error("[!] Exceeded maximum retries (" + this.retries + ") for URL " + url);
return;
}
} while (true);
2014-02-28 04:49:28 +01:00
logger.info("[+] Download completed: " + url);
}
}