diff --git a/.github/workflows/develop-pre-release.yml b/.github/workflows/develop-pre-release.yml index bc0b5b179..46ff171bc 100644 --- a/.github/workflows/develop-pre-release.yml +++ b/.github/workflows/develop-pre-release.yml @@ -10,10 +10,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v1 with: - java-version: 21 + java-version: 25 java-package: jdk+fx - name: Cache local Maven repository uses: actions/cache@v4 @@ -49,4 +49,4 @@ jobs: target/*.jar target/*.tar.* target/*.zip - target/classes/THIRD-PARTY.txt \ No newline at end of file + target/classes/THIRD-PARTY.txt diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index f4e388357..2d50b309d 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -9,10 +9,10 @@ jobs: steps: - uses: actions/checkout@v2 - - name: Set up JDK 21 + - name: Set up JDK 25 uses: actions/setup-java@v1 with: - java-version: 21 + java-version: 25 java-package: jdk+fx - name: Cache local Maven repository uses: actions/cache@v4 diff --git a/pom.xml b/pom.xml index bccfbdfa0..99011ad69 100644 --- a/pom.xml +++ b/pom.xml @@ -54,9 +54,10 @@ + UTF-8 4.0.1-SNAPSHOT - 21 + 25 3.27.7 1.18.11 @@ -77,13 +78,13 @@ 3.4.2 3.11.0 3.2.0 - 3.10.1 + 3.15.0 3.0.1 3.3.0 3.4.1 3.3.0 3.2.1 - 3.1.2 + 3.5.6 5.23.0 4.12.0 3.13.2 @@ -339,6 +340,7 @@ copy-dependencies copy-dependencies + properties prepare-package @@ -406,10 +408,11 @@ maven-surefire-plugin ${maven-surefire-plugin.version} - -javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar classes true true + + -javaagent:${settings.localRepository}/org/mockito/mockito-core/${mockito.version}/mockito-core-${mockito.version}.jar diff --git a/src/main/java/de/mediathekview/mserver/base/config/ConfigManager.java b/src/main/java/de/mediathekview/mserver/base/config/ConfigManager.java index 12ebbaef9..00ca303a6 100644 --- a/src/main/java/de/mediathekview/mserver/base/config/ConfigManager.java +++ b/src/main/java/de/mediathekview/mserver/base/config/ConfigManager.java @@ -1,17 +1,13 @@ package de.mediathekview.mserver.base.config; import com.yacl4j.core.ConfigurationBuilder; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import java.net.URL; import java.nio.file.Path; -import java.nio.file.Paths; /** A manager to load configurations. */ public abstract class ConfigManager { private T config; - //private static final Logger LOG = LogManager.getLogger(ConfigManager.class); protected abstract String getConfigFileName(); @@ -53,7 +49,7 @@ public String getResourcePath(String resourceName) { ClassLoader classLoader = getClass().getClassLoader(); URL resourceUrl = classLoader.getResource(resourceName); if (resourceUrl != null) { - Path resourcePath = Paths.get(resourceUrl.toURI()); + Path resourcePath = Path.of(resourceUrl.toURI()); return resourcePath.toString(); } } diff --git a/src/main/java/de/mediathekview/mserver/base/utils/FilmDBService.java b/src/main/java/de/mediathekview/mserver/base/utils/FilmDBService.java index 3897b0fe9..dab81f6ae 100644 --- a/src/main/java/de/mediathekview/mserver/base/utils/FilmDBService.java +++ b/src/main/java/de/mediathekview/mserver/base/utils/FilmDBService.java @@ -152,7 +152,7 @@ public Optional readFilmlistFromDB(String where, String limit) { int readCounter = 0; Filmlist list = new Filmlist(); try (Connection con = dataSource.getConnection(); - PreparedStatement ps = con.prepareStatement("SELECT data FROM filme " + where + " ORDER BY data ->> 'sender', data ->> 'thema', data ->> 'titel' " + limit); + PreparedStatement ps = con.prepareStatement("SELECT data FROM filme " + where + " ORDER BY data ->> 'sender', data ->> 'thema', data ->> 'titel' " + limit) ) { ps.setFetchSize(50000); try (ResultSet rs = ps.executeQuery()) { diff --git a/src/main/java/de/mediathekview/mserver/crawler/CrawlerManager.java b/src/main/java/de/mediathekview/mserver/crawler/CrawlerManager.java index b4f881b6a..8e9de1344 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/CrawlerManager.java +++ b/src/main/java/de/mediathekview/mserver/crawler/CrawlerManager.java @@ -41,7 +41,6 @@ import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.time.LocalDateTime; import java.util.*; import java.util.Map.Entry; @@ -110,11 +109,11 @@ public void copyFilmlist() { for (final Entry copyEntry : copySettings.getCopyTargetFilePaths().entrySet()) { copyFilmlist( - copyEntry.getKey(), new FileCopyTarget(Paths.get(copyEntry.getValue())), false); + copyEntry.getKey(), new FileCopyTarget(Path.of(copyEntry.getValue())), false); } for (final Entry copyEntry : copySettings.getCopyTargetDiffFilePaths().entrySet()) { - copyFilmlist(copyEntry.getKey(), new FileCopyTarget(Paths.get(copyEntry.getValue())), true); + copyFilmlist(copyEntry.getKey(), new FileCopyTarget(Path.of(copyEntry.getValue())), true); } } } @@ -134,7 +133,7 @@ public void copyFilmlist( } if (formats.contains(aFilmlistFormat)) { - copyFilmlist(Paths.get(paths.get(aFilmlistFormat)), aFileCopyTarget); + copyFilmlist(Path.of(paths.get(aFilmlistFormat)), aFileCopyTarget); } else { printMessage(ServerMessages.FORMAT_NOT_IN_SAVE_FORMATS, aFilmlistFormat); } @@ -234,7 +233,7 @@ public void importFilmlist(final ImportFilmlistConfiguration importFilmlistConfi * MServerConfigDTO#getFilmlistSavePaths()}. */ public void saveDifferenceFilmlist() { - config.getFilmlistDiffSavePaths().forEach((key, value) -> saveFilmlist(Paths.get(value), key, true)); + config.getFilmlistDiffSavePaths().forEach((key, value) -> saveFilmlist(Path.of(value), key, true)); } /** @@ -246,7 +245,7 @@ public void saveFilmlist() { if (checkConfigForFilmlistSave()) { config .getFilmlistSaveFormats() - .forEach(f -> saveFilmlist(Paths.get(config.getFilmlistSavePaths().get(f)), f)); + .forEach(f -> saveFilmlist(Path.of(config.getFilmlistSavePaths().get(f)), f)); } } @@ -277,7 +276,7 @@ public void saveFilmlist( if (parentDir != null) { try { Files.createDirectories(parentDir); - } catch (final IOException ioException) { + } catch (final IOException _) { LOG.debug("Can't create the parent directories!"); printMessage(ServerMessages.FILMLIST_SAVE_PATH_INVALID, filmlistFilePath.toString()); return; @@ -436,7 +435,7 @@ public void shutdown() { } private Path filterPath(final Path aSavePath) { - return Paths.get(aSavePath.toString().replaceFirst(HOME_PATTERN, USER_HOME_PATH)); + return Path.of(aSavePath.toString().replaceFirst(HOME_PATTERN, USER_HOME_PATH)); } private Set getCrawlerToRun() { @@ -459,7 +458,7 @@ private Set getCrawlerToRun() { return crawlerToRun; } - private Optional importFilmlistFromDB() throws IOException { + private Optional importFilmlistFromDB() { FilmDBService filmDBService = new FilmDBService(getExecutorService(), getConfigManager().getConfig().getDatabaseConfig().getBatchSize(), getConfigManager().getConfig().getDatabaseConfig().getRefreshIntervalInDays()); Optional dbFilmlist = filmDBService.readFilmlistFromDB(); return dbFilmlist; @@ -467,7 +466,7 @@ private Optional importFilmlistFromDB() throws IOException { private Optional importFilmlistFromFile( final FilmlistFormats aFormat, final String aFilmlistLocation) throws IOException { - final Path filmlistPath = Paths.get(aFilmlistLocation); + final Path filmlistPath = Path.of(aFilmlistLocation); if (checkFilmlistImportFile(filmlistPath)) { filmlistManager.addAllMessageListener(messageListeners); return filmlistManager.importList(aFormat, filmlistPath); @@ -480,7 +479,7 @@ private Optional importFilmListFromURl( try { filmlistManager.addAllMessageListener(messageListeners); return filmlistManager.importList(aFormat, new URI(aFilmlistLocation).toURL()); - } catch (final MalformedURLException | URISyntaxException malformedURLException) { + } catch (final MalformedURLException | URISyntaxException _) { printMessage(ServerMessages.FILMLIST_IMPORT_URL_INVALID, aFilmlistLocation); } return Optional.empty(); @@ -489,7 +488,7 @@ private Optional importFilmListFromURl( public void writeHashFile() { if (Boolean.TRUE.equals(config.getWriteFilmlistHashFileEnabled())) { final Path hashFilePath = - filterPath(Paths.get(config.getFilmlistHashFilePath())).toAbsolutePath(); + filterPath(Path.of(config.getFilmlistHashFilePath())).toAbsolutePath(); if (!Files.exists(hashFilePath.getParent()) || !Files.isWritable(hashFilePath.getParent()) || !filmlistManager.writeHashFile(filmlist, hashFilePath)) { @@ -501,7 +500,7 @@ public void writeHashFile() { public void writeIdFile() { if (Boolean.TRUE.equals(config.getWriteFilmlistIdFileEnabled())) { final Path idFilePath = - filterPath(Paths.get(config.getFilmlistIdFilePath())).toAbsolutePath(); + filterPath(Path.of(config.getFilmlistIdFilePath())).toAbsolutePath(); if (!Files.exists(idFilePath.getParent()) || !Files.isWritable(idFilePath.getParent()) || !filmlistManager.writeIdFile(filmlist, idFilePath)) { diff --git a/src/main/java/de/mediathekview/mserver/crawler/ard/UrlOptimizer.java b/src/main/java/de/mediathekview/mserver/crawler/ard/UrlOptimizer.java index d9651d852..42c340a2d 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/ard/UrlOptimizer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/ard/UrlOptimizer.java @@ -1,15 +1,8 @@ package de.mediathekview.mserver.crawler.ard; import java.io.IOException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; -import java.util.TreeMap; import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -32,7 +25,7 @@ public void debug2(String adaptive, Map allUrls) { Map proposal = buildFilmUrlFromAdaptive(adaptive, allUrls.entrySet().stream().findFirst().get().getValue()); if(proposal.size() != allUrls.size() && !adaptive.contains("arte.")) { - System.out.println("asdf"); + LOG.debug("asdf"); Map x = buildFromUrl(adaptive, allUrls.entrySet().stream().findFirst().get().getValue()); StringBuffer sb = new StringBuffer(); sb.append("#").append(adaptive).append("#").append(printMap(proposal)).append("#vs#").append(printMap(allUrls)); @@ -148,7 +141,7 @@ public List extractResolutionHVFromAdaptive(String adaptive) { // ---------------------------------------------------------------------------------------------------------------------------------------------------- public Map buildFilmUrlFromAdaptive(String adaptive, String aUrl) { - Map result = new HashMap<>(); + Map result = new EnumMap<>(Resolution.class); Map rawStringUrlMap = buildFromUrl(adaptive, aUrl); rawStringUrlMap.forEach( (resolutionVertical, url) -> { try { diff --git a/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteDtoVideo2FilmTask.java b/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteDtoVideo2FilmTask.java index a46272013..876f1e978 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteDtoVideo2FilmTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteDtoVideo2FilmTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.arte.tasks; - +import java.io.Serial; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; @@ -30,7 +30,7 @@ public class ArteDtoVideo2FilmTask extends AbstractRecursiveConverterTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; protected final transient Logger log = LogManager.getLogger(this.getClass()); private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX"); diff --git a/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTask.java b/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTask.java index 3bfa3a078..412a7f646 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.arte.tasks; - +import java.io.Serial; import java.lang.reflect.Type; import java.net.URI; import java.util.Optional; @@ -7,9 +7,6 @@ import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import com.google.gson.JsonDeserializer; import com.google.gson.reflect.TypeToken; @@ -25,8 +22,7 @@ public class ArteVideoInfoTask extends AbstractJsonRestTask, TopicUrlDTO> { - private static final long serialVersionUID = 1L; - protected final transient Logger log = LogManager.getLogger(this.getClass()); + @Serial private static final long serialVersionUID = 1L; protected Optional> nextPageTask = Optional.empty(); protected int maxSubpages; diff --git a/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoLinkTask.java b/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoLinkTask.java index ede10fc40..ec8219718 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoLinkTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoLinkTask.java @@ -1,13 +1,10 @@ package de.mediathekview.mserver.crawler.arte.tasks; - +import java.io.Serial; import java.lang.reflect.Type; import java.net.URI; import java.util.List; import java.util.Queue; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - import com.google.gson.JsonDeserializer; import com.google.gson.reflect.TypeToken; @@ -24,10 +21,8 @@ public class ArteVideoLinkTask extends AbstractJsonRestTask, ArteVideoInfoDto> { - private static final long serialVersionUID = 1L; - protected final transient Logger log = LogManager.getLogger(this.getClass()); + @Serial private static final long serialVersionUID = 1L; - public ArteVideoLinkTask(AbstractCrawler crawler, Queue videoInfo) { super(crawler, videoInfo, ArteConstants.API_TOKEN); } diff --git a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractDocumentTask.java b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractDocumentTask.java index 6f54d2fb4..271d2904a 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractDocumentTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractDocumentTask.java @@ -8,6 +8,7 @@ import org.jsoup.nodes.Document; import java.io.IOException; +import java.io.Serial; import java.util.Queue; /** @@ -22,7 +23,7 @@ */ public abstract class AbstractDocumentTask extends AbstractUrlTask { - private static final long serialVersionUID = -4124779055395250981L; + @Serial private static final long serialVersionUID = -4124779055395250981L; private static final Logger LOG = LogManager.getLogger(AbstractDocumentTask.class); private static final String LOAD_DOCUMENT_ERRORTEXTPATTERN = "Something terrible happened while crawl the %s page \"%s\"."; diff --git a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractJsonRestTask.java b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractJsonRestTask.java index 2654b92bf..3578e5893 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractJsonRestTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractJsonRestTask.java @@ -7,6 +7,7 @@ import jakarta.ws.rs.client.Invocation.Builder; import jakarta.ws.rs.client.WebTarget; import jakarta.ws.rs.core.Response; +import java.io.Serial; import java.lang.reflect.Type; import java.net.URI; import java.nio.charset.StandardCharsets; @@ -24,7 +25,7 @@ public abstract class AbstractJsonRestTask extends AbstractRestTask { protected final transient Logger log = LogManager.getLogger(this.getClass()); protected static final String ENCODING_GZIP = "gzip"; - private static final long serialVersionUID = -1090560363478964885L; + @Serial private static final long serialVersionUID = -1090560363478964885L; protected final transient GsonBuilder gsonBuilder; protected AbstractJsonRestTask( diff --git a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRecursiveConverterTask.java b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRecursiveConverterTask.java index ba4626a39..17d261d49 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRecursiveConverterTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRecursiveConverterTask.java @@ -1,6 +1,7 @@ package de.mediathekview.mserver.crawler.basic; import de.mediathekview.mserver.base.config.MServerBasicConfigDTO; +import java.io.Serial; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -20,7 +21,7 @@ */ public abstract class AbstractRecursiveConverterTask extends RecursiveTask> { private static final Logger LOG = LogManager.getLogger(AbstractRecursiveConverterTask.class); - private static final long serialVersionUID = 8416254950859957820L; + @Serial private static final long serialVersionUID = 8416254950859957820L; private final transient Queue elementsToProcess; diff --git a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRestTask.java b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRestTask.java index 0b827fd6b..7facefb1f 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRestTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractRestTask.java @@ -8,6 +8,7 @@ import jakarta.ws.rs.client.Client; import jakarta.ws.rs.client.ClientBuilder; import jakarta.ws.rs.client.WebTarget; +import java.io.Serial; import java.util.Optional; import java.util.Queue; import java.util.concurrent.TimeUnit; @@ -30,7 +31,7 @@ public abstract class AbstractRestTask extends Abstr protected static final String HEADER_CONTENT_TYPE = "Content-Type"; protected static final String AUTHORIZATION_BEARER = "Bearer "; protected static final String APPLICATION_JSON = "application/json"; - private static final long serialVersionUID = 2590729915326002860L; + @Serial private static final long serialVersionUID = 2590729915326002860L; private final transient String authKey; private final transient Client client; diff --git a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractUrlTask.java b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractUrlTask.java index 64f5f3b5a..5149a9210 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractUrlTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/basic/AbstractUrlTask.java @@ -1,5 +1,6 @@ package de.mediathekview.mserver.crawler.basic; +import java.io.Serial; import java.util.Queue; import java.util.concurrent.RecursiveTask; @@ -14,7 +15,7 @@ */ public abstract class AbstractUrlTask extends AbstractRecursiveConverterTask { - private static final long serialVersionUID = -4077156510484515410L; + @Serial private static final long serialVersionUID = -4077156510484515410L; protected AbstractUrlTask(final AbstractCrawler aCrawler, final Queue aUrlToCrawlDTOs) { super(aCrawler, aUrlToCrawlDTOs); diff --git a/src/main/java/de/mediathekview/mserver/crawler/kika/json/KikaApiVideoInfoPageDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/kika/json/KikaApiVideoInfoPageDeserializer.java index 84a242af2..a93143778 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/kika/json/KikaApiVideoInfoPageDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/kika/json/KikaApiVideoInfoPageDeserializer.java @@ -79,12 +79,12 @@ private void addVideoUrlAndResolution(final ArrayList urls, KikaApiVideo // gap into the middle (size/2) to take one of the medium quality urls if (!urls.isEmpty()) { if (urls.size() > 2) { - aKikaApiVideoInfoDto.addUrl(Resolution.HD, urls.get(urls.size()-1)); + aKikaApiVideoInfoDto.addUrl(Resolution.HD, urls.getLast()); } if (urls.size() > 1) { aKikaApiVideoInfoDto.addUrl(Resolution.NORMAL, urls.get(urls.size()/2)); } - aKikaApiVideoInfoDto.addUrl(Resolution.SMALL, urls.get(0)); + aKikaApiVideoInfoDto.addUrl(Resolution.SMALL, urls.getFirst()); } } diff --git a/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiFilmTask.java b/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiFilmTask.java index d0e5459e9..b9483f1ad 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiFilmTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiFilmTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.kika.tasks; - +import java.io.Serial; import java.lang.reflect.Type; import java.net.MalformedURLException; import java.net.URI; @@ -41,7 +41,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class KikaApiFilmTask extends AbstractJsonRestTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; private static final Logger LOG = LogManager.getLogger(KikaApiFilmTask.class); private transient ArdUrlOptimizer ardUrlOptimizer; diff --git a/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicTask.java b/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicTask.java index 161cebe27..7877565ed 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.kika.tasks; - +import java.io.Serial; import java.lang.reflect.Type; import java.net.URI; import java.util.Optional; @@ -24,7 +24,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class KikaApiTopicTask extends AbstractJsonRestTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; private static final Logger LOG = LogManager.getLogger(KikaApiTopicTask.class); private int subPageIndex = 0; diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnAZTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnAZTask.java index 8856e1e21..fc4338c9c 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnAZTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnAZTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.lang.reflect.Type; import java.util.Queue; @@ -15,7 +15,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class OrfOnAZTask extends OrfOnPagedTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; public OrfOnAZTask(AbstractCrawler crawler, Queue urlToCrawlDTOs) { super(crawler, urlToCrawlDTOs); diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodeTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodeTask.java index 45cac6e2d..e8ea94c3d 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodeTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodeTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.lang.reflect.Type; import java.net.URI; import java.time.Duration; @@ -27,7 +27,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class OrfOnEpisodeTask extends AbstractJsonRestTask { - private static final long serialVersionUID = 3272445100769901305L; + @Serial private static final long serialVersionUID = 3272445100769901305L; private static final Logger LOG = LogManager.getLogger(OrfOnEpisodeTask.class); private static final String ORF_AUDIODESCRIPTION_PREFIX = "AD | "; diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodesTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodesTask.java index ba4ed4627..bb6c25c6e 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodesTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnEpisodesTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.lang.reflect.Type; import java.util.Queue; @@ -15,7 +15,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class OrfOnEpisodesTask extends OrfOnPagedTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; public OrfOnEpisodesTask(AbstractCrawler crawler, Queue urlToCrawlDTOs) { super(crawler, urlToCrawlDTOs); diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryChildrenTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryChildrenTask.java index 7a2ef396d..8d30e3964 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryChildrenTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryChildrenTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.lang.reflect.Type; import java.util.Queue; import java.util.Set; @@ -17,7 +17,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class OrfOnHistoryChildrenTask extends OrfOnPagedTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; public OrfOnHistoryChildrenTask(AbstractCrawler crawler, Queue urlToCrawlDTOs) { super(crawler, urlToCrawlDTOs); diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryTask.java index 70911b0d5..340a4c5ef 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.lang.reflect.Type; import java.util.Queue; @@ -15,7 +15,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class OrfOnHistoryTask extends OrfOnPagedTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; public OrfOnHistoryTask(AbstractCrawler crawler, Queue urlToCrawlDTOs) { diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryVideoItemTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryVideoItemTask.java index 684270f3d..a4e501b6a 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryVideoItemTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnHistoryVideoItemTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.lang.reflect.Type; import java.util.Queue; @@ -15,7 +15,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class OrfOnHistoryVideoItemTask extends OrfOnPagedTask { - private static final long serialVersionUID = 1L; + @Serial private static final long serialVersionUID = 1L; public OrfOnHistoryVideoItemTask(AbstractCrawler crawler, Queue urlToCrawlDTOs) { super(crawler, urlToCrawlDTOs); diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnPagedTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnPagedTask.java index a054951de..b46b86e9b 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnPagedTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnPagedTask.java @@ -1,15 +1,11 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.net.URI; import java.util.Optional; import java.util.Queue; import java.util.Set; import java.util.concurrent.ConcurrentLinkedQueue; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - - import de.mediathekview.mserver.crawler.basic.AbstractCrawler; import de.mediathekview.mserver.crawler.basic.AbstractJsonRestTask; import de.mediathekview.mserver.crawler.basic.AbstractRecursiveConverterTask; @@ -21,8 +17,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public abstract class OrfOnPagedTask extends AbstractJsonRestTask, OrfOnBreadCrumsUrlDTO> { - private static final long serialVersionUID = 1L; - protected final transient Logger log = LogManager.getLogger(this.getClass()); + @Serial private static final long serialVersionUID = 1L; protected Optional> nextPageTask = Optional.empty(); protected OrfOnPagedTask(AbstractCrawler crawler, Queue urlToCrawlDTOs) { diff --git a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnScheduleTask.java b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnScheduleTask.java index ed5b1ee3c..cac30567b 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnScheduleTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/orfon/task/OrfOnScheduleTask.java @@ -1,5 +1,5 @@ package de.mediathekview.mserver.crawler.orfon.task; - +import java.io.Serial; import java.lang.reflect.Type; import java.util.Queue; @@ -15,7 +15,7 @@ // extends AbstractRestTask // return T Class from this task, desirialisation of class R , D , Reasearch in this url public class OrfOnScheduleTask extends OrfOnPagedTask { - private static final long serialVersionUID = -2556623295745879044L; + @Serial private static final long serialVersionUID = -2556623295745879044L; public OrfOnScheduleTask(AbstractCrawler crawler, Queue urlToCrawlDTOs) { super(crawler, urlToCrawlDTOs); diff --git a/src/main/java/de/mediathekview/mserver/crawler/phoenix/parser/PhoenixFilmDetailDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/phoenix/parser/PhoenixFilmDetailDeserializer.java index 840b08b7f..145265885 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/phoenix/parser/PhoenixFilmDetailDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/phoenix/parser/PhoenixFilmDetailDeserializer.java @@ -39,7 +39,7 @@ public Optional deserialize( final Optional baseName = parseBaseName(jsonObject); final Optional website = parseWebsite(jsonObject); - if (!title.isPresent() || !subtitle.isPresent() || !baseName.isPresent()) { + if (title.isEmpty() || subtitle.isEmpty() || baseName.isEmpty()) { return Optional.empty(); } diff --git a/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfFilmDetailTask.java b/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfFilmDetailTask.java index 47d4b86bd..e63601a80 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfFilmDetailTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfFilmDetailTask.java @@ -16,13 +16,14 @@ import jakarta.ws.rs.client.Invocation; import jakarta.ws.rs.client.WebTarget; import jakarta.ws.rs.core.Response; +import java.io.Serial; import java.lang.reflect.Type; import java.net.URI; import java.util.Optional; import java.util.Queue; public class SrfFilmDetailTask extends AbstractRestTask { - private static final long serialVersionUID = 7984235678468580128L; + @Serial private static final long serialVersionUID = 7984235678468580128L; private static final Logger LOG = LogManager.getLogger(SrfFilmDetailTask.class); public SrfFilmDetailTask( @@ -36,8 +37,7 @@ protected void processRestTarget(final CrawlerUrlDTO aDTO, final WebTarget aTarg final Response response = request.header(HEADER_ACCEPT_ENCODING, ENCODING_GZIP).get(); switch (response.getStatus()) { - case 200: - case 203: + case 200, 203: parseFilm(response, aTarget.getUri()); break; case 403: diff --git a/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfScheduleOverviewTask.java b/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfScheduleOverviewTask.java index 350eea90b..6ba19eb9f 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfScheduleOverviewTask.java +++ b/src/main/java/de/mediathekview/mserver/crawler/srf/tasks/SrfScheduleOverviewTask.java @@ -8,12 +8,13 @@ import de.mediathekview.mserver.crawler.srf.parser.SrfScheduleDeserializer; import jakarta.ws.rs.client.WebTarget; +import java.io.Serial; import java.lang.reflect.Type; import java.util.Queue; import java.util.Set; public class SrfScheduleOverviewTask extends ArdTaskBase { - private static final long serialVersionUID = 1978224352345L; + @Serial private static final long serialVersionUID = 1978224352345L; private static final Type SRF_SCHEDULE_DESERIALIZER = new TypeToken>() {}.getType(); diff --git a/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfDownloadDtoDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfDownloadDtoDeserializer.java index 6af6c5376..6c4c66a17 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfDownloadDtoDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfDownloadDtoDeserializer.java @@ -179,7 +179,7 @@ private void parseSubtitle(final DownloadDto dto, final JsonObject rootNode) { // prefer xml subtitles if (uriValue.endsWith(RELEVANT_SUBTITLE_TYPE) - || !dto.getSubTitleUrl(language).isPresent()) { + || dto.getSubTitleUrl(language).isEmpty()) { dto.addSubTitleUrl(language, uriValue); } } @@ -191,14 +191,10 @@ private Resolution parseVideoQuality(final JsonObject quality) { Resolution qualityValue; final String zdfQuality = quality.get(JSON_ELEMENT_QUALITY).getAsString(); switch (zdfQuality) { - case ZDF_QUALITY_LOW: - case ZDF_QUALITY_MED: - case ZDF_QUALITY_MEDIUM: - case ZDF_QUALITY_HIGH: + case ZDF_QUALITY_LOW, ZDF_QUALITY_MED, ZDF_QUALITY_MEDIUM, ZDF_QUALITY_HIGH: qualityValue = Resolution.SMALL; break; - case ZDF_QUALITY_VERYHIGH: - case ZDF_QUALITY_HD: + case ZDF_QUALITY_VERYHIGH, ZDF_QUALITY_HD: qualityValue = Resolution.NORMAL; break; case ZDF_QUALITY_FHD: diff --git a/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfFilmDetailDeserializer.java b/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfFilmDetailDeserializer.java index 3497a75c4..6ae17ddfb 100644 --- a/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfFilmDetailDeserializer.java +++ b/src/main/java/de/mediathekview/mserver/crawler/zdf/json/ZdfFilmDetailDeserializer.java @@ -116,7 +116,7 @@ public Optional deserialize( } final Optional selfId = JsonUtils.getElementValueAsString(aJsonObject, "self"); if(id.isEmpty() && selfId.isEmpty()) { - System.out.println("check"); + LOG.debug("check"); } final Optional film = diff --git a/src/main/java/de/mediathekview/mserver/daten/AbstractMediaResource.java b/src/main/java/de/mediathekview/mserver/daten/AbstractMediaResource.java index 99d2e6f94..1ab3779a6 100644 --- a/src/main/java/de/mediathekview/mserver/daten/AbstractMediaResource.java +++ b/src/main/java/de/mediathekview/mserver/daten/AbstractMediaResource.java @@ -1,6 +1,7 @@ package de.mediathekview.mserver.daten; import de.mediathekview.mserver.base.utils.TextCleaner; +import java.io.Serial; import java.io.Serializable; import java.net.URL; import java.time.LocalDateTime; @@ -9,7 +10,7 @@ import java.util.stream.Collectors; public abstract class AbstractMediaResource implements Serializable { - private static final long serialVersionUID = -6404888306701549134L; + @Serial private static final long serialVersionUID = -6404888306701549134L; private Map urls; private UUID uuid; // Old: filmNr private Sender sender; diff --git a/src/main/java/de/mediathekview/mserver/daten/Film.java b/src/main/java/de/mediathekview/mserver/daten/Film.java index c5c7b3f69..911ef6697 100644 --- a/src/main/java/de/mediathekview/mserver/daten/Film.java +++ b/src/main/java/de/mediathekview/mserver/daten/Film.java @@ -1,5 +1,6 @@ package de.mediathekview.mserver.daten; +import java.io.Serial; import java.net.URL; import java.time.Duration; import java.time.LocalDateTime; @@ -8,7 +9,7 @@ /** Represents a found film. */ public class Film extends Podcast { - private static final long serialVersionUID = -7834270191129532291L; + @Serial private static final long serialVersionUID = -7834270191129532291L; private final Set subtitles; private Map audioDescriptions; private Map signLanguages; @@ -146,7 +147,8 @@ public int hashCode() { public boolean hasUT() { return !subtitles.isEmpty(); } - + + @Override public Optional getDefaultUrl() { Optional defaultFilmUrl = super.getDefaultUrl(); if (defaultFilmUrl.isPresent()) { diff --git a/src/main/java/de/mediathekview/mserver/daten/Livestream.java b/src/main/java/de/mediathekview/mserver/daten/Livestream.java index 7fbf5d6b5..192597c30 100644 --- a/src/main/java/de/mediathekview/mserver/daten/Livestream.java +++ b/src/main/java/de/mediathekview/mserver/daten/Livestream.java @@ -1,11 +1,12 @@ package de.mediathekview.mserver.daten; +import java.io.Serial; import java.net.URL; import java.time.LocalDateTime; import java.util.UUID; public class Livestream extends AbstractMediaResource { - private static final long serialVersionUID = 6510203888335220851L; + @Serial private static final long serialVersionUID = 6510203888335220851L; /** * DON'T USE! - ONLY FOR GSON! diff --git a/src/main/java/de/mediathekview/mserver/daten/Podcast.java b/src/main/java/de/mediathekview/mserver/daten/Podcast.java index 48d2817d6..e99abbcec 100644 --- a/src/main/java/de/mediathekview/mserver/daten/Podcast.java +++ b/src/main/java/de/mediathekview/mserver/daten/Podcast.java @@ -1,12 +1,13 @@ package de.mediathekview.mserver.daten; +import java.io.Serial; import java.time.Duration; import java.time.LocalDateTime; import java.util.Objects; import java.util.UUID; public class Podcast extends AbstractMediaResource { - private static final long serialVersionUID = -7161315980975471103L; + @Serial private static final long serialVersionUID = -7161315980975471103L; private Duration duration; private boolean neu; diff --git a/src/main/java/de/mediathekview/mserver/filmlisten/FilmlistManager.java b/src/main/java/de/mediathekview/mserver/filmlisten/FilmlistManager.java index 8f25b4f9d..0681c8d8a 100644 --- a/src/main/java/de/mediathekview/mserver/filmlisten/FilmlistManager.java +++ b/src/main/java/de/mediathekview/mserver/filmlisten/FilmlistManager.java @@ -15,7 +15,6 @@ import java.io.IOException; import java.io.InputStream; import java.net.URL; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; @@ -123,7 +122,7 @@ private boolean compress( try { CompressionManager.getInstance().compress(compressionType.get(), aSourcePath, aTargetPath); return true; - } catch (final IOException ioException) { + } catch (final IOException _) { publishMessage( FilmListMessages.FILMLIST_COMPRESS_ERROR, aTargetPath.toAbsolutePath().toString()); } @@ -135,12 +134,11 @@ public boolean writeHashFile(final Filmlist filmlist, final Path savePath) { try (final BufferedWriter fileWriter = Files.newBufferedWriter( savePath, - StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) { fileWriter.write(String.valueOf(filmlist.hashCode())); return true; - } catch (final IOException ioException) { + } catch (final IOException _) { LOG.fatal("Can't write the hash file \"{}\".", savePath); return false; } @@ -150,12 +148,11 @@ public boolean writeIdFile(final Filmlist filmlist, final Path savePath) { try (final BufferedWriter fileWriter = Files.newBufferedWriter( savePath, - StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)) { fileWriter.write(filmlist.getListId().toString()); return true; - } catch (final IOException ioException) { + } catch (final IOException _) { LOG.fatal("Can't write the hash file \"{}\".", savePath); return false; } @@ -173,7 +170,7 @@ private boolean compressFile( } finally { try { Files.deleteIfExists(tempPath); - } catch (final IOException ioException) { + } catch (final IOException _) { LOG.error(String.format("Can't delete temp file \"%s\".", tempPath)); } } diff --git a/src/main/java/de/mediathekview/mserver/filmlisten/reader/CantReadFilmException.java b/src/main/java/de/mediathekview/mserver/filmlisten/reader/CantReadFilmException.java index 36684187b..202d64b63 100644 --- a/src/main/java/de/mediathekview/mserver/filmlisten/reader/CantReadFilmException.java +++ b/src/main/java/de/mediathekview/mserver/filmlisten/reader/CantReadFilmException.java @@ -1,7 +1,9 @@ package de.mediathekview.mserver.filmlisten.reader; +import java.io.Serial; + public class CantReadFilmException extends Exception { - private static final long serialVersionUID = -1839526789842123501L; + @Serial private static final long serialVersionUID = -1839526789842123501L; public CantReadFilmException(final String aExceptionText) { super(aExceptionText); diff --git a/src/main/java/de/mediathekview/mserver/ui/config/MServerConfigUI.java b/src/main/java/de/mediathekview/mserver/ui/config/MServerConfigUI.java index 14497703e..bd4c55c36 100644 --- a/src/main/java/de/mediathekview/mserver/ui/config/MServerConfigUI.java +++ b/src/main/java/de/mediathekview/mserver/ui/config/MServerConfigUI.java @@ -23,7 +23,6 @@ import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.List; @@ -31,7 +30,7 @@ public final class MServerConfigUI { // logger setup in start - private Logger LOG = null; + private Logger log = null; private static final String CONFIG_FILE_NAME = "MServer-Config.yaml"; private LogMessageListener logMessageListener; private CrawlerManager manager; @@ -56,13 +55,13 @@ private void addListeners() { } private void generateDefaultConfiguration() { - final Path configFilePath = Paths.get(CONFIG_FILE_NAME); + final Path configFilePath = Path.of(CONFIG_FILE_NAME); try { final Path defaultConfigFile = - Paths.get(getClass().getClassLoader().getResource(CONFIG_FILE_NAME).toURI()); + Path.of(getClass().getClassLoader().getResource(CONFIG_FILE_NAME).toURI()); Files.copy(defaultConfigFile, configFilePath); } catch (final IOException | URISyntaxException ioException) { - LOG.error("The default configuration can't be generated.", ioException); + log.error("The default configuration can't be generated.", ioException); logMessageListener.consumeMessage( ServerMessages.UI_GENERATE_DEFAULT_CONFIG_FILE_FAILED, configFilePath.toAbsolutePath().toString()); @@ -76,7 +75,7 @@ private String generateCustomsConfiguration(String sourcefile) { try { // get a copy of this file to use it as configuration file fileUrl = URI.create(configFileName).toURL(); - String filename = Paths.get(fileUrl.getPath()).getFileName().toString(); + String filename = Path.of(fileUrl.getPath()).getFileName().toString(); MServerConfigUI.getRemoteFileToLocal(configFileName, filename); configFileName = filename; } catch (MalformedURLException e) { @@ -112,7 +111,7 @@ void start(final String[] aProgramAgruments) { // here we set the correct configManager for all log4logger // logsettings are stored static in our factory new Log4JConfigurationFactory(aMServerConfigManager.getConfig().getLogSettings()); - LOG = LogManager.getLogger(MServerConfigUI.class); + log = LogManager.getLogger(MServerConfigUI.class); logMessageListener = new LogMessageListener(); // new PostgreSQLDataSourceProvider(aMServerConfigManager); // init singleton diff --git a/src/test/java/de/mediathekview/mserver/base/config/ConfigManagerTest.java b/src/test/java/de/mediathekview/mserver/base/config/ConfigManagerTest.java index dd31e31fa..06d6a0558 100644 --- a/src/test/java/de/mediathekview/mserver/base/config/ConfigManagerTest.java +++ b/src/test/java/de/mediathekview/mserver/base/config/ConfigManagerTest.java @@ -5,7 +5,6 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.Arrays; @@ -75,11 +74,11 @@ void testReadFileConfig() throws IOException { @BeforeEach void deleteExistingFiles() throws IOException { - Files.deleteIfExists(Paths.get(TEST_CONFIG_FILE_NAME)); + Files.deleteIfExists(Path.of(TEST_CONFIG_FILE_NAME)); } private void writeTempTestFileConfig() throws IOException { - final Path tempConfigPath = Paths.get("./" + TEST_CONFIG_FILE_NAME); + final Path tempConfigPath = Path.of("./" + TEST_CONFIG_FILE_NAME); Files.write( tempConfigPath, diff --git a/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistHashFileTest.java b/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistHashFileTest.java index 42f13d644..893ba4c83 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistHashFileTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistHashFileTest.java @@ -19,6 +19,6 @@ void testWriteFilmlistHashFile() throws IOException { final Filmlist filmlist = new Filmlist(); FilmlistManager.getInstance().writeHashFile(filmlist, testHashFilePath.toAbsolutePath()); assertThat( - String.valueOf(filmlist.hashCode()), equalTo(Files.readAllLines(testHashFilePath).get(0))); + String.valueOf(filmlist.hashCode()), equalTo(Files.readAllLines(testHashFilePath).getFirst())); } } diff --git a/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistIdFileTest.java b/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistIdFileTest.java index dd2c85799..a1123c66f 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistIdFileTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/WriteFilmlistIdFileTest.java @@ -19,6 +19,6 @@ void testWriteFilmlistIdFile() throws IOException { final Filmlist filmlist = new Filmlist(); FilmlistManager.getInstance().writeIdFile(filmlist, testIdFilePath.toAbsolutePath()); assertThat( - String.valueOf(filmlist.getListId()), equalTo(Files.readAllLines(testIdFilePath).get(0))); + String.valueOf(filmlist.getListId()), equalTo(Files.readAllLines(testIdFilePath).getFirst())); } } diff --git a/src/test/java/de/mediathekview/mserver/crawler/ard/UrlOptimizerTest.java b/src/test/java/de/mediathekview/mserver/crawler/ard/UrlOptimizerTest.java index 6791df584..f70915469 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/ard/UrlOptimizerTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/ard/UrlOptimizerTest.java @@ -1,6 +1,7 @@ package de.mediathekview.mserver.crawler.ard; import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; import de.mediathekview.mserver.base.config.MServerConfigManager; import de.mediathekview.mserver.base.messages.listener.MessageListener; @@ -377,7 +378,7 @@ static Stream dataM3UToUrls() { @MethodSource("dataM3UToUrls") void testM3UToUrls(String adaptive, String sampleUrl, List expected) { crawler = createCrawler(); - crawler = Mockito.mock(ArdCrawler.class); + crawler = mock(ArdCrawler.class); UrlOptimizer urlOptimizer = new UrlOptimizer(crawler); Map actual = urlOptimizer.buildUrlsFromPlaylist(adaptive, sampleUrl); @@ -393,7 +394,7 @@ void singleTest() { crawler = createCrawler(); UrlOptimizer urlOptimizer = new UrlOptimizer(crawler); Map actual = urlOptimizer.buildFilmUrlFromAdaptive(adaptive, sampleUrl); - System.out.println(urlOptimizer.printMap(actual)); + IO.println(urlOptimizer.printMap(actual)); } protected ArdCrawler createCrawler() { diff --git a/src/test/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTaskTest.java b/src/test/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTaskTest.java index c67259591..2706fcbbf 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTaskTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/arte/tasks/ArteVideoInfoTaskTest.java @@ -24,7 +24,7 @@ void test() { List>> expectedResult = generateExpectedResult(); for(List> entry : expectedResult) { Optional act = result.stream() - .filter(item -> item.getId().equalsIgnoreCase(entry.get(0).get())) + .filter(item -> item.getId().equalsIgnoreCase(entry.getFirst().get())) .findFirst(); assertTrue(act.isPresent()); assertEntry(act.get(), entry.toArray(new Optional[0])); diff --git a/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java b/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java index 588820127..447024d27 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/basic/M3U8ParserTest.java @@ -67,16 +67,17 @@ void parseTestSrf() { final M3U8Parser target = new M3U8Parser(); final List actual = target.parse( - "#EXTM3U\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=118000,CODECS=\"avc1.66.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_av.m3u8?start=0.0&end=3305.1\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=739000,CODECS=\"avc1.77.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_1_av.m3u8?start=0.0&end=3305.1\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1395000,CODECS=\"avc1.77.30, mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_2_av.m3u8?start=0.0&end=3305.1\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=23000,CODECS=\"mp4a.40.2\",CLOSED-CAPTIONS=NONE\n" - + "https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_a.m3u8?start=0.0&end=3305.1\n" - + ""); + """ + #EXTM3U + #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=118000,CODECS="avc1.66.30, mp4a.40.2",CLOSED-CAPTIONS=NONE + https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_av.m3u8?start=0.0&end=3305.1 + #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=739000,CODECS="avc1.77.30, mp4a.40.2",CLOSED-CAPTIONS=NONE + https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_1_av.m3u8?start=0.0&end=3305.1 + #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1395000,CODECS="avc1.77.30, mp4a.40.2",CLOSED-CAPTIONS=NONE + https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_2_av.m3u8?start=0.0&end=3305.1 + #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=23000,CODECS="mp4a.40.2",CLOSED-CAPTIONS=NONE + https://hdvodsrforigin-f.akamaihd.net/i/vod/1gegen100/2010/05/1gegen100_20100517_200706_web_h264_16zu9_,lq1,mq1,hq1,.mp4.csmil/index_0_a.m3u8?start=0.0&end=3305.1 + """); assertThat(actual, notNullValue()); assertThat(actual.size(), equalTo(4)); @@ -156,24 +157,25 @@ void parseTestSrf2() { final M3U8Parser target = new M3U8Parser(); final List actual = target.parse( - "Optional[#EXTM3U\n" - + "#EXT-X-VERSION:5\n" - + "#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID=\"subs\",LANGUAGE=\"de\",NAME=\"Deutsch\",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI=\"https://www.srf.ch/subtitles/srf/948d8f5a-03a7-49e2-b174-a4b7b3c4a043/episode/de/vod/vod.m3u8\"\n" - + "#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"audio\",NAME=\"audio_deu\",LANGUAGE=\"deu\",DEFAULT=YES,AUTOSELECT=YES,URI=\"QualityLevels(128000)/Manifest(audio_deu,format=m3u8-aapl)\"\n" - + "#EXT-X-STREAM-INF:SUBTITLES=\"subs\",CLOSED-CAPTIONS=NONE,BANDWIDTH=138976,CODECS=\"mp4a.40.2\",AUDIO=\"audio\"\n" - + "QualityLevels(128000)/Manifest(audio_deu,format=m3u8-aapl)\n" - + "#EXT-X-STREAM-INF:SUBTITLES=\"subs\",CLOSED-CAPTIONS=NONE,BANDWIDTH=658070,RESOLUTION=480x270,CODECS=\"avc1.4d4015,mp4a.40.2\",AUDIO=\"audio\"\n" - + "QualityLevels(499936)/Manifest(video,format=m3u8-aapl)\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=658070,RESOLUTION=480x270,CODECS=\"avc1.4d4015\",URI=\"QualityLevels(499936)/Manifest(video,format=m3u8-aapl,type=keyframes)\"\n" - + "#EXT-X-STREAM-INF:SUBTITLES=\"subs\",CLOSED-CAPTIONS=NONE,BANDWIDTH=402603,RESOLUTION=320x180,CODECS=\"avc1.42c00c,mp4a.40.2\",AUDIO=\"audio\"\n" - + "QualityLevels(249968)/Manifest(video,format=m3u8-aapl)\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=402603,RESOLUTION=320x180,CODECS=\"avc1.42c00c\",URI=\"QualityLevels(249968)/Manifest(video,format=m3u8-aapl,type=keyframes)\"\n" - + "#EXT-X-STREAM-INF:SUBTITLES=\"subs\",CLOSED-CAPTIONS=NONE,BANDWIDTH=1373458,RESOLUTION=640x360,CODECS=\"avc1.4d401e,mp4a.40.2\",AUDIO=\"audio\"\n" - + "QualityLevels(1199924)/Manifest(video,format=m3u8-aapl)\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1373458,RESOLUTION=640x360,CODECS=\"avc1.4d401e\",URI=\"QualityLevels(1199924)/Manifest(video,format=m3u8-aapl,type=keyframes)\"\n" - + "#EXT-X-STREAM-INF:SUBTITLES=\"subs\",CLOSED-CAPTIONS=NONE,BANDWIDTH=2191005,RESOLUTION=960x540,CODECS=\"avc1.4d401f,mp4a.40.2\",AUDIO=\"audio\"\n" - + "QualityLevels(1999872)/Manifest(video,format=m3u8-aapl)\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=2191005,RESOLUTION=960x540,CODECS=\"avc1.4d401f\",URI=\"QualityLevels(1999872)/Manifest(video,format=m3u8-aapl,type=keyframes)\"]"); + """ + Optional[#EXTM3U + #EXT-X-VERSION:5 + #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",LANGUAGE="de",NAME="Deutsch",DEFAULT=NO,AUTOSELECT=YES,FORCED=NO,URI="https://www.srf.ch/subtitles/srf/948d8f5a-03a7-49e2-b174-a4b7b3c4a043/episode/de/vod/vod.m3u8" + #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio",NAME="audio_deu",LANGUAGE="deu",DEFAULT=YES,AUTOSELECT=YES,URI="QualityLevels(128000)/Manifest(audio_deu,format=m3u8-aapl)" + #EXT-X-STREAM-INF:SUBTITLES="subs",CLOSED-CAPTIONS=NONE,BANDWIDTH=138976,CODECS="mp4a.40.2",AUDIO="audio" + QualityLevels(128000)/Manifest(audio_deu,format=m3u8-aapl) + #EXT-X-STREAM-INF:SUBTITLES="subs",CLOSED-CAPTIONS=NONE,BANDWIDTH=658070,RESOLUTION=480x270,CODECS="avc1.4d4015,mp4a.40.2",AUDIO="audio" + QualityLevels(499936)/Manifest(video,format=m3u8-aapl) + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=658070,RESOLUTION=480x270,CODECS="avc1.4d4015",URI="QualityLevels(499936)/Manifest(video,format=m3u8-aapl,type=keyframes)" + #EXT-X-STREAM-INF:SUBTITLES="subs",CLOSED-CAPTIONS=NONE,BANDWIDTH=402603,RESOLUTION=320x180,CODECS="avc1.42c00c,mp4a.40.2",AUDIO="audio" + QualityLevels(249968)/Manifest(video,format=m3u8-aapl) + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=402603,RESOLUTION=320x180,CODECS="avc1.42c00c",URI="QualityLevels(249968)/Manifest(video,format=m3u8-aapl,type=keyframes)" + #EXT-X-STREAM-INF:SUBTITLES="subs",CLOSED-CAPTIONS=NONE,BANDWIDTH=1373458,RESOLUTION=640x360,CODECS="avc1.4d401e,mp4a.40.2",AUDIO="audio" + QualityLevels(1199924)/Manifest(video,format=m3u8-aapl) + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=1373458,RESOLUTION=640x360,CODECS="avc1.4d401e",URI="QualityLevels(1199924)/Manifest(video,format=m3u8-aapl,type=keyframes)" + #EXT-X-STREAM-INF:SUBTITLES="subs",CLOSED-CAPTIONS=NONE,BANDWIDTH=2191005,RESOLUTION=960x540,CODECS="avc1.4d401f,mp4a.40.2",AUDIO="audio" + QualityLevels(1999872)/Manifest(video,format=m3u8-aapl) + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=2191005,RESOLUTION=960x540,CODECS="avc1.4d401f",URI="QualityLevels(1999872)/Manifest(video,format=m3u8-aapl,type=keyframes)"]"""); assertThat(actual, notNullValue()); assertThat(actual.size(), equalTo(5)); @@ -209,12 +211,13 @@ void parseTestArd() { final M3U8Parser target = new M3U8Parser(); final List actual = target.parse( - "#EXTM3U\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1216000,RESOLUTION=640x360,CODECS=\"avc1.77.30, mp4a.40.2\"\n" - + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1216_av-b.m3u8?sd=10&rebase=on&id=\n" - + "#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1992000,RESOLUTION=960x540,CODECS=\"avc1.77.30, mp4a.40.2\"\n" - + "https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-p.m3u8?sd=10&rebase=on&id=\n" - + ""); + """ + #EXTM3U + #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1216000,RESOLUTION=640x360,CODECS="avc1.77.30, mp4a.40.2" + https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1216_av-b.m3u8?sd=10&rebase=on&id= + #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1992000,RESOLUTION=960x540,CODECS="avc1.77.30, mp4a.40.2" + https://ndrfs-lh.akamaihd.net/i/ndrfs_nds@430233/index_1992_av-p.m3u8?sd=10&rebase=on&id= + """); assertThat(actual, notNullValue()); assertThat(actual.size(), equalTo(2)); @@ -266,15 +269,17 @@ void parseTestArdNoQuotedElementAtTheEnd() { final M3U8Parser target = new M3U8Parser(); final List actual = target.parse( - "#EXTM3U\n" - + "#EXT-X-VERSION:3\n" - + "#EXT-X-INDEPENDENT-SEGMENTS\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=5824896,AVERAGE-BANDWIDTH=4118400,CODECS=\"avc1.640020,mp4a.40.2\",RESOLUTION=1280x720,FRAME-RATE=50.000\n" - + "https://rbbevent04-hls.akamaized.net/hls/live/685987/rbbevent04/master_3584.m3u8\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=5824896,AVERAGE-BANDWIDTH=4118400,CODECS=\"avc1.640020,mp4a.40.2\",RESOLUTION=1280x720,FRAME-RATE=50.000\n" - + "https://rbbevent04-hls.akamaized.net/hls/live/685987-b/rbbevent04/master_3584.m3u8\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=4301000,AVERAGE-BANDWIDTH=2926000,CODECS=\"avc1.4d401f,mp4a.40.2\",RESOLUTION=960x540,FRAME-RATE=50.000\n" - + "https://rbbevent04-hls.akamaized.net/hls/live/685987/rbbevent04/master_2500.m3u8\n"); + """ + #EXTM3U + #EXT-X-VERSION:3 + #EXT-X-INDEPENDENT-SEGMENTS + #EXT-X-STREAM-INF:BANDWIDTH=5824896,AVERAGE-BANDWIDTH=4118400,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=50.000 + https://rbbevent04-hls.akamaized.net/hls/live/685987/rbbevent04/master_3584.m3u8 + #EXT-X-STREAM-INF:BANDWIDTH=5824896,AVERAGE-BANDWIDTH=4118400,CODECS="avc1.640020,mp4a.40.2",RESOLUTION=1280x720,FRAME-RATE=50.000 + https://rbbevent04-hls.akamaized.net/hls/live/685987-b/rbbevent04/master_3584.m3u8 + #EXT-X-STREAM-INF:BANDWIDTH=4301000,AVERAGE-BANDWIDTH=2926000,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=960x540,FRAME-RATE=50.000 + https://rbbevent04-hls.akamaized.net/hls/live/685987/rbbevent04/master_2500.m3u8 + """); assertThat(actual, notNullValue()); assertThat(actual.size(), equalTo(3)); @@ -360,38 +365,40 @@ void parseTestArdFunk() { final M3U8Parser target = new M3U8Parser(); final List actual = target.parse( - "#EXTM3U\n" - + "#EXT-X-VERSION:4\n" - + "## Created with Unified Streaming Platform (version=1.11.3-24483)\n" - + "\n" - + "# AUDIO groups\n" - + "#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"audio-aacl-128\",NAME=\"audio\",DEFAULT=YES,AUTOSELECT=YES,CHANNELS=\"2\"\n" - + "#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID=\"audio-aacl-152\",NAME=\"audio\",DEFAULT=YES,AUTOSELECT=YES,CHANNELS=\"2\"\n" - + "\n" - + "# variants\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=471000,CODECS=\"mp4a.40.2,avc1.4D401F\",RESOLUTION=426x240,AUDIO=\"audio-aacl-128\",CLOSED-CAPTIONS=NONE\n" - + "22679-qhFBn6dpPtxVW9K-audio=128000-video=316000.m3u8\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=954000,CODECS=\"mp4a.40.2,avc1.4D401F\",RESOLUTION=640x360,AUDIO=\"audio-aacl-152\",CLOSED-CAPTIONS=NONE\n" - + "22679-qhFBn6dpPtxVW9K-audio=152000-video=748000.m3u8\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=1700000,CODECS=\"mp4a.40.2,avc1.4D401F\",RESOLUTION=1024x576,AUDIO=\"audio-aacl-152\",CLOSED-CAPTIONS=NONE\n" - + "22679-qhFBn6dpPtxVW9K-audio=152000-video=1451000.m3u8\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=3099000,CODECS=\"mp4a.40.2,avc1.4D401F\",RESOLUTION=1280x720,AUDIO=\"audio-aacl-152\",CLOSED-CAPTIONS=NONE\n" - + "22679-qhFBn6dpPtxVW9K-audio=152000-video=2771000.m3u8\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=4230000,CODECS=\"mp4a.40.2,avc1.4D401F\",RESOLUTION=1920x1080,AUDIO=\"audio-aacl-152\",CLOSED-CAPTIONS=NONE\n" - + "22679-qhFBn6dpPtxVW9K-audio=152000-video=3838000.m3u8\n" - + "\n" - + "# variants\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=136000,CODECS=\"mp4a.40.2\",AUDIO=\"audio-aacl-128\"\n" - + "22679-qhFBn6dpPtxVW9K-audio=128000.m3u8\n" - + "#EXT-X-STREAM-INF:BANDWIDTH=162000,CODECS=\"mp4a.40.2\",AUDIO=\"audio-aacl-152\"\n" - + "22679-qhFBn6dpPtxVW9K-audio=152000.m3u8\n" - + "\n" - + "# keyframes\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=42000,CODECS=\"avc1.4D401F\",RESOLUTION=426x240,URI=\"keyframes/22679-qhFBn6dpPtxVW9K-video=316000.m3u8\"\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=100000,CODECS=\"avc1.4D401F\",RESOLUTION=640x360,URI=\"keyframes/22679-qhFBn6dpPtxVW9K-video=748000.m3u8\"\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=193000,CODECS=\"avc1.4D401F\",RESOLUTION=1024x576,URI=\"keyframes/22679-qhFBn6dpPtxVW9K-video=1451000.m3u8\"\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=368000,CODECS=\"avc1.4D401F\",RESOLUTION=1280x720,URI=\"keyframes/22679-qhFBn6dpPtxVW9K-video=2771000.m3u8\"\n" - + "#EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=509000,CODECS=\"avc1.4D401F\",RESOLUTION=1920x1080,URI=\"keyframes/22679-qhFBn6dpPtxVW9K-video=3838000.m3u8\""); + """ + #EXTM3U + #EXT-X-VERSION:4 + ## Created with Unified Streaming Platform (version=1.11.3-24483) + + # AUDIO groups + #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-128",NAME="audio",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="2" + #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio-aacl-152",NAME="audio",DEFAULT=YES,AUTOSELECT=YES,CHANNELS="2" + + # variants + #EXT-X-STREAM-INF:BANDWIDTH=471000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=426x240,AUDIO="audio-aacl-128",CLOSED-CAPTIONS=NONE + 22679-qhFBn6dpPtxVW9K-audio=128000-video=316000.m3u8 + #EXT-X-STREAM-INF:BANDWIDTH=954000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=640x360,AUDIO="audio-aacl-152",CLOSED-CAPTIONS=NONE + 22679-qhFBn6dpPtxVW9K-audio=152000-video=748000.m3u8 + #EXT-X-STREAM-INF:BANDWIDTH=1700000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=1024x576,AUDIO="audio-aacl-152",CLOSED-CAPTIONS=NONE + 22679-qhFBn6dpPtxVW9K-audio=152000-video=1451000.m3u8 + #EXT-X-STREAM-INF:BANDWIDTH=3099000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=1280x720,AUDIO="audio-aacl-152",CLOSED-CAPTIONS=NONE + 22679-qhFBn6dpPtxVW9K-audio=152000-video=2771000.m3u8 + #EXT-X-STREAM-INF:BANDWIDTH=4230000,CODECS="mp4a.40.2,avc1.4D401F",RESOLUTION=1920x1080,AUDIO="audio-aacl-152",CLOSED-CAPTIONS=NONE + 22679-qhFBn6dpPtxVW9K-audio=152000-video=3838000.m3u8 + + # variants + #EXT-X-STREAM-INF:BANDWIDTH=136000,CODECS="mp4a.40.2",AUDIO="audio-aacl-128" + 22679-qhFBn6dpPtxVW9K-audio=128000.m3u8 + #EXT-X-STREAM-INF:BANDWIDTH=162000,CODECS="mp4a.40.2",AUDIO="audio-aacl-152" + 22679-qhFBn6dpPtxVW9K-audio=152000.m3u8 + + # keyframes + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=42000,CODECS="avc1.4D401F",RESOLUTION=426x240,URI="keyframes/22679-qhFBn6dpPtxVW9K-video=316000.m3u8" + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=100000,CODECS="avc1.4D401F",RESOLUTION=640x360,URI="keyframes/22679-qhFBn6dpPtxVW9K-video=748000.m3u8" + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=193000,CODECS="avc1.4D401F",RESOLUTION=1024x576,URI="keyframes/22679-qhFBn6dpPtxVW9K-video=1451000.m3u8" + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=368000,CODECS="avc1.4D401F",RESOLUTION=1280x720,URI="keyframes/22679-qhFBn6dpPtxVW9K-video=2771000.m3u8" + #EXT-X-I-FRAME-STREAM-INF:BANDWIDTH=509000,CODECS="avc1.4D401F",RESOLUTION=1920x1080,URI="keyframes/22679-qhFBn6dpPtxVW9K-video=3838000.m3u8"\ + """); assertThat(actual, notNullValue()); assertThat(actual.size(), equalTo(7)); diff --git a/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicDeserializerTest.java b/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicDeserializerTest.java index 117995670..9e7e80560 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicDeserializerTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiTopicDeserializerTest.java @@ -12,7 +12,7 @@ import java.lang.reflect.Type; import java.net.URISyntaxException; import java.nio.file.Files; -import java.nio.file.Paths; +import java.nio.file.Path; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -37,7 +37,7 @@ void testDeserializeBrand( // final KikaApiTopicDto aKikaApiTopicDto = gson.fromJson( - Files.newBufferedReader(Paths.get(getClass().getResource(jsonFile).toURI())), + Files.newBufferedReader(Path.of(getClass().getResource(jsonFile).toURI())), kikaApiTopicDtoType); // assertEquals(numberOfExpectedRecords, aKikaApiTopicDto.getElements().size()); diff --git a/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiVideoInfoDeserializerTest.java b/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiVideoInfoDeserializerTest.java index 6a3f26afd..b9567c2ab 100644 --- a/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiVideoInfoDeserializerTest.java +++ b/src/test/java/de/mediathekview/mserver/crawler/kika/tasks/KikaApiVideoInfoDeserializerTest.java @@ -12,7 +12,7 @@ import java.lang.reflect.Type; import java.net.URISyntaxException; import java.nio.file.Files; -import java.nio.file.Paths; +import java.nio.file.Path; import java.util.stream.Stream; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -34,7 +34,7 @@ void testDeserializeBrand( // final KikaApiVideoInfoDto aKikaApiVideoDto = gson.fromJson( - Files.newBufferedReader(Paths.get(getClass().getResource(jsonFile).toURI())), + Files.newBufferedReader(Path.of(getClass().getResource(jsonFile).toURI())), kikaApiVideoInfoDtoType); // assertEquals(numberOfExpectedRecords, aKikaApiVideoDto.getVideoUrls().size()); diff --git a/src/test/java/de/mediathekview/mserver/filmlisten/NewFilmlistWriteTest.java b/src/test/java/de/mediathekview/mserver/filmlisten/NewFilmlistWriteTest.java index 12f731f1c..f0d65d1e6 100644 --- a/src/test/java/de/mediathekview/mserver/filmlisten/NewFilmlistWriteTest.java +++ b/src/test/java/de/mediathekview/mserver/filmlisten/NewFilmlistWriteTest.java @@ -44,7 +44,7 @@ static void initTestData() throws IOException { @MethodSource("createReadTestArguments") void testWrite(String jsonName, FilmlistFormats format) { final Path testFilePath = testFileFolderPath.resolve(jsonName); - System.out.println(testFilePath.toString()); + IO.println(testFilePath.toString()); filmlistManager.save(format, testData, testFilePath); if (format.getFileExtension().contains("xz")) { diff --git a/src/test/java/de/mediathekview/mserver/testhelper/FileReader.java b/src/test/java/de/mediathekview/mserver/testhelper/FileReader.java index 5ac7a86a8..91f719bfa 100644 --- a/src/test/java/de/mediathekview/mserver/testhelper/FileReader.java +++ b/src/test/java/de/mediathekview/mserver/testhelper/FileReader.java @@ -5,7 +5,6 @@ import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import static org.junit.jupiter.api.Assertions.fail; @@ -48,6 +47,6 @@ public static Path getPath(String filePath) { } catch (final URISyntaxException ex) { fail("Exception reading file " + filePath + ": " + ex.getMessage()); } - return Paths.get(u); + return Path.of(u); } } diff --git a/src/test/java/de/mediathekview/mserver/testhelper/JsonFileReader.java b/src/test/java/de/mediathekview/mserver/testhelper/JsonFileReader.java index 6b33659a5..2116af8e1 100644 --- a/src/test/java/de/mediathekview/mserver/testhelper/JsonFileReader.java +++ b/src/test/java/de/mediathekview/mserver/testhelper/JsonFileReader.java @@ -11,7 +11,6 @@ import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.function.Function; import static org.junit.jupiter.api.Assertions.fail; @@ -28,7 +27,7 @@ public static JsonObject readJson(final String filePath) { public static JsonArray readJsonArray(final String filePath) { try { final URI u = JsonFileReader.class.getResource(filePath).toURI(); - final Path path = Paths.get(u); + final Path path = Path.of(u); final String jsonOutput = new String(Files.readAllBytes(path), StandardCharsets.UTF_8); return new Gson().fromJson(jsonOutput, JsonArray.class); } catch (final JsonSyntaxException | IOException | URISyntaxException ex) { @@ -41,7 +40,7 @@ public static JsonObject readJsonWithTextModification( final String filePath, final Function fixupAllWireMockUrls) { try { final URI filePathUri = JsonFileReader.class.getResource(filePath).toURI(); - final String jsonText = fixupAllWireMockUrls.apply(Files.readString(Paths.get(filePathUri))); + final String jsonText = fixupAllWireMockUrls.apply(Files.readString(Path.of(filePathUri))); return new Gson().fromJson(jsonText, JsonObject.class); } catch (final JsonSyntaxException | IOException | URISyntaxException ex) { fail("Exception reading jsonFile " + filePath + ": " + ex.getMessage());