Compare commits

...

22 Commits

Author SHA1 Message Date
Raincloud 3618724ca2 ignore & rm cached specstory 2026-04-09 09:15:38 -06:00
Raincloud 7fe8ccec9d specst 2026-04-05 00:29:33 -06:00
Raincloud d2239a670c handle nested dirs 2026-03-22 13:35:25 -06:00
Raincloud 53430f768f color coded cli output! 2026-03-22 12:58:19 -06:00
Raincloud a8205447e3 refactor error handling and guidance 2026-03-22 12:51:08 -06:00
Raincloud 59f1c1c38e specst 2026-03-22 12:11:39 -06:00
Raincloud 3c3652acb3 specst 2026-03-21 15:42:48 -06:00
Raincloud 11ea28a187 nascleanup + autoThumbs: flatten indexer layout, SMB rm, recursive tmp 2026-03-21 15:41:59 -06:00
Raincloud 2de53c9685 specst update 2026-03-21 13:01:18 -06:00
Raincloud 6aef69654a bulk 2025-12-29 21:54:38 -07:00
Raincloud 12afbdf343 fix up autothumbs 2025-10-15 18:28:09 -06:00
Raincloud b8418641e1 eadir extraction working 2025-10-12 16:31:41 -06:00
Raincloud b140883b90 disable webm functionality 2025-10-12 16:08:36 -06:00
Raincloud bcb9808cca rewrite icaros cache handling 2025-09-28 13:13:40 -06:00
Raincloud 4687539a90 functional enough 2025-07-01 23:27:50 -06:00
Raincloud 98a592bdef thumbs.db extraction WORKING 2025-06-29 18:15:35 -06:00
Raincloud 56685a38dd actually stable maybe 2025-06-29 11:16:00 -06:00
Raincloud 05c6a5a04d specstory 2025-06-27 09:03:31 -06:00
Raincloud 3628729716 my changes so far 2025-06-27 09:01:51 -06:00
mbe 7e9e4370a7 Added note about Pillow. 2014-07-19 09:09:42 +02:00
mbe 8ff95a53f2 Fixed markup. 2014-07-19 09:07:59 +02:00
mbe 45ba37e420 Added readme. 2014-07-19 09:04:59 +02:00
12 changed files with 2447 additions and 35 deletions
+3
View File
@@ -0,0 +1,3 @@
# Don't index SpecStory auto-save files, but allow explicit context inclusion via @ references
.specstory/**
+1 -22
View File
@@ -1,22 +1 @@
# Auto detect text files and perform LF normalization
* text=auto
# Custom for Visual Studio
*.cs diff=csharp
*.sln merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
*.sh text eol=lf
+2
View File
@@ -1,2 +1,4 @@
venv/
.idea/
.specstory/
.vscode/
+160
View File
@@ -0,0 +1,160 @@
# OneDrive Thumbnail Override Fix
## 🎯 Problem Description
OneDrive's on-demand sync overrides locally-generated thumbnails with generic file icons when cloud services don't support specific file types (like `.blend`, `.psd`, etc.). This prevents you from seeing your custom thumbnails for unsupported formats.
## 🔍 Root Cause
1. **OneDrive Files On-Demand** uses cloud thumbnail providers that take precedence over local thumbnails
2. When OneDrive doesn't support a file type, it shows a generic file icon
3. This **overrides** your custom locally-generated thumbnails, even for files you've created beautiful previews for
## ✅ Solution Overview
This fix disables OneDrive's cloud thumbnail providers and restores priority to your local thumbnails while keeping OneDrive sync functionality intact.
## 🛠️ How to Use
### Method 1: Automated PowerShell Script (Recommended)
1. **Run the batch file:**
```cmd
autoThumbs.bat
```
2. **Select option 4:** "Fix OneDrive thumbnail override"
3. **Follow prompts** - the script will run as administrator and fix the issue
### Method 2: Manual Registry Fix
1. **Run as Administrator:**
```cmd
regedit
```
2. **Import the registry file:**
```cmd
disable_onedrive_thumbnails.reg
```
3. **Restart Windows Explorer**
### Method 3: PowerShell Direct
Run PowerShell as Administrator and execute:
```powershell
.\fix_thumbnail_override.ps1
```
## 📋 What Gets Changed
### ✅ Registry Modifications
1. **OneDrive Policies:**
- `HKCU\SOFTWARE\Policies\Microsoft\OneDrive` → `DisableCloudThumbnails = 1`
- `HKLM\SOFTWARE\Policies\Microsoft\OneDrive` → `DisableCloudThumbnails = 1`
2. **Cloud Thumbnail Provider Removal:**
- Removes: `HKLM\...\ThumbnailProviders\{E357FCCD-A995-4576-B01F-234630154E96}`
3. **Local Thumbnail Preferences:**
- `HKCU\...\Explorer\Advanced` → `UseLocalThumbnailProvider = 1`
- `HKCU\...\Explorer\Advanced` → `IconsOnly = 0`
4. **OneDrive Shell Overlays Disabled:**
- Removes OneDrive1-7 shell icon overlays that can interfere
5. **Thumbnail Cache Protection:**
- Prevents Windows from auto-deleting thumbnail cache
- `HKLM\...\VolumeCaches\Thumbnail Cache` → `Autorun = 0`
### 🔄 Process Changes
1. **Explorer Process Restart** - Clears cached thumbnail providers
2. **Thumbnail Cache Regeneration** - Forces fresh thumbnail creation
3. **Local Provider Priority** - Your custom thumbnails now take precedence
## ⚠️ Important Notes
### ✅ What Still Works
- ✅ OneDrive sync functionality (unchanged)
- ✅ File access and collaboration
- ✅ Cloud storage features
- ✅ Local thumbnail generation
### ❌ What Changes
- ❌ OneDrive won't override your custom thumbnails anymore
- ❌ Cloud-based thumbnail generation is disabled
- ❌ Some OneDrive visual overlays may be reduced
## 🔧 Troubleshooting
### If thumbnails still don't appear:
1. **Clear thumbnail cache manually:**
```cmd
del /f /s /q "%LocalAppData%\Microsoft\Windows\Explorer\thumbcache_*.db"
```
2. **Restart Windows Explorer:**
```cmd
taskkill /f /im explorer.exe && start explorer.exe
```
3. **Regenerate thumbnails:**
```cmd
python psthumbgen.py --directory "Your\Directory\Path"
```
### If you want to revert changes:
Use the restore registry file:
```cmd
restore_onedrive_thumbnails.reg
```
## 🎉 Expected Results
After applying this fix:
1. **Your custom thumbnails** (like for `.blend` files) will display properly
2. **OneDrive sync continues** working normally
3. **File access remains** unchanged
4. **Local thumbnail generation** takes priority over cloud providers
## 📝 Technical Details
### Cloud Thumbnail Provider GUID
The key provider that overrides local thumbnails:
- `{E357FCCD-A995-4576-B01F-234630154E96}` - Windows Cloud Files Thumbnail Provider
### OneDrive Shell Overlays
These overlays can interfere with thumbnail display:
- `OneDrive1` through `OneDrive7` in `ShellIconOverlayIdentifiers`
### Registry Locations
```
# User-level policies
HKCU\SOFTWARE\Policies\Microsoft\OneDrive
# Machine-level policies
HKLM\SOFTWARE\Policies\Microsoft\OneDrive
# Thumbnail providers
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ThumbnailProviders
# Explorer settings
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced
```
## 🔄 Maintenance
- **Reboot required** for full effect
- **May need to reapply** after major Windows updates
- **Compatible** with Windows 10/11 and current OneDrive versions
---
**🎨 Now you can enjoy your beautiful custom thumbnails without OneDrive interference!**
+143
View File
@@ -0,0 +1,143 @@
# Synology Thumbnail Generator
A Python script that generates thumbnails for Synology Photo Station, optimized for video formats and files that the NAS doesn't handle well.
## 🚀 **Major Features**
### **⚡ Ultra-Fast Icaros Cache Integration**
- **Instant thumbnails** from Icaros cache (milliseconds vs seconds)
- **Alphabetical algorithm** discovered and implemented
- **1920x1080 source quality** from cache
- **Automatic fallback** to Windows providers and FFmpeg
### **🎯 Supported Formats**
- **Videos**: mp4, webm, avi, mkv, mov, wmv, flv, m4v, ts
- **Images**: psd (Photoshop), blend (Blender)
- **Optimized for formats** Synology doesn't handle well
### **🔄 Multi-Tier Processing**
1. **Icaros Cache** (fastest - milliseconds)
2. **Windows Thumbnail Providers** (fast - seconds)
3. **FFmpeg/Direct Processing** (slower - reliable fallback)
## 🎉 **Performance Breakthrough**
**Before**: 5-10 seconds per video thumbnail (FFmpeg only)
**After**: ~50 milliseconds per video thumbnail (Icaros cache)
**Speedup**: **100-200x faster** for cached videos!
## 📋 **Requirements**
- Python 3.6+
- PIL/Pillow: `pip install Pillow`
- FFmpeg (for unsupported formats): https://ffmpeg.org/download.html
- **Icaros** (optional, for ultra-fast thumbnails): http://carlosdelgado.com/
### **Optional Dependencies**
- `psd-tools`: For direct PSD processing (`pip install psd-tools`)
- `olefile`: For advanced cache integration (`pip install olefile`)
## 💻 **Usage**
```bash
python psthumbgen.py --directory "R:\Your\Video\Directory"
```
The script will:
1. **Try Icaros cache first** (if available)
2. **Fall back to Windows providers**
3. **Use FFmpeg as final fallback**
4. **Generate all Synology thumbnail sizes**
## 🔧 **Icaros Integration**
### **Automatic Detection**
The script automatically detects and uses Icaros cache from:
- `C:\Program Files\Icaros\IcarosCache\`
- `C:\Program Files (x86)\Icaros\IcarosCache\`
- `%LocalAppData%\Icaros\IcarosCache\`
- `%AppData%\Icaros\IcarosCache\`
### **Algorithm Discovery**
After extensive analysis, we discovered Icaros uses **alphabetical sorting** for cache mapping:
1. Collect all video files from monitored directories
2. Sort alphabetically (case-insensitive)
3. Map position in sorted list to cache index
4. Extract thumbnail directly from binary cache
## 📁 **Output Structure**
For each video file, creates:
```
video_directory/
├── eaDir_tmp/
│ └── video_file.mp4/
│ ├── SYNOVIDEO_VIDEO_SCREENSHOT.jpg (1280px)
│ ├── SYNOPHOTO_THUMB_XL.jpg (1280px)
│ ├── SYNOPHOTO_THUMB_B.jpg (640px)
│ ├── SYNOPHOTO_THUMB_M.jpg (320px)
│ ├── SYNOPHOTO_THUMB_PREVIEW.jpg (160px)
│ └── SYNOPHOTO_THUMB_S.jpg (120px)
```
## 🎯 **Use Cases**
- **Video Libraries**: Fast thumbnails for large video collections
- **Creative Files**: PSD and Blender file previews
- **Network Shares**: Works with SMB/network drives
- **Synology NAS**: Perfect for Photo Station integration
## 🛠️ **Technical Details**
### **Icaros Cache Format**
- **Binary format**: `.icdb` files containing JPEG thumbnails
- **Index structure**: `ICDB` signature with embedded JPEGs
- **Multiple sizes**: Typically 96px, 1280px, 2560px variants
- **Alphabetical mapping**: Direct position-based extraction
### **Windows Integration**
- Uses Windows thumbnail providers via shell32
- Supports formats with installed codec packs
- Faster than FFmpeg for supported formats
- Automatic format detection and fallback
## 🔍 **Troubleshooting**
### **No Icaros Cache Found**
- Install Icaros: http://carlosdelgado.com/
- Configure monitored directories in IcarosConfig
- Rebuild cache for current files
### **FFmpeg Not Found**
- Download from: https://ffmpeg.org/download.html
- Add to system PATH
- Restart command prompt/PowerShell
### **Slow Performance**
- Install Icaros for 100-200x speedup
- Enable hardware acceleration in graphics drivers
- Use SSD storage for cache
## 📊 **Algorithm Research**
This project involved extensive reverse engineering of Icaros cache format:
-**Alphabetical sorting** algorithm discovered
- ❌ Hash-based approaches (MD5, CRC32, Windows hash) all failed
- 🔬 **106 cache entries** analyzed and mapped
- 🎯 **Verification** through manual thumbnail content checking
## 🤝 **Contributing**
Contributions welcome! Areas for improvement:
- Additional video format support
- Performance optimizations
- Cache format documentation
- Cross-platform compatibility
## 📄 **License**
This project is provided as-is for educational and personal use.
---
**🎉 Achievement Unlocked: Ultra-Fast Thumbnail Generation!**
+226
View File
@@ -0,0 +1,226 @@
@echo off
setlocal EnableExtensions
REM ANSI colors (needs Windows 10+ console VT or Windows Terminal)
for /f %%a in ('powershell -nop -c "[char]0x1b"') do set "ESC=%%a"
set "RST=%ESC%[0m"
set "BLD=%ESC%[1m"
set "DIM=%ESC%[2m"
set "RED=%ESC%[91m"
set "GRN=%ESC%[92m"
set "YLW=%ESC%[93m"
set "BLU=%ESC%[94m"
set "MAG=%ESC%[95m"
set "CYN=%ESC%[96m"
set "GRY=%ESC%[90m"
set "WHT=%ESC%[97m"
REM Always use 'nathan' as NAS username
set NASUSER=nathan
REM Menu for operation selection
echo.
echo %BLD%%YLW%Select operation:%RST%
echo %CYN%1.%RST% Generate thumbnails only
echo %CYN%2.%RST% SSH cleanup only
echo %CYN%3.%RST% Both (generate thumbnails + SSH cleanup)
echo %CYN%4.%RST% Fix OneDrive thumbnail override %DIM%(NEW^)%RST%
echo.
set /p CHOICE=%CYN%Enter your choice ^(1-4^): %RST%
if "%CHOICE%"=="1" goto THUMBS_ONLY
if "%CHOICE%"=="2" goto SSH_ONLY
if "%CHOICE%"=="3" goto BOTH
if "%CHOICE%"=="4" goto FIX_ONEDRIVE
echo %RED%Invalid choice. Exiting.%RST%
exit /b
:THUMBS_ONLY
REM Prompt for Windows path
set /p WINPATH=%CYN%Enter the full Windows path to your NAS directory ^(e.g., R:\YouTube\Streams\MixerTwitch^): %RST%
if "%WINPATH%"=="" (
echo %RED%No path provided. Exiting.%RST%
exit /b
)
REM Convert Windows path to NAS path and pre-seed eaDir_tmp from @eaDir on NAS
set "RELPATH=%WINPATH:~3%"
set "RELPATH=%RELPATH:\=/%"
set "NASPATH=/volume1/Hydra/%RELPATH%"
echo %GRN%Uploading extract_eadir_to_tmp.sh to NAS and seeding...%RST%
if not exist "%~dp0extract_eadir_to_tmp.sh" (
echo %RED%ERROR: extract_eadir_to_tmp.sh not found next to this batch file.%RST%
goto END
)
ssh Hydra "cat > ~/extract_eadir_to_tmp.sh" < "%~dp0extract_eadir_to_tmp.sh"
ssh Hydra "bash -lc 'if command -v dos2unix >/dev/null 2>&1; then dos2unix -f ~/extract_eadir_to_tmp.sh; else tr -d \"\r\" < ~/extract_eadir_to_tmp.sh > ~/extract_eadir_to_tmp.sh.tmp && mv ~/extract_eadir_to_tmp.sh.tmp ~/extract_eadir_to_tmp.sh; fi; chmod +x ~/extract_eadir_to_tmp.sh; ~/extract_eadir_to_tmp.sh \"%NASPATH%\" || true'"
REM Run psthumbgen.py
python psthumbgen.py --directory "%WINPATH%"
goto END
:SSH_ONLY
REM Prompt for Windows path
set /p WINPATH=%CYN%Enter the full Windows path to your NAS directory ^(e.g., R:\YouTube\Streams\MixerTwitch^): %RST%
if "%WINPATH%"=="" (
echo %RED%No path provided. Exiting.%RST%
exit /b
)
REM Convert Windows path to NAS path
set "RELPATH=%WINPATH:~3%"
set "RELPATH=%RELPATH:\=/%"
set "NASPATH=/volume1/Hydra/%RELPATH%"
echo %GRY%DEBUG: WINPATH = %WINPATH%%RST%
echo %GRY%DEBUG: RELPATH = %RELPATH%%RST%
echo %GRY%DEBUG: NASPATH = %NASPATH%%RST%
echo.
call :WIN_REMOVE_LOCAL_EADIR
REM Ensure nascleanup.sh exists on NAS (upload + fix line endings), then run it
echo %GRN%Uploading nascleanup.sh to NAS and running cleanup...%RST%
if not exist "%~dp0nascleanup.sh" (
echo %RED%ERROR: nascleanup.sh not found next to this batch file.%RST%
goto END
)
ssh Hydra "cat > ~/nascleanup.sh" < "%~dp0nascleanup.sh"
ssh Hydra "bash -lc 'if command -v dos2unix >/dev/null 2>&1; then dos2unix -f ~/nascleanup.sh; else tr -d \"\r\" < ~/nascleanup.sh > ~/nascleanup.sh.tmp && mv ~/nascleanup.sh.tmp ~/nascleanup.sh; fi; chmod +x ~/nascleanup.sh; ~/nascleanup.sh \"%NASPATH%\"'"
if errorlevel 1 (
echo %RED%ERROR: nascleanup failed on NAS - check promote ^(eaDir_tmp -^> @eaDir^) messages above.%RST%
echo %YLW%Keeping eaDir_tmp on the share so you can retry without re-running FFmpeg.%RST%
call :PRINT_HYDRA_CLEAR_EADIR
) else (
call :WIN_REMOVE_LOCAL_EADIR_TMP
)
goto END
:BOTH
REM Prompt for Windows path
set /p WINPATH=%CYN%Enter the full Windows path to your NAS directory ^(e.g., R:\YouTube\Streams\MixerTwitch^): %RST%
if "%WINPATH%"=="" (
echo %RED%No path provided. Exiting.%RST%
exit /b
)
REM Convert Windows path to NAS path
set "RELPATH=%WINPATH:~3%"
set "RELPATH=%RELPATH:\=/%"
set "NASPATH=/volume1/Hydra/%RELPATH%"
echo %GRY%DEBUG: WINPATH = %WINPATH%%RST%
echo %GRY%DEBUG: RELPATH = %RELPATH%%RST%
echo %GRY%DEBUG: NASPATH = %NASPATH%%RST%
echo.
REM Pre-seed eaDir_tmp from @eaDir on NAS before generation
echo %GRN%Uploading extract_eadir_to_tmp.sh to NAS and seeding...%RST%
if not exist "%~dp0extract_eadir_to_tmp.sh" (
echo %RED%ERROR: extract_eadir_to_tmp.sh not found next to this batch file.%RST%
goto END
)
ssh Hydra "cat > ~/extract_eadir_to_tmp.sh" < "%~dp0extract_eadir_to_tmp.sh"
ssh Hydra "bash -lc 'if command -v dos2unix >/dev/null 2>&1; then dos2unix -f ~/extract_eadir_to_tmp.sh; else tr -d \"\r\" < ~/extract_eadir_to_tmp.sh > ~/extract_eadir_to_tmp.sh.tmp && mv ~/extract_eadir_to_tmp.sh.tmp ~/extract_eadir_to_tmp.sh; fi; chmod +x ~/extract_eadir_to_tmp.sh; ~/extract_eadir_to_tmp.sh \"%NASPATH%\" || true'"
REM Run psthumbgen.py
python psthumbgen.py --directory "%WINPATH%"
REM Clear old @eaDir on the share via SMB (helps when NAS cp hits Permission denied on root-owned dirs)
call :WIN_REMOVE_LOCAL_EADIR
REM SSH cleanup commands (run separately)
REM Ensure nascleanup.sh exists on NAS (upload + fix line endings), then run it
echo %GRN%Uploading nascleanup.sh to NAS and running cleanup...%RST%
if not exist "%~dp0nascleanup.sh" (
echo %RED%ERROR: nascleanup.sh not found next to this batch file.%RST%
goto END
)
ssh Hydra "cat > ~/nascleanup.sh" < "%~dp0nascleanup.sh"
ssh Hydra "bash -lc 'if command -v dos2unix >/dev/null 2>&1; then dos2unix -f ~/nascleanup.sh; else tr -d \"\r\" < ~/nascleanup.sh > ~/nascleanup.sh.tmp && mv ~/nascleanup.sh.tmp ~/nascleanup.sh; fi; chmod +x ~/nascleanup.sh; ~/nascleanup.sh \"%NASPATH%\"'"
if errorlevel 1 (
echo %RED%ERROR: nascleanup failed on NAS - check promote ^(eaDir_tmp -^> @eaDir^) messages above.%RST%
echo %YLW%Keeping eaDir_tmp on the share so you can retry without re-running FFmpeg.%RST%
call :PRINT_HYDRA_CLEAR_EADIR
) else (
call :WIN_REMOVE_LOCAL_EADIR_TMP
)
goto END
:FIX_ONEDRIVE
echo.
echo %BLD%%MAG%=================================================================%RST%
echo %BLD%%MAG% FIX ONEDRIVE THUMBNAIL OVERRIDE %RST%
echo %BLD%%MAG%=================================================================%RST%
echo.
echo %WHT%This will fix OneDrive overriding your custom thumbnails with%RST%
echo %WHT%generic file icons for unsupported formats like .blend files.%RST%
echo.
echo %CYN%What this does:%RST%
echo %GRY% - Disables OneDrive cloud thumbnail providers%RST%
echo %GRY% - Restores local thumbnail priority%RST%
echo %GRY% - Prevents future thumbnail cache deletion%RST%
echo.
set /p CONFIRM=%YLW%Continue? ^(y/n^): %RST%
if /i not "%CONFIRM%"=="y" goto END
echo.
echo %GRN%Running PowerShell script to fix OneDrive thumbnail override...%RST%
echo.
REM Check if PowerShell script exists
if not exist "fix_thumbnail_override.ps1" (
echo %RED%ERROR: fix_thumbnail_override.ps1 not found in current directory.%RST%
echo %YLW%Please ensure the PowerShell script is in the same folder as this batch file.%RST%
pause
goto END
)
REM Run PowerShell script as administrator
powershell -ExecutionPolicy Bypass -Command "Start-Process PowerShell -ArgumentList '-ExecutionPolicy Bypass -File \"%~dp0fix_thumbnail_override.ps1\"' -Verb RunAs"
echo.
echo %GRN%OneDrive thumbnail override fix initiated.%RST%
echo %GRY%Please check the PowerShell window for progress and results.%RST%
echo.
echo %CYN%After the fix completes:%RST%
echo %GRY% 1. Restart your computer%RST%
echo %GRY% 2. Re-run your thumbnail generation process%RST%
echo %GRY% 3. Your custom thumbnails should now have priority!%RST%
echo.
goto END
REM Print ssh Hydra command to wipe @eaDir when NAS cleanup failed (matches NASPATH from pasted R:\ path).
:PRINT_HYDRA_CLEAR_EADIR
if "%NASPATH%"=="" goto :eof
echo %MAG%To clear locked @eaDir on Hydra: ssh in first.%RST%
echo %GRY%Permission denied lines above name nested paths ^(e.g. editDesc, gameplay^).%RST%
echo %GRY%Clear every @eaDir under the SAME folder you passed to nascleanup ^(NASPATH below^),%RST%
echo %GRY%not only the subpath from the first error line.%RST%
echo %BLD%%YLW% sudo find "%NASPATH%" -depth -type d -name '@eaDir' -exec sudo rm -rf {} +%RST%
goto :eof
REM Remove folder-level @eaDir on the pasted Windows path (same files as NAS over SMB).
:WIN_REMOVE_LOCAL_EADIR
if "%WINPATH%"=="" goto :eof
if exist "%WINPATH%\@eaDir" (
echo %CYN%Removing "%WINPATH%\@eaDir" via Windows ^(SMB share^)...%RST%
rd /s /q "%WINPATH%\@eaDir" 2>nul
if exist "%WINPATH%\@eaDir" (
echo %YLW%WARNING: Could not remove @eaDir; try PowerShell as admin or delete in Explorer.%RST%
)
)
goto :eof
REM Remove every eaDir_tmp under pasted path (including subfolders e.g. gameplay\eaDir_tmp).
:WIN_REMOVE_LOCAL_EADIR_TMP
if "%WINPATH%"=="" goto :eof
echo %CYN%Removing all eaDir_tmp folders under "%WINPATH%" ^(recursive, SMB^)...%RST%
if not exist "%~dp0remove_eadir_tmp_recursive.ps1" (
echo %RED%ERROR: remove_eadir_tmp_recursive.ps1 not found next to this batch file.%RST%
goto :eof
)
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0remove_eadir_tmp_recursive.ps1" "%WINPATH%"
goto :eof
:END
echo %DIM%Press any key to continue . . .%RST%
pause >nul
+315
View File
@@ -0,0 +1,315 @@
=== Enhanced Synology Thumbnail Cleanup ===
Target directory: /volume1/Hydra/Desktop
Stopping indexing services (best effort)...
Clearing indexing queue (if accessible)...
=== Existing @eaDir directories ===
/volume1/Hydra/Desktop/twenty twenty five/@eaDir
/volume1/Hydra/Desktop/twenty twenty five/eaDir_tmp/2025-04-04 intellectual cowardice.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty five/eaDir_tmp/Alex_Repo_-_Duck.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty five/eaDir_tmp/Black_Ops_6_-_Go_Payback_or_Youre_Gay.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty five/eaDir_tmp/ZZZ_-_Mason_and_the_Moss.mp4/@eaDir
/volume1/Hydra/Desktop/how to archive/@eaDir
/volume1/Hydra/Desktop/twenty twenty/SCP-2432/@eaDir
/volume1/Hydra/Desktop/twenty twenty/steamreviewreading/@eaDir
/volume1/Hydra/Desktop/twenty twenty/who can it be now alex/@eaDir
/volume1/Hydra/Desktop/twenty twenty/@eaDir
/volume1/Hydra/Desktop/death/@eaDir
/volume1/Hydra/Desktop/death/deathRefs/@eaDir
/volume1/Hydra/Desktop/death/eaDir_tmp/20200130 - Apex Legends Season 4 ΓÇô Assimilation Launch Trailer.mp4/@eaDir
/volume1/Hydra/Desktop/death/eaDir_tmp/apexhandbroke.mp4/@eaDir
/volume1/Hydra/Desktop/death/eaDir_tmp/deathclip.mp4/@eaDir
/volume1/Hydra/Desktop/RainyProj/fnaf2_1/shorts/@eaDir
/volume1/Hydra/Desktop/RainyProj/fnaf2_1/shorts/eaDir_tmp/fin_1_dicksButtplugFslur.mp4/@eaDir
/volume1/Hydra/Desktop/RainyProj/fnaf2_1/shorts/eaDir_tmp/fin_1_dicksButtplugFslur_TIKTOKCENSOR.mp4/@eaDir
/volume1/Hydra/Desktop/RainyProj/fnaf2_1/shorts/eaDir_tmp/win11 loading.mp4/@eaDir
/volume1/Hydra/Desktop/RebirthProj/dailies/@eaDir
/volume1/Hydra/Desktop/RebirthProj/refs/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/2021-09-25 trunk shenans/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/2021-09-25 trunk shenans/eaDir_tmp/20210925_143559.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/2021-09-25 trunk shenans/eaDir_tmp/20210925_144129.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/2021-09-25 trunk shenans/eaDir_tmp/IMG_0101.MP4/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/2021-09-25 trunk shenans/eaDir_tmp/IMG_6741.MP4/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/2021-09-25 trunk shenans/eaDir_tmp/IMG_6739.MP4/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/cuckhead/@eaDir
/volume1/Hydra/Desktop/twenty twenty one/eaDir_tmp/20210517 - Okay then....mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/retards0626/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/retards0626/eaDir_tmp/retards0626clip.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/average moment.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/gamer time.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/hehe.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/gaming.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/Hoohoo.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/long long man.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/poooo.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/Pogger Moment.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp/recipe.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/eaDir_tmp/trump_on_borrowing.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/eaDir_tmp/20230524_230558.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty two/eaDir_tmp/Messenger call - Google Chrome 2022-04-24 22-08-16_Trim.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Adobe_Premiere_Pro_2_1183982333133324288.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Adobe_Premiere_Pro_2_1183989188341530624.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Adobe_Premiere_Pro_2_1183983050569023488.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Adobe_Premiere_Pro_2_1183984555023925248.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/anywhere_but_here_bender.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Call_of_Duty_Black_1189730327858249728.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Call_of_Duty_Black_1189730168244011008.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/careb_emotional.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Careb_Frerf.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Discord_Clip_1168098495983255552.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Discord_Clip_1183982333133324288.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Discord_Clip_1183983050569023488.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Everyone_is_Like_Crypto.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/invincible.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Mass bordum leads to mass autism.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/nafan_quick_transistion.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/odst_metal_pipe.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/PXL_20231005_021024329.TS.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Teen_Reaches_$19M_S_1168098726372179968.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/Teen_Reaches_$19M_S_1168098495983255552.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/SPOILER_inbound7343850792645916413.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp/upon_nat_request.mp4/@eaDir
/volume1/Hydra/Desktop/twenty twenty four/@eaDir
/volume1/Hydra/Desktop/twenty twenty four/eaDir_tmp/SPOILER_inbound7343850792645916413.mp4/@eaDir
/volume1/Hydra/Desktop/tiktokPotential/manbear/@eaDir
/volume1/Hydra/Desktop/tiktokPotential/marxistIdiocy/@eaDir
/volume1/Hydra/Desktop/tiktokPotential/marxistIdiocy/eaDir_tmp/20240313 - #stitch with @AnuJoose ItΓÇÖs really no mystery as to why weΓÇÖre not having children in America. #politics #congress #senate #fertility #americandream #america #american #government #unitedstatesofamerica #usa .mp4/@eaDir
/volume1/Hydra/Desktop/@eaDir
/volume1/Hydra/Desktop/rainysrambles_scramble/RnR/@eaDir
/volume1/Hydra/Desktop/rainysrambles_scramble/RnR/eaDir_tmp/03.1 conclude argument_Rendered.mov/@eaDir
/volume1/Hydra/Desktop/rainysrambles_scramble/RnR/eaDir_tmp/01 apple controller_Rendered_001.mov/@eaDir
/volume1/Hydra/Desktop/guh/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20140420 - Locked in the bathroom.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20191201 - why are you locked in the bathroom.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20200410 - Video by confused.soup.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20201209 - Stooop. It's turning me on - meme.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20210214 - maybe you should try getting a job.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20211001 - EAT YOUR VEGETABLES remix.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20220412 - Nick's Beats - Pogo Reupload.mkv/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20220427 - Pogo Livestream Pogo in Ableton.mkv/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20230411 - The Jonas Brothers Detail 'Amazing' Collab with Jon Bellion.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20230619 - Colossal is Crazy- Monsterpiece Theater.mkv/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20230619 - Colossal is Crazy- Monsterpiece Theater.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20230511 - Replying to @kelseyvigilante .mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20230708 - Video by teenwry.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231021 - #fyp #negitivity #addiction #funny .mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231114 - Daily Femboy Memes - we're going to russia #femboy #memes #uwu.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231115 - ace ~ lego cartoon connoisseur - 559Q-RXGN4-JZPP.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231124 - Video by nikkoortizzz.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231207 - Video by octane_workholding.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231213 - Blender Renaissance 🔶 - https:⧸⧸t.co⧸xcHq2BnL2b.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231218 - Dot's Uke.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231222 - No Context Shitposting - average fnaf fan.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20231228 - Rock solid - https:⧸⧸t.co⧸lMeCXKipAS.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240110 - Shadow Cringelord - This feels like a personal attack.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240114 - Your Typical Local Man - https:⧸⧸t.co⧸Vh4sKQNkYY.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240115 - James Rehwald - @FBI Every year yall do this.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240115 - Sueh - @SugarandStories exactly!.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240119 - smol silly cat - https:⧸⧸t.co⧸9SzXPc8ZNt.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240201 - illuminatibot - https:⧸⧸t.co⧸8yB9Lit47v.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240317 - Coffee_Coyote - @_Hazardous_Wolf.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240326 - Explorer - @weirddalle.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240326 - no context memes - https:⧸⧸t.co⧸aPEaf6YBrJ.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240404 - NewsRoomNation 🇺🇸 - Clarence Thomas trolling the media. "I will leave the court, when I do my job as poorly as you do yours".mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240415 - Jon Bellion Nation🥤 - I don't want to set expectations without Jon Bellion saying anything, but the last time he went on a trip like this, it was for Glory Sound Prep 👁️👄👁️.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240419 - Jon Bellion Nation🥤 - And also a little bit Latino.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240604 - For YEARS She Recorded Everything on TV.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240430 - Literally Ryan Gosling (parody) - https:⧸⧸t.co⧸PWtBzXlLMT.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240622 - Caleb - @NBC10.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240711 - Your Typical Local Man - https:⧸⧸t.co⧸fwflNwxmyb.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240720 - she wants me to die - vrchat.mkv/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240723 - Jimmy Got a Sneak Peek of BTS' Jimin's New Song "Who" in Studio | The Tonight Show.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240724 - Wile E. Coyote - @USDebtClock_org Here is a great 4 min vid on the hidden secrets of money the government doesn't want you to know. 🇺🇸🔥.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20240814 - Smadar🪬 - @SwipeWright @benshapiro 😆.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20241020 - gremic ⚜️ - @seiyaposting still shit just dropped.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20241028 - katie - @jbellionnation Full version for the angry grifters in the replies!!!!!.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20241121 - Elon Musk - https:⧸⧸t.co⧸i3Vj8JsCwO.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20241214 - Declaration of Memes - @Rothmus Every single time.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20250126 - jonbellion - https:⧸⧸t.co⧸Y3eHbDKop9.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20250218 - Elon Musk - Yes.mp4/@eaDir
/volume1/Hydra/Desktop/guh/eaDir_tmp/20250220 - Joe Hawley - Turn the Lights Off - 2006 Demo.mkv/@eaDir
/volume1/Hydra/Desktop/snake metal gear colonel airpods/@eaDir
/volume1/Hydra/Desktop/snake metal gear colonel airpods/eaDir_tmp/Metal Gear Solid (PlayStation, 1998) - Almost All Codec Conversations - 6 6.mp4/@eaDir
/volume1/Hydra/Desktop/headline titles/@eaDir
/volume1/Hydra/Desktop/things/@eaDir
/volume1/Hydra/Desktop/wood/@eaDir
/volume1/Hydra/Desktop/mems/@eaDir
/volume1/Hydra/Desktop/mems/eaDir_tmp/0tJtWTIsIUec2X3s.mp4/@eaDir
/volume1/Hydra/Desktop/mems/eaDir_tmp/5f60ba47065db6ed687e39d78b88f230.mp4/@eaDir
/volume1/Hydra/Desktop/mems/eaDir_tmp/4exZmG-zIv2vNstY.mp4/@eaDir
/volume1/Hydra/Desktop/mems/eaDir_tmp/rapidsave.com_-g2m3l7u44y3f1.mp4/@eaDir
/volume1/Hydra/Desktop/mems/eaDir_tmp/20251013 - Viktor Ze Husky - https:⧸⧸t.co⧸Wz9dqXFcnl.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2022-05-21 17.29.46.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2022-10-05 09.20.55.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2022-10-07 13.28.59.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - cats dubbed by half life 1 scientists - a thread.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - https -_t.co_47YnLVLbPR.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - https -_t.co_9Ru7Oqx5BY.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - https -_t.co_cOusquHOVz.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - https -_t.co_djPJhuPkfy.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - https -_t.co_hZcB18qfMP.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - https -_t.co_lcqoDVW42j.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - https -_t.co_VNqXhlJrtc.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20220416 - yahiamice. - this one's my favorite.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2023-05-08 23.33.09.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2023-05-08 23.34.25.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2023-05-30 15.55.03.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2023-06-12 13.50.57.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/2023-06-25 10.05.56.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20230513 - #halflife #scientist #npc #cat .mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/20230619 - a guy who sends memes - @Snekkuu @Hi_am_bored_guy.mp4/@eaDir
/volume1/Hydra/Desktop/half life cats/eaDir_tmp/245468366_198662945680481_6749721867320171618_n.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/beachold_tt.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/beachold_yt1.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/beachold_yt1_cropffs.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/beachold_yt2.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/beachold_yt3.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/groundedBugFull.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/groundedBugP1.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/groundedBugP2_trim.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp/groundedBugP2.mp4/@eaDir
/volume1/Hydra/Desktop/subnautica1/RnR/@eaDir
/volume1/Hydra/Desktop/subnautica1/RnR/eaDir_tmp/subnautica1 Linked Comp 06sn1_shorts.aep_Rendered.mov/@eaDir
/volume1/Hydra/Desktop/subnautica1/RnR/eaDir_tmp/subnautica1 Linked Comp 06sn1_shorts.aep_Rendered_003.mov/@eaDir
/volume1/Hydra/Desktop/subnautica1/RnR/eaDir_tmp/subnautica1 Linked Comp 06sn1_shorts.aep_Rendered_004.mov/@eaDir
/volume1/Hydra/Desktop/subnautica1/eaDir_tmp/20230129 - Subnautica Donald Trump Easter Egg.mp4/@eaDir
/volume1/Hydra/Desktop/randomarts/mangoyena/mango female hyena behavior/@eaDir
/volume1/Hydra/Desktop/randomarts/mangoyena/@eaDir
/volume1/Hydra/Desktop/randomarts/twokindsdump/@eaDir
/volume1/Hydra/Desktop/randomarts/@eaDir
/volume1/Hydra/Desktop/organizedchaos/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/20201013 - Sitcom.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/20171223_-_polar_express_looking_for_a_girl.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/Atlantis - You don't wanna know.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/dwaynegetout.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/eggman shutup.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/how bout you join the vc.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/i forgive you.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/i love black girls man.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/joe biden show us stop playin around.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/keemstar you are gay.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/kermithump.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/my source is that i made it tf up.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/spellColossal.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/that's called mf bars nigga.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/theatrevibe.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/thomas george carlin.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/two pack of ass - mf bars nigga part 2.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/twomad incomprehensibly retarded.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/yespleasedothat.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/you don't wanna know.mp4/@eaDir
/volume1/Hydra/Desktop/organizedchaos/eaDir_tmp/lundstrom HHS hilarity.mp4/@eaDir
/volume1/Hydra/Desktop/writinRepo/destruction/@eaDir
/volume1/Hydra/Desktop/writinRepo/yt/DraconianDiscourse/DragonsDesk/2025-05-13 why were the natives technologically primitive/@eaDir
/volume1/Hydra/Desktop/writinRepo/yt/DraconianDiscourse/DragonsDesk/@eaDir
/volume1/Hydra/Desktop/writinRepo/yt/The Giant's Father/@eaDir
/volume1/Hydra/Desktop/writinRepo/yt/political compass/@eaDir
/volume1/Hydra/Desktop/writinRepo/yt/potentialvids/coco vs book of life/@eaDir
/volume1/Hydra/Desktop/writinRepo/yt/potentialvids/coco vs book of life/eaDir_tmp/20141017 - Carmelo (2000).mp4/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/coq/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/deepgit/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/dilay/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/icofx/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/inno-script-studio/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/innosetup/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/io-ninja/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/spywareblaster/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/stretchly/screenshots/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/superposition-benchmark/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/tinymediamanager/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/tinymediamanager/screenshots/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/codetrack/screenshots/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/codetrack/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/herdprotect/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/authy-desktop/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/boxcli/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/cacher/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/claws-mail/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/cmder/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/cmdermini/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/codecontracts/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/codemaid/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/disposablefixer/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/dumo/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/electrum-ltc/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/encfsmp/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/enki/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/folder_size/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/friture/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/fstar/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/gbm/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/ghostdoc-enterprise/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/ghostdoc-pro/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/golly/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/gtkwave/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/hardentools/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/heaven-benchmark/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/linux-reader/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/lunacy/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/master-pdf-editor/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/mediathekview/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/meld/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/monogame/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/nagstamon/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/nordpass/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/nordlocker/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/nordvpn-teams/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/onionshare/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/openmpt/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/origin/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/persepolis/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/plane9/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/powder-toy/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/privazer/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/qilin-editor/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/qilin-editor/screenshots/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/qemu/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/qmmp/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/qnapi/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/ubisoft-connect/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/unit-test-boilerplate-generator/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/unit-test-boilerplate-generator/screenshots/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/automatic/valley-benchmark/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/manual/asp-net-mvc-boilerplate/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/manual/metapad-light/icons/@eaDir
/volume1/Hydra/Desktop/chocolatey-packages/manual/metapad/icons/@eaDir
/volume1/Hydra/Desktop/eaDir_tmp/dog snuggle boat.mp4/@eaDir
/volume1/Hydra/Desktop/eaDir_tmp/20230615 - 3 Disturbing TRUE Sleepover Horror Stories (V5).mp4/@eaDir
/volume1/Hydra/Desktop/eaDir_tmp/20220927 - Jordan PetersonΓÇÖs FULL Interview With Piers Morgan.mp4/@eaDir
/volume1/Hydra/Desktop/eaDir_tmp/default.mp4/@eaDir
=== Removing existing @eaDir directories ===
=== Installing custom thumbnails ===
-> Replacing /volume1/Hydra/Desktop/twenty twenty five/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/death/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/RainyProj/fnaf2_1/shorts/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/twenty twenty one/2021-09-25 trunk shenans/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/twenty twenty one/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/twenty twenty two/retards0626/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/twenty twenty two/The Experience/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/twenty twenty two/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/twenty twenty three/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/twenty twenty four/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/tiktokPotential/marxistIdiocy/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/rainysrambles_scramble/RnR/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/guh/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/snake metal gear colonel airpods/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/mems/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/half life cats/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/subnautica1/fin_shorts/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/subnautica1/RnR/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/subnautica1/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/organizedchaos/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/writinRepo/yt/potentialvids/coco vs book of life/eaDir_tmp
-> Replacing /volume1/Hydra/Desktop/eaDir_tmp
=== Removing leftover eaDir_tmp directories ===
=== Adding indexing exclusion hints ===
=== Protecting custom thumbnails ===
=== Cleanup complete! ===
Note: If indexing was stopped and needs restarting, use DSM UI or your NAS service tools.
+50
View File
@@ -0,0 +1,50 @@
#!/bin/bash
# Extract existing Synology thumbnails from @eaDir into eaDir_tmp so thumbgen skips regeneration
# Usage: ./extract_eadir_to_tmp.sh /volume1/YourShare/path
set -uo pipefail
if [ $# -eq 0 ]; then
echo "Usage: $0 <directory_path>"
exit 1
fi
TARGET_DIR="$1"
if [ ! -d "$TARGET_DIR" ]; then
echo "Error: '$TARGET_DIR' is not a directory"
exit 1
fi
echo "=== Extracting @eaDir thumbnails to eaDir_tmp ==="
echo "Target: $TARGET_DIR"
# Every .../@eaDir under TARGET (e.g. TARGET/@eaDir and TARGET/gameplay/@eaDir). Skip paths inside eaDir_tmp.
find "$TARGET_DIR" -type d -name '@eaDir' ! -path '*/eaDir_tmp/*' -print0 | while IFS= read -r -d '' EADIR; do
PARENT_DIR="$(dirname "$EADIR")"
# Each immediate subdir under @eaDir corresponds to a source filename
find "$EADIR" -mindepth 1 -maxdepth 1 -type d -print0 | while IFS= read -r -d '' ENTRY; do
BASENAME="$(basename "$ENTRY")"
DEST_DIR="$PARENT_DIR/eaDir_tmp/$BASENAME"
mkdir -p "$DEST_DIR" || continue
# Copy without overwriting existing files in eaDir_tmp
for F in \
SYNOVIDEO_VIDEO_SCREENSHOT.jpg \
SYNOPHOTO_THUMB_XL.jpg \
SYNOPHOTO_THUMB_B.jpg \
SYNOPHOTO_THUMB_M.jpg \
SYNOPHOTO_THUMB_PREVIEW.jpg \
SYNOPHOTO_THUMB_S.jpg; do
if [ -f "$ENTRY/$F" ] && [ ! -f "$DEST_DIR/$F" ]; then
cp "$ENTRY/$F" "$DEST_DIR/$F"
fi
done
done
done
echo "=== Done. Existing thumbnails copied into eaDir_tmp where available. ==="
+160
View File
@@ -0,0 +1,160 @@
# Fix OneDrive Thumbnail Override - Restore Local Thumbnails
# This script disables OneDrive's cloud thumbnail providers that override custom thumbnails
Write-Host "🎯 Fixing OneDrive Thumbnail Override Issue..." -ForegroundColor Cyan
Write-Host "This will restore priority to your locally-generated thumbnails." -ForegroundColor Yellow
# Check if running as administrator
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Host "❌ This script requires administrator privileges. Please run as administrator." -ForegroundColor Red
exit 1
}
# 1. Disable OneDrive Files On-Demand thumbnail override
Write-Host "🔧 Disabling OneDrive Files On-Demand thumbnail override..." -ForegroundColor Green
try {
# User-level OneDrive policies
if (!(Test-Path "HKCU:\SOFTWARE\Policies\Microsoft\OneDrive")) {
New-Item -Path "HKCU:\SOFTWARE\Policies\Microsoft\OneDrive" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Policies\Microsoft\OneDrive" -Name "DisableCloudThumbnails" -Value 1 -Type DWord
# Machine-level OneDrive policies
if (!(Test-Path "HKLM:\SOFTWARE\Policies\Microsoft\OneDrive")) {
New-Item -Path "HKLM:\SOFTWARE\Policies\Microsoft\OneDrive" -Force | Out-Null
}
Set-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\OneDrive" -Name "DisableCloudThumbnails" -Value 1 -Type DWord
Write-Host "✅ OneDrive thumbnail override disabled" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Could not set OneDrive policies: $($_.Exception.Message)" -ForegroundColor Yellow
}
# 2. Disable cloud files thumbnail provider
Write-Host "🔧 Disabling cloud files thumbnail provider..." -ForegroundColor Green
try {
# This is the key provider that overrides local thumbnails
$cloudProviderPath = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ThumbnailProviders\{E357FCCD-A995-4576-B01F-234630154E96}"
if (Test-Path $cloudProviderPath) {
Remove-Item -Path $cloudProviderPath -Force -Recurse
Write-Host "✅ Cloud thumbnail provider removed" -ForegroundColor Green
} else {
Write-Host "️ Cloud thumbnail provider not found (may already be disabled)" -ForegroundColor Blue
}
} catch {
Write-Host "⚠️ Warning: Could not remove cloud thumbnail provider: $($_.Exception.Message)" -ForegroundColor Yellow
}
# 3. Set local thumbnail preferences
Write-Host "🔧 Configuring local thumbnail preferences..." -ForegroundColor Green
try {
# Ensure local thumbnails are enabled
if (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced")) {
New-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Force | Out-Null
}
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "IconsOnly" -Value 0 -Type DWord
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "DisableThumbnailsOnNetworkFolders" -Value 0 -Type DWord
# Add custom registry value to prefer local thumbnails
Set-ItemProperty -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" -Name "UseLocalThumbnailProvider" -Value 1 -Type DWord
Write-Host "✅ Local thumbnail preferences configured" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Could not set local thumbnail preferences: $($_.Exception.Message)" -ForegroundColor Yellow
}
# 4. Disable OneDrive shell icon overlays (these can interfere with thumbnails)
Write-Host "🔧 Disabling OneDrive shell overlays..." -ForegroundColor Green
$overlayPaths = @(
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive1",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive2",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive3",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive4",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive5",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive6",
"HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\OneDrive7"
)
$overlaysRemoved = 0
foreach ($overlayPath in $overlayPaths) {
try {
if (Test-Path $overlayPath) {
Remove-Item -Path $overlayPath -Force -Recurse
$overlaysRemoved++
}
} catch {
Write-Host "⚠️ Warning: Could not remove overlay $overlayPath" -ForegroundColor Yellow
}
}
Write-Host "✅ Removed $overlaysRemoved OneDrive shell overlays" -ForegroundColor Green
# 5. Clear thumbnail cache to force regeneration
Write-Host "🔧 Clearing thumbnail cache to force regeneration..." -ForegroundColor Green
try {
# Stop Explorer process
Stop-Process -Name "explorer" -Force -ErrorAction SilentlyContinue
Start-Sleep -Seconds 2
# Clear thumbnail cache
$thumbCachePath = "$env:LOCALAPPDATA\Microsoft\Windows\Explorer"
$thumbCacheFiles = Get-ChildItem -Path $thumbCachePath -Filter "thumbcache_*.db" -ErrorAction SilentlyContinue
foreach ($file in $thumbCacheFiles) {
try {
Remove-Item -Path $file.FullName -Force
} catch {
Write-Host "⚠️ Could not remove $($file.Name)" -ForegroundColor Yellow
}
}
# Restart Explorer
Start-Process -FilePath "explorer.exe"
Start-Sleep -Seconds 3
Write-Host "✅ Thumbnail cache cleared and Explorer restarted" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Issues clearing thumbnail cache: $($_.Exception.Message)" -ForegroundColor Yellow
Write-Host "🔄 Please restart Windows Explorer manually" -ForegroundColor Blue
}
# 6. Prevent automatic thumbnail cache deletion
Write-Host "🔧 Preventing Windows from auto-deleting thumbnail cache..." -ForegroundColor Green
try {
# Disable thumbnail cache auto-cleanup in Disk Cleanup
$autorunKey = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache"
if (Test-Path $autorunKey) {
Set-ItemProperty -Path $autorunKey -Name "Autorun" -Value 0 -Type DWord
}
# Also disable for WOW64 on 64-bit systems
$autorunKeyWow64 = "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Explorer\VolumeCaches\Thumbnail Cache"
if (Test-Path $autorunKeyWow64) {
Set-ItemProperty -Path $autorunKeyWow64 -Name "Autorun" -Value 0 -Type DWord
}
Write-Host "✅ Thumbnail cache auto-deletion disabled" -ForegroundColor Green
} catch {
Write-Host "⚠️ Warning: Could not disable thumbnail cache auto-deletion: $($_.Exception.Message)" -ForegroundColor Yellow
}
Write-Host ""
Write-Host "🎉 OneDrive thumbnail override fix complete!" -ForegroundColor Green
Write-Host ""
Write-Host "📋 What was changed:" -ForegroundColor Cyan
Write-Host " ✓ Disabled OneDrive cloud thumbnail providers" -ForegroundColor White
Write-Host " ✓ Removed cloud files thumbnail provider" -ForegroundColor White
Write-Host " ✓ Set local thumbnail preferences" -ForegroundColor White
Write-Host " ✓ Disabled OneDrive shell overlays" -ForegroundColor White
Write-Host " ✓ Cleared and regenerated thumbnail cache" -ForegroundColor White
Write-Host " ✓ Prevented automatic thumbnail cache deletion" -ForegroundColor White
Write-Host ""
Write-Host "🔄 Please restart your computer for all changes to take effect." -ForegroundColor Yellow
Write-Host "📁 Your custom thumbnails should now have priority over OneDrive's generic icons!" -ForegroundColor Green
+144
View File
@@ -0,0 +1,144 @@
#!/bin/bash
# Enhanced NAS cleanup script with thumbnail protection
# Usage: ./nascleanup.sh /volume1/Hydra/path/to/directory
if [ $# -eq 0 ]; then
echo "Usage: $0 <directory_path>"
echo "Example: $0 /volume1/Hydra/Creative/artsy"
exit 1
fi
TARGET_DIR="$1"
# Merge synoindexd layout .../<file>/@eaDir/*.jpg into .../<file>/ (Synology Drive expects no inner @eaDir).
flatten_indexer_layout() {
local root="$1"
[ -d "$root" ] || return 0
find "$root" -mindepth 2 -type d -name '@eaDir' -print0 2>/dev/null | while IFS= read -r -d '' NEST; do
PARENT="$(dirname "$NEST")"
[ -d "$NEST" ] || continue
for f in "$NEST"/*; do
[ -e "$f" ] || continue
base="$(basename "$f")"
[ "$base" = "SYNOINDEX_MEDIA_INFO" ] && continue
mv -f "$f" "$PARENT/" 2>/dev/null || true
done
rm -rf "$NEST" 2>/dev/null || true
done
}
# Copy one thumbgen tree: PARENT/eaDir_tmp -> PARENT/@eaDir (psthumbgen uses per-folder eaDir_tmp).
promote_one_eadir_tmp() {
local EADIR_TMP="$1"
local PARENT TARGET_AT SRC_JPG DST_JPG
PARENT="$(dirname "$EADIR_TMP")"
TARGET_AT="$PARENT/@eaDir"
[ -d "$EADIR_TMP" ] || return 0
chmod -R 755 "$EADIR_TMP" 2>/dev/null || true
find "$EADIR_TMP" -type f -exec chmod 644 '{}' \; 2>/dev/null || true
echo " -> Flattening eaDir_tmp (indexer may have added .../<file>/@eaDir/) before copy: $EADIR_TMP"
flatten_indexer_layout "$EADIR_TMP"
echo " -> Replacing $EADIR_TMP -> $TARGET_AT"
SRC_JPG=$(find "$EADIR_TMP" -type f -name 'SYNO*.jpg' 2>/dev/null | wc -l | tr -d '[:space:]')
rm -rf "$TARGET_AT"
mkdir -p "$TARGET_AT"
if ! cp -R "$EADIR_TMP/." "$TARGET_AT/"; then
echo "ERROR: eaDir_tmp -> @eaDir copy failed (see cp messages above)."
exit 1
fi
echo " -> Flattening @eaDir after copy (same layout fix)"
flatten_indexer_layout "$TARGET_AT"
DST_JPG=$(find "$TARGET_AT" -type f -name 'SYNO*.jpg' 2>/dev/null | wc -l | tr -d '[:space:]')
if [ "$SRC_JPG" -gt 0 ] && [ "$DST_JPG" -ne "$SRC_JPG" ]; then
echo "ERROR: Promote incomplete: $DST_JPG SYNO*.jpg in @eaDir vs $SRC_JPG in eaDir_tmp (expected equal)."
exit 1
fi
chmod -R 755 "$EADIR_TMP" 2>/dev/null || true
find "$EADIR_TMP" -type f -exec chmod u+w '{}' \; 2>/dev/null || true
find "$EADIR_TMP" -type d -exec chmod u+w '{}' \; 2>/dev/null || true
rm -rf "$EADIR_TMP" 2>/dev/null || sudo -n rm -rf "$EADIR_TMP" 2>/dev/null || true
}
echo "=== Enhanced Synology Thumbnail Cleanup ==="
echo "Target directory: $TARGET_DIR"
# 1. Stop indexing services temporarily
echo "Stopping indexing services (best effort)..."
# Non-login SSH often has a minimal PATH; binary lives in /usr/syno/sbin
if [ -x /usr/syno/sbin/synoservicectl ]; then
SYNOCTL=/usr/syno/sbin/synoservicectl
elif command -v synoservicectl >/dev/null 2>&1; then
SYNOCTL=synoservicectl
else
SYNOCTL=""
fi
if [ -n "$SYNOCTL" ]; then
"$SYNOCTL" --stop synoindexd 2>/dev/null || true
"$SYNOCTL" --stop pkgctl-SynoFinder 2>/dev/null || true
elif command -v systemctl >/dev/null 2>&1; then
# Plain `systemctl` as non-root usually fails silently; try sudo -n first (NOPASSWD).
for u in synoindexd pkgctl-SynoFinder; do
sudo -n systemctl stop "$u" 2>/dev/null || systemctl stop "$u" 2>/dev/null || true
done
else
echo " -> Service control unavailable; skipping"
fi
# 2. Clear indexing queue to prevent regeneration
echo "Clearing indexing queue (if accessible)..."
if [ -w /var/spool ]; then
rm -f /var/spool/syno_indexing_queue* 2>/dev/null || true
fi
# 3. Dry-run check (see what @eaDir directories exist)
echo "=== Existing @eaDir directories ==="
find "$TARGET_DIR" -type d -name '@eaDir' -exec echo '{}' \;
# 4. Remove any existing @eaDir directories
echo "=== Removing existing @eaDir directories ==="
# Drop indexer sidecars first (often root-owned — passwordless sudo helps)
if command -v sudo >/dev/null 2>&1; then
sudo -n find "$TARGET_DIR" -name 'SYNOINDEX_MEDIA_INFO' \( -type f -o -type d \) -exec rm -rf '{}' \; 2>/dev/null || true
fi
find "$TARGET_DIR" -name 'SYNOINDEX_MEDIA_INFO' \( -type f -o -type d \) -exec chmod -R u+w '{}' \; 2>/dev/null || true
find "$TARGET_DIR" -name 'SYNOINDEX_MEDIA_INFO' \( -type f -o -type d \) -exec rm -rf '{}' \; 2>/dev/null || true
# First make them writable so we can remove them
find "$TARGET_DIR" -type d -name '@eaDir' -exec chmod -R 755 '{}' \; 2>/dev/null || true
find "$TARGET_DIR" -path '*/@eaDir/*' -type f -exec chmod 644 '{}' \; 2>/dev/null || true
# Now remove them (2>/dev/null: races when parents disappear mid-find)
find "$TARGET_DIR" -type d -name '@eaDir' -exec rm -rf '{}' \; 2>/dev/null || true
# 5. Promote every .../eaDir_tmp -> .../@eaDir (thumbgen writes eaDir_tmp next to each video folder, not only TARGET_DIR/eaDir_tmp)
echo "=== Installing custom thumbnails ==="
INSTALL_ANY=0
while IFS= read -r -d '' EADIR_TMP; do
INSTALL_ANY=1
promote_one_eadir_tmp "$EADIR_TMP"
done < <(find "$TARGET_DIR" -type d -name 'eaDir_tmp' -print0)
if [ "$INSTALL_ANY" -eq 0 ]; then
echo " -> No eaDir_tmp under $TARGET_DIR; skipping install step"
fi
echo "=== Removing any leftover eaDir_tmp directories ==="
find "$TARGET_DIR" -type d -name 'eaDir_tmp' -exec rm -rf '{}' \; 2>/dev/null || true
# 6. Protect custom thumbnails with read-only permissions
echo "=== Adding indexing exclusion hints ==="
find "$TARGET_DIR" -type d -name '@eaDir' -exec sh -c 'touch "$1/.noindex" 2>/dev/null || true' _ {} \; 2>/dev/null || true
# 7. Protect custom thumbnails with read-only permissions (after .noindex)
echo "=== Protecting custom thumbnails ==="
find "$TARGET_DIR" -type d -name '@eaDir' -exec chmod 555 '{}' \; 2>/dev/null || true
find "$TARGET_DIR" -path '*/@eaDir/*' -type f -exec chmod 444 '{}' \; 2>/dev/null || true
echo "=== Cleanup complete! ==="
echo "Restarting indexing services (best effort)..."
if [ -n "$SYNOCTL" ]; then
"$SYNOCTL" --start synoindexd 2>/dev/null || true
"$SYNOCTL" --start pkgctl-SynoFinder 2>/dev/null || true
elif command -v systemctl >/dev/null 2>&1; then
for u in synoindexd pkgctl-SynoFinder; do
sudo -n systemctl start "$u" 2>/dev/null || systemctl start "$u" 2>/dev/null || true
done
fi
echo "Note: If indexing was stopped and needs restarting, use DSM UI or: sudo systemctl restart synoindexd"
+1228 -13
View File
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
param(
[Parameter(Mandatory = $true)]
[string] $Root
)
if (-not (Test-Path -LiteralPath $Root)) { exit 0 }
$dirs = @(Get-ChildItem -LiteralPath $Root -Recurse -Directory -Filter 'eaDir_tmp' -ErrorAction SilentlyContinue |
Sort-Object { $_.FullName.Length } -Descending)
foreach ($d in $dirs) {
try {
Remove-Item -LiteralPath $d.FullName -Recurse -Force
Write-Host "Removed: $($d.FullName)"
} catch {
Write-Host "Failed: $($d.FullName)"
}
}