diff --git a/CHANGELOG.md b/CHANGELOG.md index 96e9ad08b3..c975de4ee4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ - **FEATURE:** Im Tab Beschreibung und im FilmInfo-Dialog können jeweils selektierte Texte der Beschreibung per Kontextmenü in die Zwischenablage kopiert werden. - **FEATURE(Linux):** Für exotische Window Manager können nun die FlatLaf-Dekorationen mittels `-dfd` oder `--disable-flatlaf-decorations` Parametern deaktiviert werden. - **FEATURE:** Info-Datei kann nun per Kontextmenü für jeden Eintrag manuell erzeugt werden. +- **FEATURE:** Die Filmliste wird nun beim Laden zusätzlich auf Duplikate untersucht. Hierbei werden die Mediatheken der ARD und ZDF erst am Ende berücksichtigt um das Angebot der "kleineren" Sender nicht zu benachteiligen. - **FEATURE:** Mittels `Ansicht/Filmstatistik anzeigen` können nun für die vorhandenen Sender Informationen bzgl. Anzahl der Filme und der Duplikate angezeigt werden. Hier werden Livestreams und andere Filter **nicht** berücksichtigt, daher weichen die Angaben von der Anzeige in der Statuszeile ggf. ab. - **FEATURE:** Mit der Lucene-Suche können mittels des `duplicate`-Boolean Parameters Filmduplikate berücksichtigt werden. diff --git a/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java b/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java index 094e879637..45a6034345 100644 --- a/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java +++ b/src/main/java/mediathek/gui/duplicates/FilmDuplicateEvaluationTask.java @@ -50,10 +50,22 @@ private void checkDuplicates() { Stopwatch watch = Stopwatch.createStarted(); listeFilme.stream() .filter(f -> !f.isLivestream()) + .sorted((s1, s2) -> { + // "ARD" und "ZDF" immer am Ende um die kleineren Mediatheken nicht zu benachteiligen + final var s1_sender = s1.getSender(); + final var s2_sender = s2.getSender(); + if (s1_sender.equals("ARD") || s1_sender.equals("ZDF")) { + return 1; + } + if (s2_sender.equals("ARD") || s2_sender.equals("ZDF")) { + return -1; + } + // Alphabetisch sortieren für alle anderen + return s1.compareTo(s2); + }) .forEach(film -> { final var url = film.getUrlNormalQuality(); - final var duplicate = urlCache.contains(url); - film.setDuplicate(duplicate); + film.setDuplicate(urlCache.contains(url)); urlCache.add(url); }); watch.stop();