From fcf2b19c80960a2b7dc2ac98049f239956d1546a Mon Sep 17 00:00:00 2001 From: tigeren Date: Wed, 27 Aug 2025 17:12:32 +0000 Subject: [PATCH] refactor: streamline media scanning process for videos and photos - Simplified the scanning logic to handle all file types in a single glob pattern, improving efficiency. - Implemented case-insensitive filtering for video and photo files based on their extensions, enhancing media detection accuracy. - Refactored code for better readability and maintainability. --- media.db | Bin 462848 -> 466944 bytes src/lib/scanner.ts | 31 +++++++++++++++++-------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/media.db b/media.db index c07baf7f9f22b8e442109535ef75896c4dea609d..f623fbb742979f3559d5565a8f84734c2278069f 100644 GIT binary patch delta 32893 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

kFB6*D$yeaBp>zcKoY>8!Bt2^$LQd*uz(z`b0 z7+%W9yhki~anf?lSS3EIgGEGPK3Ti!tL!rbu5%geT`VN<* z#JrQmE$buZP&9sc1&R5{&Nk`9gBoDn6P+&<-*yXa>vY&^#z^5P+ABk8nNnjsOvXyWiJ zR21QK+Pv9@A-Xi@HBX@+o$e4{^MnwgvLOyptwKxK6HCju1`3vytrCk{%0%#jU~8o- z#hFtaU~y8pKy|gT6|Vvf1?em$u7Z$-gPU^nAx>x5TC2BI<}qH4s;J9k{tH`c{qB+1 zXbCJ`yVtsAtywCO*ZQ5|a6%fi28xXPETNUB|6!R{p1%JcrlwD69B9DF; zbIN!^ylFQ=l-ej2<#_cFEofNGo3_hnzgM8;t?`Kr!D8OIT}IrumT8E3n$ePCzj%;0 zeQG}Hmv?Tblqdcev<8*W+D49uP{h1vJ2_%1c29_jhD-(TWV05vQJf8ndDC_o@%|CK z7sQmQpq1r`%9TU#&h0WGUUA6iX>)C&4rDQJ+AbqL?Swd-*bHVpA8(gUdA?Pmk{h`Q zJ6_^#6ITJeUABz)5|0$q8Hb66jK#cPwv6}+uN2ef+C-XJ+&-OnVTKV<`5?(UL**J? z)I+>mwoJTv+o?cp&P0I<`{fdTT4WapZ#qUbGB4fbMQ;z{|4+aR4i)tw{5!tZ_F-vR zIr|Z5S?fNR!xFr>Qc+h(gO+8I@u<{UEAbwamuMv@U0S*6EZx`{vew(KqHM13DY=d> zJt6;}2<=|v_*TP+Cu5DYtYoZ}!aT}Hiu$CyWR6$1^3zjL+P~yrU~Q z8;sdaS#sNPBShJkmrjnhvTrVBnIY-4eMeJ{JoPDZBpvRPD0LiwcXgGCoQ~Y$$f@B- z_!6w;OUo>mj!m6p8EGC3!pnppHDZz2!H zs8&tnFpiivTb7EL>l8lhOKd%fM~o$%AVkqOEaq*OWkMYJN+#vv{u5|zZ;OT`DjiqV9(q#kUztvPp(E|?I`s;_i?E-(?s&t15LcuN;eAy`Pw%3Xm^Zp6zc{2N`kE2e zC}w|Rr#vF&t*&LXV|O9qi#u}ze7aV{;xXyO-rkh%rLQC1eCli>DLx9pn_kOA|NI*= z`lO?JgS;4>cfFP>FI*!Wdy~scm^W?5^Am|17LQ7anW_)U(d0tL&xxQkvu?W-K9hZ#9o98#ZS_ve zq}<7AUxro_+hXLtRyQ{zk;pk7ma%|D&;mQ&2< zOqFutSe)tB$XyQyk`DVPalK+bXDaz)Ba_bVLiIteM$?Y*pbC-l!ruP}8>T=w diff --git a/src/lib/scanner.ts b/src/lib/scanner.ts index 53a2c1e..c714dd1 100644 --- a/src/lib/scanner.ts +++ b/src/lib/scanner.ts @@ -34,21 +34,24 @@ const generatePhotoThumbnail = (photoPath: string, thumbnailPath: string) => { }; const scanLibrary = async (library: { id: number; path: string }) => { - // Scan videos - handle case variations - const videoPatterns = VIDEO_EXTENSIONS.flatMap(ext => [ - `${library.path}/**/*.${ext}`, - `${library.path}/**/*.${ext.toUpperCase()}`, - ]); - const videoFiles = await glob(videoPatterns, { nodir: true }); + // Scan videos - handle all case variations + const videoFiles = await glob(`${library.path}/**/*.*`, { nodir: true }); + + // Scan photos - handle all case variations + const photoFiles = await glob(`${library.path}/**/*.*`, { nodir: true }); + + // Filter files by extension (case-insensitive) + const filteredVideoFiles = videoFiles.filter(file => { + const ext = path.extname(file).toLowerCase().replace('.', ''); + return VIDEO_EXTENSIONS.includes(ext); + }); + + const filteredPhotoFiles = photoFiles.filter(file => { + const ext = path.extname(file).toLowerCase().replace('.', ''); + return PHOTO_EXTENSIONS.includes(ext); + }); - // Scan photos - handle case variations - const photoPatterns = PHOTO_EXTENSIONS.flatMap(ext => [ - `${library.path}/**/*.${ext}`, - `${library.path}/**/*.${ext.toUpperCase()}`, - ]); - const photoFiles = await glob(photoPatterns, { nodir: true }); - - const allFiles = [...videoFiles, ...photoFiles]; + const allFiles = [...filteredVideoFiles, ...filteredPhotoFiles]; for (const file of allFiles) { const stats = fs.statSync(file);