1
0
Fork 0

introduce queue fixer for all elements

This commit is contained in:
Xavier Fontanet 2024-05-19 14:02:07 +02:00
parent 8092b94b49
commit a36e09ec98
3 changed files with 49 additions and 6 deletions

View File

@ -28,7 +28,7 @@
<dependency> <dependency>
<groupId>tv.mangrana</groupId> <groupId>tv.mangrana</groupId>
<artifactId>mangrana-commons</artifactId> <artifactId>mangrana-commons</artifactId>
<version>6.0.0</version> <version>7.0.0</version>
</dependency> </dependency>
<!-- needed for runtime --> <!-- needed for runtime -->

View File

@ -2,19 +2,22 @@ package tv.mangrana.worker;
import tv.mangrana.config.ConfigFileLoader; import tv.mangrana.config.ConfigFileLoader;
import tv.mangrana.exception.IncorrectWorkingReferencesException; import tv.mangrana.exception.IncorrectWorkingReferencesException;
import tv.mangrana.sonarr.api.client.gateway.SonarrApiGateway;
public class MainWorker { public class MainWorker {
private final SonarrApiGateway sonarrApiGateway;
private final QueueFixer queueFixer;
public MainWorker() throws IncorrectWorkingReferencesException { public MainWorker() throws IncorrectWorkingReferencesException {
ConfigFileLoader configFileLoader = new ConfigFileLoader(); 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 { public static void main(String[] args) throws IncorrectWorkingReferencesException {
var worker = new MainWorker(); var worker = new MainWorker();
var queue = worker.sonarrApiGateway.getQueue(); worker.work();
System.out.println(queue);
} }
} }

View File

@ -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<Record> 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<Record> recordsWithImportFailure) {
Map<String, Record> recordsByTitle = new HashMap<>();
for (var record : recordsWithImportFailure)
recordsByTitle.putIfAbsent(record.getTitle(), record);
System.out.println(recordsByTitle.keySet());
}
}