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()); + } +}