diff --git a/pom.xml b/pom.xml
index 14d4d66..88f11bd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -28,7 +28,7 @@
tv.mangrana
mangrana-commons
- 6.0.0
+ 7.0.0
diff --git a/src/main/java/tv/mangrana/worker/MainWorker.java b/src/main/java/tv/mangrana/worker/MainWorker.java
index 15a6d51..3aa9770 100644
--- a/src/main/java/tv/mangrana/worker/MainWorker.java
+++ b/src/main/java/tv/mangrana/worker/MainWorker.java
@@ -2,19 +2,22 @@ package tv.mangrana.worker;
import tv.mangrana.config.ConfigFileLoader;
import tv.mangrana.exception.IncorrectWorkingReferencesException;
-import tv.mangrana.sonarr.api.client.gateway.SonarrApiGateway;
public class MainWorker {
- private final SonarrApiGateway sonarrApiGateway;
+
+ private final QueueFixer queueFixer;
public MainWorker() throws IncorrectWorkingReferencesException {
ConfigFileLoader configFileLoader = new ConfigFileLoader();
- sonarrApiGateway = new SonarrApiGateway(configFileLoader);
+ queueFixer = new QueueFixer(configFileLoader);
+ }
+
+ private void work() {
+ queueFixer.fix();
}
public static void main(String[] args) throws IncorrectWorkingReferencesException {
var worker = new MainWorker();
- var queue = worker.sonarrApiGateway.getQueue();
- System.out.println(queue);
+ worker.work();
}
}
diff --git a/src/main/java/tv/mangrana/worker/QueueFixer.java b/src/main/java/tv/mangrana/worker/QueueFixer.java
new file mode 100644
index 0000000..369c96e
--- /dev/null
+++ b/src/main/java/tv/mangrana/worker/QueueFixer.java
@@ -0,0 +1,40 @@
+package tv.mangrana.worker;
+
+import tv.mangrana.config.ConfigFileLoader;
+import tv.mangrana.sonarr.api.client.gateway.SonarrApiGateway;
+import tv.mangrana.sonarr.api.schema.queue.Record;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class QueueFixer {
+ final static String ID_IMPORT_FAILURE = "Found matching series via grab history, but release was matched to series by ID. Automatic import is not possible. See the FAQ for details.";
+ private final SonarrApiGateway sonarrApiGateway;
+
+ QueueFixer(ConfigFileLoader configFileLoader) {
+ sonarrApiGateway = new SonarrApiGateway(configFileLoader);
+ }
+
+ void fix() {
+ var queue = sonarrApiGateway.getFullQueue();
+ List recordsWithImportFailure = queue.getRecords().stream()
+ .filter(this::recordsWithImportFailure)
+ .collect(Collectors.toList());
+ fixFailedImports(recordsWithImportFailure);
+ }
+
+ private boolean recordsWithImportFailure(Record record) {
+ return record.getStatusMessages().stream()
+ .flatMap(status -> status.getMessages().stream())
+ .anyMatch(ID_IMPORT_FAILURE::equals);
+ }
+
+ private void fixFailedImports(List recordsWithImportFailure) {
+ Map recordsByTitle = new HashMap<>();
+ for (var record : recordsWithImportFailure)
+ recordsByTitle.putIfAbsent(record.getTitle(), record);
+ System.out.println(recordsByTitle.keySet());
+ }
+}