diff --git a/src/main/java/me/mrletsplay/videobase/Config.java b/src/main/java/me/mrletsplay/videobase/Config.java index 43a3878..9259ec1 100644 --- a/src/main/java/me/mrletsplay/videobase/Config.java +++ b/src/main/java/me/mrletsplay/videobase/Config.java @@ -1,11 +1,18 @@ package me.mrletsplay.videobase; +import java.util.List; +import java.util.Objects; + +import me.mrletsplay.mrcore.json.JSONType; import me.mrletsplay.mrcore.json.converter.JSONConstructor; import me.mrletsplay.mrcore.json.converter.JSONConvertible; +import me.mrletsplay.mrcore.json.converter.JSONListType; import me.mrletsplay.mrcore.json.converter.JSONValue; public class Config implements JSONConvertible { + public static final List DEFAULT_FILE_TYPES = List.of("mp4", "mpeg", "mkv", "flv", "avi", "webm"); + @JSONValue private String libraryPath; @@ -15,6 +22,10 @@ public class Config implements JSONConvertible { @JSONValue private String cachePath; + @JSONValue + @JSONListType(JSONType.STRING) + private List includeFileTypes; + @JSONConstructor private Config() {} @@ -30,11 +41,20 @@ public class Config implements JSONConvertible { return cachePath; } + public List getIncludeFileTypes() { + return includeFileTypes == null ? DEFAULT_FILE_TYPES : includeFileTypes; + } + + public void validate() { + Objects.requireNonNull(libraryPath, "libraryPath"); + } + public static Config createDefault() { Config config = new Config(); config.libraryPath = "library"; config.readOnly = false; config.cachePath = "cache"; + config.includeFileTypes = DEFAULT_FILE_TYPES; return config; } diff --git a/src/main/java/me/mrletsplay/videobase/VideoBase.java b/src/main/java/me/mrletsplay/videobase/VideoBase.java index ffcbaac..3e7e54d 100644 --- a/src/main/java/me/mrletsplay/videobase/VideoBase.java +++ b/src/main/java/me/mrletsplay/videobase/VideoBase.java @@ -4,7 +4,6 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Objects; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; @@ -20,6 +19,7 @@ import me.mrletsplay.simplehttpserver.http.cors.CorsConfiguration; import me.mrletsplay.simplehttpserver.http.server.HttpServer; import me.mrletsplay.videobase.library.Library; import me.mrletsplay.videobase.rest.LibraryAPI; +import me.mrletsplay.videobase.util.ThumbnailCreator; public class VideoBase { @@ -48,6 +48,7 @@ public class VideoBase { } config = JSONConverter.decodeObject(new JSONObject(Files.readString(configPath, StandardCharsets.UTF_8)), Config.class); + config.validate(); } catch (IOException e) { LOGGER.error("Failed to load config", e); System.exit(1); @@ -82,8 +83,8 @@ public class VideoBase { } private static void loadLibrary() { - Objects.requireNonNull(config.getLibraryPath(), "libraryPath"); library = Library.load(Path.of(config.getLibraryPath()), config.isReadOnly()); + ThumbnailCreator.clearCache(); } } diff --git a/src/main/java/me/mrletsplay/videobase/library/Library.java b/src/main/java/me/mrletsplay/videobase/library/Library.java index b98b7aa..e69757c 100644 --- a/src/main/java/me/mrletsplay/videobase/library/Library.java +++ b/src/main/java/me/mrletsplay/videobase/library/Library.java @@ -113,6 +113,10 @@ public class Library { private static void load(Path rootPath, Path path, List