From 8f21c3dcf01b5adb9d42391b229ed18119ad9374 Mon Sep 17 00:00:00 2001 From: Schaka <2223171+Schaka@users.noreply.github.com> Date: Wed, 2 Oct 2024 17:50:52 +0200 Subject: [PATCH] [Mediaserver] Create empty file to solve #78 --- .../mediaserver/BaseMediaServerService.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/main/kotlin/com/github/schaka/janitorr/mediaserver/BaseMediaServerService.kt b/src/main/kotlin/com/github/schaka/janitorr/mediaserver/BaseMediaServerService.kt index 27e0655..e9ea08e 100644 --- a/src/main/kotlin/com/github/schaka/janitorr/mediaserver/BaseMediaServerService.kt +++ b/src/main/kotlin/com/github/schaka/janitorr/mediaserver/BaseMediaServerService.kt @@ -10,6 +10,7 @@ import com.github.schaka.janitorr.mediaserver.library.LibraryType.TV_SHOWS import com.github.schaka.janitorr.servarr.LibraryItem import org.slf4j.LoggerFactory import org.springframework.util.FileSystemUtils +import java.io.IOException import java.nio.file.Files import java.nio.file.Path @@ -222,6 +223,8 @@ abstract class BaseMediaServerService( if (items.isEmpty()) { if (!onlyAddLinks) { FileSystemUtils.deleteRecursively(path) + Files.createDirectories(path) + createEmptyFile(path) } return } @@ -249,6 +252,23 @@ abstract class BaseMediaServerService( } createLinks(items, path, libraryType) + createEmptyFile(path) + } + + /** + * Jellyfin/Emby require a file inside a library or they won't scan updates to media if all media was deleted. + * https://github.com/jellyfin/jellyfin/issues/11913 + */ + private fun createEmptyFile(path: Path) { + val fileName = "empty-file.media" + val file = path.resolve(fileName) + try { + Files.createFile(file) + } catch (e: FileAlreadyExistsException) { + log.debug("File already exists: {}", file, e) + } catch (e: IOException) { + log.warn("Could not create empty file {}", fileName, e) + } } } \ No newline at end of file