1
0
mirror of https://github.com/RipMeApp/ripme.git synced 2025-08-10 07:54:02 +02:00

downloadCompleted java.nio

This commit is contained in:
soloturn
2022-01-03 21:15:44 +01:00
parent 65eed02bf2
commit 5d5ce9d0dd
7 changed files with 51 additions and 43 deletions

View File

@@ -6,7 +6,11 @@ import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
@@ -26,7 +30,7 @@ import com.rarchives.ripme.ui.RipStatusMessage;
public abstract class AbstractHTMLRipper extends AbstractRipper { public abstract class AbstractHTMLRipper extends AbstractRipper {
private final Map<URL, File> itemsPending = Collections.synchronizedMap(new HashMap<>()); private final Map<URL, File> itemsPending = Collections.synchronizedMap(new HashMap<>());
private final Map<URL, File> itemsCompleted = Collections.synchronizedMap(new HashMap<>()); private final Map<URL, Path> itemsCompleted = Collections.synchronizedMap(new HashMap<>());
private final Map<URL, String> itemsErrored = Collections.synchronizedMap(new HashMap<>()); private final Map<URL, String> itemsErrored = Collections.synchronizedMap(new HashMap<>());
protected AbstractHTMLRipper(URL url) throws IOException { protected AbstractHTMLRipper(URL url) throws IOException {
@@ -320,11 +324,11 @@ public abstract class AbstractHTMLRipper extends AbstractRipper {
} }
if (Utils.getConfigBoolean("urls_only.save", false)) { if (Utils.getConfigBoolean("urls_only.save", false)) {
// Output URL to file // Output URL to file
String urlFile = this.workingDir + File.separator + "urls.txt"; Path urlFile = Paths.get(this.workingDir + "/urls.txt");
try (FileWriter fw = new FileWriter(urlFile, true)) { String text = url.toExternalForm() + System.lineSeparator();
fw.write(url.toExternalForm()); try {
fw.write(System.lineSeparator()); Files.write(urlFile, text.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND);
itemsCompleted.put(url, new File(urlFile)); itemsCompleted.put(url, urlFile);
} catch (IOException e) { } catch (IOException e) {
LOGGER.error("Error while writing to " + urlFile, e); LOGGER.error("Error while writing to " + urlFile, e);
} }
@@ -366,12 +370,12 @@ public abstract class AbstractHTMLRipper extends AbstractRipper {
/* /*
Cleans up & tells user about successful download Cleans up & tells user about successful download
*/ */
public void downloadCompleted(URL url, File saveAs) { public void downloadCompleted(URL url, Path saveAs) {
if (observer == null) { if (observer == null) {
return; return;
} }
try { try {
String path = Utils.removeCWD(saveAs.toPath()); String path = Utils.removeCWD(saveAs);
RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path); RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path);
itemsPending.remove(url); itemsPending.remove(url);
itemsCompleted.put(url, saveAs); itemsCompleted.put(url, saveAs);
@@ -409,7 +413,7 @@ public abstract class AbstractHTMLRipper extends AbstractRipper {
} }
itemsPending.remove(url); itemsPending.remove(url);
itemsCompleted.put(url, file.toFile()); itemsCompleted.put(url, file);
observer.update(this, new RipStatusMessage(STATUS.DOWNLOAD_WARN, url + " already saved as " + file)); observer.update(this, new RipStatusMessage(STATUS.DOWNLOAD_WARN, url + " already saved as " + file));
checkIfComplete(); checkIfComplete();

View File

@@ -6,13 +6,14 @@ import com.rarchives.ripme.utils.Utils;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.File; import java.io.File;
import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.net.MalformedURLException; import java.net.MalformedURLException;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@@ -24,7 +25,7 @@ import java.util.Map;
public abstract class AbstractJSONRipper extends AbstractRipper { public abstract class AbstractJSONRipper extends AbstractRipper {
private Map<URL, File> itemsPending = Collections.synchronizedMap(new HashMap<URL, File>()); private Map<URL, File> itemsPending = Collections.synchronizedMap(new HashMap<URL, File>());
private Map<URL, File> itemsCompleted = Collections.synchronizedMap(new HashMap<URL, File>()); private Map<URL, Path> itemsCompleted = Collections.synchronizedMap(new HashMap<URL, Path>());
private Map<URL, String> itemsErrored = Collections.synchronizedMap(new HashMap<URL, String>()); private Map<URL, String> itemsErrored = Collections.synchronizedMap(new HashMap<URL, String>());
protected AbstractJSONRipper(URL url) throws IOException { protected AbstractJSONRipper(URL url) throws IOException {
@@ -161,11 +162,11 @@ public abstract class AbstractJSONRipper extends AbstractRipper {
} }
if (Utils.getConfigBoolean("urls_only.save", false)) { if (Utils.getConfigBoolean("urls_only.save", false)) {
// Output URL to file // Output URL to file
String urlFile = this.workingDir + File.separator + "urls.txt"; Path urlFile = Paths.get(this.workingDir + "/urls.txt");
try (FileWriter fw = new FileWriter(urlFile, true)) { String text = url.toExternalForm() + System.lineSeparator();
fw.write(url.toExternalForm()); try {
fw.write(System.lineSeparator()); Files.write(urlFile, text.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND);
itemsCompleted.put(url, new File(urlFile)); itemsCompleted.put(url, urlFile);
} catch (IOException e) { } catch (IOException e) {
LOGGER.error("Error while writing to " + urlFile, e); LOGGER.error("Error while writing to " + urlFile, e);
} }
@@ -207,12 +208,12 @@ public abstract class AbstractJSONRipper extends AbstractRipper {
/** /**
* Cleans up & tells user about successful download * Cleans up & tells user about successful download
*/ */
public void downloadCompleted(URL url, File saveAs) { public void downloadCompleted(URL url, Path saveAs) {
if (observer == null) { if (observer == null) {
return; return;
} }
try { try {
String path = Utils.removeCWD(saveAs.toPath()); String path = Utils.removeCWD(saveAs);
RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path); RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path);
itemsPending.remove(url); itemsPending.remove(url);
itemsCompleted.put(url, saveAs); itemsCompleted.put(url, saveAs);
@@ -250,7 +251,7 @@ public abstract class AbstractJSONRipper extends AbstractRipper {
} }
itemsPending.remove(url); itemsPending.remove(url);
itemsCompleted.put(url, file.toFile()); itemsCompleted.put(url, file);
observer.update(this, new RipStatusMessage(STATUS.DOWNLOAD_WARN, url + " already saved as " + file)); observer.update(this, new RipStatusMessage(STATUS.DOWNLOAD_WARN, url + " already saved as " + file));
checkIfComplete(); checkIfComplete();

View File

@@ -452,7 +452,7 @@ public abstract class AbstractRipper
* @param saveAs * @param saveAs
* Where the downloaded file is stored. * Where the downloaded file is stored.
*/ */
public abstract void downloadCompleted(URL url, File saveAs); public abstract void downloadCompleted(URL url, Path saveAs);
/** /**
* Notifies observers that a file could not be downloaded (includes a reason). * Notifies observers that a file could not be downloaded (includes a reason).
* @param url * @param url

View File

@@ -1,19 +1,22 @@
package com.rarchives.ripme.ripper; package com.rarchives.ripme.ripper;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.file.Path;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import com.rarchives.ripme.ui.RipStatusMessage; import com.rarchives.ripme.ui.RipStatusMessage;
import com.rarchives.ripme.ui.RipStatusMessage.STATUS; import com.rarchives.ripme.ui.RipStatusMessage.STATUS;
import com.rarchives.ripme.utils.Utils; import com.rarchives.ripme.utils.Utils;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
// Should this file even exist? It does the same thing as abstractHTML ripper // Should this file even exist? It does the same thing as abstractHTML ripper
/**' /**'
@@ -22,7 +25,7 @@ import com.rarchives.ripme.utils.Utils;
public abstract class AlbumRipper extends AbstractRipper { public abstract class AlbumRipper extends AbstractRipper {
private Map<URL, File> itemsPending = Collections.synchronizedMap(new HashMap<URL, File>()); private Map<URL, File> itemsPending = Collections.synchronizedMap(new HashMap<URL, File>());
private Map<URL, File> itemsCompleted = Collections.synchronizedMap(new HashMap<URL, File>()); private Map<URL, Path> itemsCompleted = Collections.synchronizedMap(new HashMap<URL, Path>());
private Map<URL, String> itemsErrored = Collections.synchronizedMap(new HashMap<URL, String>()); private Map<URL, String> itemsErrored = Collections.synchronizedMap(new HashMap<URL, String>());
protected AlbumRipper(URL url) throws IOException { protected AlbumRipper(URL url) throws IOException {
@@ -68,11 +71,11 @@ public abstract class AlbumRipper extends AbstractRipper {
} }
if (Utils.getConfigBoolean("urls_only.save", false)) { if (Utils.getConfigBoolean("urls_only.save", false)) {
// Output URL to file // Output URL to file
String urlFile = this.workingDir + File.separator + "urls.txt"; Path urlFile = Paths.get(this.workingDir + "/urls.txt");
try (FileWriter fw = new FileWriter(urlFile, true)) { String text = url.toExternalForm() + System.lineSeparator();
fw.write(url.toExternalForm()); try {
fw.write(System.lineSeparator()); Files.write(urlFile, text.getBytes(StandardCharsets.UTF_8), StandardOpenOption.APPEND);
itemsCompleted.put(url, new File(urlFile)); itemsCompleted.put(url, urlFile);
} catch (IOException e) { } catch (IOException e) {
LOGGER.error("Error while writing to " + urlFile, e); LOGGER.error("Error while writing to " + urlFile, e);
} }
@@ -114,12 +117,12 @@ public abstract class AlbumRipper extends AbstractRipper {
/** /**
* Cleans up & tells user about successful download * Cleans up & tells user about successful download
*/ */
public void downloadCompleted(URL url, File saveAs) { public void downloadCompleted(URL url, Path saveAs) {
if (observer == null) { if (observer == null) {
return; return;
} }
try { try {
String path = Utils.removeCWD(saveAs.toPath()); String path = Utils.removeCWD(saveAs);
RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path); RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path);
itemsPending.remove(url); itemsPending.remove(url);
itemsCompleted.put(url, saveAs); itemsCompleted.put(url, saveAs);
@@ -157,7 +160,7 @@ public abstract class AlbumRipper extends AbstractRipper {
} }
itemsPending.remove(url); itemsPending.remove(url);
itemsCompleted.put(url, file.toFile()); itemsCompleted.put(url, file);
observer.update(this, new RipStatusMessage(STATUS.DOWNLOAD_WARN, url + " already saved as " + file)); observer.update(this, new RipStatusMessage(STATUS.DOWNLOAD_WARN, url + " already saved as " + file));
checkIfComplete(); checkIfComplete();

View File

@@ -315,7 +315,7 @@ class DownloadFileThread extends Thread {
return; return;
} }
} while (true); } while (true);
observer.downloadCompleted(url, saveAs); observer.downloadCompleted(url, saveAs.toPath());
logger.info("[+] Saved " + url + " as " + this.prettySaveAs); logger.info("[+] Saved " + url + " as " + this.prettySaveAs);
} }

View File

@@ -137,7 +137,7 @@ class DownloadVideoThread extends Thread {
return; return;
} }
} while (true); } while (true);
observer.downloadCompleted(url, saveAs.toFile()); observer.downloadCompleted(url, saveAs);
logger.info("[+] Saved " + url + " as " + this.prettySaveAs); logger.info("[+] Saved " + url + " as " + this.prettySaveAs);
} }

View File

@@ -118,13 +118,13 @@ public abstract class VideoRipper extends AbstractRipper {
* @param saveAs Path to file, including filename. * @param saveAs Path to file, including filename.
*/ */
@Override @Override
public void downloadCompleted(URL url, File saveAs) { public void downloadCompleted(URL url, Path saveAs) {
if (observer == null) { if (observer == null) {
return; return;
} }
try { try {
String path = Utils.removeCWD(saveAs.toPath()); String path = Utils.removeCWD(saveAs);
RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path); RipStatusMessage msg = new RipStatusMessage(STATUS.DOWNLOAD_COMPLETE, path);
observer.update(this, msg); observer.update(this, msg);