diff --git a/src/main/java/com/rarchives/ripme/App.java b/src/main/java/com/rarchives/ripme/App.java
index 4749d7c2..3092f71b 100644
--- a/src/main/java/com/rarchives/ripme/App.java
+++ b/src/main/java/com/rarchives/ripme/App.java
@@ -9,8 +9,12 @@ import java.io.FileNotFoundException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Arrays;
-import java.util.List;
+import java.util.Collections;
+import java.util.Date;
import javax.swing.SwingUtilities;
@@ -97,6 +101,21 @@ public class App {
AbstractRipper ripper = AbstractRipper.getRipper(url);
ripper.setup();
ripper.rip();
+
+ String u = ripper.getURL().toExternalForm();
+ Date date = new Date();
+ if (HISTORY.containsURL(u)) {
+ HistoryEntry entry = HISTORY.getEntryByURL(u);
+ entry.modifiedDate = date;
+ } else {
+ HistoryEntry entry = new HistoryEntry();
+ entry.url = u;
+ entry.dir = ripper.getWorkingDir().getAbsolutePath();
+ try {
+ entry.title = ripper.getAlbumTitle(ripper.getURL());
+ } catch (MalformedURLException e) { }
+ HISTORY.add(entry);
+ }
}
/**
@@ -146,13 +165,17 @@ public class App {
//Re-rip all previous albums
if (cl.hasOption('r')) {
// Re-rip all via command-line
- List history = Utils.getConfigList("download.history");
- for (String urlString : history) {
+ loadHistory();
+ if (HISTORY.toList().isEmpty()) {
+ logger.error("There are no history entries to re-rip. Rip some albums first");
+ System.exit(-1);
+ }
+ for (HistoryEntry entry : HISTORY.toList()) {
try {
- URL url = new URL(urlString.trim());
- rip(url);
+ URL url = new URL(entry.url);
+ rip(url);
} catch (Exception e) {
- logger.error("[!] Failed to rip URL " + urlString, e);
+ logger.error("[!] Failed to rip URL " + entry.url, e);
continue;
}
try {
@@ -244,6 +267,7 @@ public class App {
//The URL to rip.
if (cl.hasOption('u')) {
+ loadHistory();
String url = cl.getOptionValue('u').trim();
ripURL(url, !cl.hasOption("n"));
}
@@ -263,14 +287,7 @@ public class App {
try {
URL url = new URL(targetURL);
rip(url);
- List history = Utils.getConfigList("download.history");
- if (!history.contains(url.toExternalForm())) {//if you haven't already downloaded the file before
- history.add(url.toExternalForm());//add it to history so you won't have to redownload
- Utils.setConfigList("download.history", Arrays.asList(history.toArray()));
- if (saveConfig) {
- Utils.saveConfig();
- }
- }
+ saveHistory();
} catch (MalformedURLException e) {
logger.error("[!] Given URL is not valid. Expected URL format is http://domain.com/...");
// System.exit(-1);
@@ -324,6 +341,7 @@ public class App {
/**
* Loads history from history file into memory.
+ * @see MainWindow.loadHistory
*/
private static void loadHistory() {
File historyFile = new File(Utils.getConfigDir() + File.separator + "history.json");
@@ -359,4 +377,22 @@ public class App {
}
}
}
+
+ /*
+ * @see MainWindow.saveHistory
+ */
+ private static void saveHistory() {
+ Path historyFile = Paths.get(Utils.getConfigDir() + File.separator + "history.json");
+ try {
+ if (!Files.exists(historyFile)) {
+ Files.createDirectories(historyFile.getParent());
+ Files.createFile(historyFile);
+ }
+
+ HISTORY.toFile(historyFile.toString());
+ Utils.setConfigList("download.history", Collections.emptyList());
+ } catch (IOException e) {
+ logger.error("Failed to save history to file " + historyFile, e);
+ }
+ }
}