diff --git a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java index 966bc280..e13e91ba 100644 --- a/client/src/main/java/ctbrec/ui/settings/SettingsTab.java +++ b/client/src/main/java/ctbrec/ui/settings/SettingsTab.java @@ -131,6 +131,7 @@ public class SettingsTab extends Tab implements TabSelectionListener { private PostProcessingStepPanel postProcessingStepPanel; private SimpleStringProperty filterBlacklist; private SimpleStringProperty filterWhitelist; + private SimpleBooleanProperty deleteOrphanedRecordingMetadata; public SettingsTab(List sites, Recorder recorder) { this.sites = sites; @@ -211,6 +212,7 @@ public class SettingsTab extends Tab implements TabSelectionListener { checkForUpdates = new SimpleBooleanProperty(null, "checkForUpdates", settings.checkForUpdates); filterBlacklist = new SimpleStringProperty(null, "filterBlacklist", settings.filterBlacklist); filterWhitelist = new SimpleStringProperty(null, "filterWhitelist", settings.filterWhitelist); + deleteOrphanedRecordingMetadata = new SimpleBooleanProperty(null, "deleteOrphanedRecordingMetadata", settings.deleteOrphanedRecordingMetadata); } private void createGui() { @@ -281,7 +283,8 @@ public class SettingsTab extends Tab implements TabSelectionListener { Setting.of("FFmpeg parameters", ffmpegParameters, "FFmpeg parameters to use when merging stream segments"), Setting.of("File Extension", fileExtension, "File extension to use for recordings"), Setting.of("Check online state every (seconds)", onlineCheckIntervalInSecs, "Check every x seconds, if a model came online"), - Setting.of("Skip online check for paused models", onlineCheckSkipsPausedModels, "Skip online check for paused models")), + Setting.of("Skip online check for paused models", onlineCheckSkipsPausedModels, "Skip online check for paused models"), + Setting.of("Delete orphaned recording metadata", deleteOrphanedRecordingMetadata, "Delete recordings for which the video files are missing on start")), Group.of("Timeout", Setting.of("Don't record from", timeoutRecordingStartingAt), Setting.of("Until", timeoutRecordingEndingAt) @@ -301,13 +304,13 @@ public class SettingsTab extends Tab implements TabSelectionListener { Setting.of("Steps", postProcessingStepPanel), Setting.of("", createHelpButton("Post-Processing Help", "http://localhost:5689/docs/PostProcessing.md")), Setting.of("", createVariablePlayGroundButton()))), - Category.of("Events & Actions", new ActionSettingsPanel(recorder)), + Category.of("Events & Actions", new ActionSettingsPanel(recorder)), Category.of("Filtering", - Group.of("Ignore List", - Setting.of("", ignoreList)), - Group.of("Text Filters", - Setting.of("Blacklist", filterBlacklist, "Default list of blacklist filters for site views, space seperated"), - Setting.of("Whitelist", filterWhitelist, "Default list of whitelist filters for site views, space seperated"))), Category.of("Sites", siteCategories.toArray(new Category[0])), + Group.of("Ignore List", + Setting.of("", ignoreList)), + Group.of("Text Filters", + Setting.of("Blacklist", filterBlacklist, "Default list of blacklist filters for site views, space seperated"), + Setting.of("Whitelist", filterWhitelist, "Default list of whitelist filters for site views, space seperated"))), Category.of("Sites", siteCategories.toArray(new Category[0])), Category.of("Proxy", Group.of("Proxy", Setting.of("Type", proxyType).needsRestart(), diff --git a/common/src/main/java/ctbrec/Settings.java b/common/src/main/java/ctbrec/Settings.java index d2194480..c49f80ed 100644 --- a/common/src/main/java/ctbrec/Settings.java +++ b/common/src/main/java/ctbrec/Settings.java @@ -66,6 +66,7 @@ public class Settings { public String contactsheetTimestampLook = "font=sans-serif:fontcolor=white:fontsize=60:box=1:boxcolor=black@0.5:boxborderw=5"; public String dateTimeFormat = ""; public int defaultPriority = 50; + public boolean deleteOrphanedRecordingMetadata = false; public boolean determineResolution = false; public List disabledSites = new ArrayList<>(); public String downloadFilename = "$sanitize(${modelName})_$format(${localDateTime})"; diff --git a/common/src/main/java/ctbrec/recorder/RecordingManager.java b/common/src/main/java/ctbrec/recorder/RecordingManager.java index a1f988ad..5b7901c1 100644 --- a/common/src/main/java/ctbrec/recorder/RecordingManager.java +++ b/common/src/main/java/ctbrec/recorder/RecordingManager.java @@ -104,7 +104,13 @@ public class RecordingManager { if (recordingExists(recording)) { recordings.add(recording); } else { - log.info("Recording {} does not exist anymore -> ignoring recording", recording); + if (config.getSettings().deleteOrphanedRecordingMetadata) { + log.info("Recording {} does not exist anymore -> deleting recording", recording); + boolean deleted = Files.deleteIfExists(new File(recording.getMetaDataFile()).toPath()); + log.info("Recording {} has {}been deleted", recording, deleted ? "" : "not "); + } else { + log.info("Recording {} does not exist anymore -> ignoring recording", recording); + } } }