From 6e2ecd0468d81aacbef0be233293f52d38637771 Mon Sep 17 00:00:00 2001 From: szbk Date: Sun, 26 Oct 2025 19:38:00 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A7=20Cache=20i=C3=A7inde=20bo=C5=9F?= =?UTF-8?q?=20kalan=20thumbnail=20klas=C3=B6rlerini=20de=20temizle.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++++ server/server.js | 40 +++++++++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/.gitignore b/.gitignore index a280bb3..d3a4b4a 100644 --- a/.gitignore +++ b/.gitignore @@ -51,11 +51,15 @@ desktop.ini # Media / Download directories (depending on your setup) downloads/ +server/cache/ movie/movieData/ movie/movieData/**/subtitles/ movie/movieData/**/poster.jpg movie/movieData/**/backdrop.jpg +# Generic placeholders +*.gitkeep + # Torrent / upload temp files /uploads/ /uploads/* diff --git a/server/server.js b/server/server.js index df8f3d8..2c71cf4 100644 --- a/server/server.js +++ b/server/server.js @@ -152,21 +152,6 @@ function removeThumbnailsForPath(relPath) { const normalized = sanitizeRelative(relPath); if (!normalized) return; - const directDirs = [ - path.join(VIDEO_THUMB_ROOT, normalized), - path.join(IMAGE_THUMB_ROOT, normalized) - ]; - - for (const target of directDirs) { - try { - if (fs.existsSync(target) && fs.lstatSync(target).isDirectory()) { - fs.rmSync(target, { recursive: true, force: true }); - } - } catch (err) { - console.warn(`⚠️ Thumbnail klasörü silinemedi (${target}): ${err.message}`); - } - } - const parsed = path.parse(normalized); const candidates = [ path.join(VIDEO_THUMB_ROOT, parsed.dir, `${parsed.name}.jpg`), @@ -180,6 +165,31 @@ function removeThumbnailsForPath(relPath) { console.warn(`⚠️ Thumbnail silinemedi (${candidate}): ${err.message}`); } } + + const potentialDirs = [ + path.join(VIDEO_THUMB_ROOT, parsed.dir), + path.join(IMAGE_THUMB_ROOT, parsed.dir) + ]; + + for (const dirPath of potentialDirs) { + cleanupEmptyDirs(dirPath); + } +} + +function cleanupEmptyDirs(startDir) { + let dir = startDir; + while ( + dir && + dir.startsWith(THUMBNAIL_DIR) && + fs.existsSync(dir) && + fs.lstatSync(dir).isDirectory() + ) { + const entries = fs.readdirSync(dir); + if (entries.length > 0) break; + fs.rmdirSync(dir); + dir = path.dirname(dir); + if (dir === THUMBNAIL_DIR || dir === path.dirname(THUMBNAIL_DIR)) break; + } } function resolveThumbnailAbsolute(relThumbPath) {