Files
synology-thumbgen/autoThumbs.bat
T

209 lines
7.6 KiB
Batchfile

@echo off
setlocal
REM Always use 'nathan' as NAS username
set NASUSER=nathan
REM Menu for operation selection
echo.
echo Select operation:
echo 1. Generate thumbnails only
echo 2. SSH cleanup only
echo 3. Both (generate thumbnails + SSH cleanup)
echo 4. Fix OneDrive thumbnail override (NEW!)
echo.
set /p CHOICE=Enter your choice (1-4):
if "%CHOICE%"=="1" goto THUMBS_ONLY
if "%CHOICE%"=="2" goto SSH_ONLY
if "%CHOICE%"=="3" goto BOTH
if "%CHOICE%"=="4" goto FIX_ONEDRIVE
echo Invalid choice. Exiting.
exit /b
:THUMBS_ONLY
REM Prompt for Windows path
set /p WINPATH=Enter the full Windows path to your NAS directory (e.g., R:\YouTube\Streams\MixerTwitch):
if "%WINPATH%"=="" (
echo No path provided. Exiting.
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 Uploading extract_eadir_to_tmp.sh to NAS and seeding...
if not exist "%~dp0extract_eadir_to_tmp.sh" (
echo ERROR: extract_eadir_to_tmp.sh not found next to this batch file.
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=Enter the full Windows path to your NAS directory (e.g., R:\YouTube\Streams\MixerTwitch):
if "%WINPATH%"=="" (
echo No path provided. Exiting.
exit /b
)
REM Convert Windows path to NAS path
set "RELPATH=%WINPATH:~3%"
set "RELPATH=%RELPATH:\=/%"
set "NASPATH=/volume1/Hydra/%RELPATH%"
echo DEBUG: WINPATH = %WINPATH%
echo DEBUG: RELPATH = %RELPATH%
echo DEBUG: NASPATH = %NASPATH%
echo.
call :WIN_REMOVE_LOCAL_EADIR
REM Ensure nascleanup.sh exists on NAS (upload + fix line endings), then run it
echo Uploading nascleanup.sh to NAS and running cleanup...
if not exist "%~dp0nascleanup.sh" (
echo ERROR: nascleanup.sh not found next to this batch file.
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 ERROR: nascleanup failed on NAS - check promote ^(eaDir_tmp -^> @eaDir^) messages above.
echo Keeping eaDir_tmp on the share so you can retry without re-running FFmpeg.
call :PRINT_HYDRA_CLEAR_EADIR
) else (
call :WIN_REMOVE_LOCAL_EADIR_TMP
)
goto END
:BOTH
REM Prompt for Windows path
set /p WINPATH=Enter the full Windows path to your NAS directory (e.g., R:\YouTube\Streams\MixerTwitch):
if "%WINPATH%"=="" (
echo No path provided. Exiting.
exit /b
)
REM Convert Windows path to NAS path
set "RELPATH=%WINPATH:~3%"
set "RELPATH=%RELPATH:\=/%"
set "NASPATH=/volume1/Hydra/%RELPATH%"
echo DEBUG: WINPATH = %WINPATH%
echo DEBUG: RELPATH = %RELPATH%
echo DEBUG: NASPATH = %NASPATH%
echo.
REM Pre-seed eaDir_tmp from @eaDir on NAS before generation
echo Uploading extract_eadir_to_tmp.sh to NAS and seeding...
if not exist "%~dp0extract_eadir_to_tmp.sh" (
echo ERROR: extract_eadir_to_tmp.sh not found next to this batch file.
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 Uploading nascleanup.sh to NAS and running cleanup...
if not exist "%~dp0nascleanup.sh" (
echo ERROR: nascleanup.sh not found next to this batch file.
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 ERROR: nascleanup failed on NAS - check promote ^(eaDir_tmp -^> @eaDir^) messages above.
echo Keeping eaDir_tmp on the share so you can retry without re-running FFmpeg.
call :PRINT_HYDRA_CLEAR_EADIR
) else (
call :WIN_REMOVE_LOCAL_EADIR_TMP
)
goto END
:FIX_ONEDRIVE
echo.
echo =================================================================
echo FIX ONEDRIVE THUMBNAIL OVERRIDE
echo =================================================================
echo.
echo This will fix OneDrive overriding your custom thumbnails with
echo generic file icons for unsupported formats like .blend files.
echo.
echo What this does:
echo - Disables OneDrive cloud thumbnail providers
echo - Restores local thumbnail priority
echo - Prevents future thumbnail cache deletion
echo.
set /p CONFIRM=Continue? (y/n):
if /i not "%CONFIRM%"=="y" goto END
echo.
echo Running PowerShell script to fix OneDrive thumbnail override...
echo.
REM Check if PowerShell script exists
if not exist "fix_thumbnail_override.ps1" (
echo ERROR: fix_thumbnail_override.ps1 not found in current directory.
echo Please ensure the PowerShell script is in the same folder as this batch file.
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 OneDrive thumbnail override fix initiated.
echo Please check the PowerShell window for progress and results.
echo.
echo After the fix completes:
echo 1. Restart your computer
echo 2. Re-run your thumbnail generation process
echo 3. Your custom thumbnails should now have priority!
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 To clear locked @eaDir on Hydra: ssh in first, then run:
echo sudo rm -rf "%NASPATH%/@eaDir"
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 Removing "%WINPATH%\@eaDir" via Windows ^(SMB share^)...
rd /s /q "%WINPATH%\@eaDir" 2>nul
if exist "%WINPATH%\@eaDir" (
echo WARNING: Could not remove @eaDir; try PowerShell as admin or delete in Explorer.
)
)
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 Removing all eaDir_tmp folders under "%WINPATH%" ^(recursive, SMB^)...
if not exist "%~dp0remove_eadir_tmp_recursive.ps1" (
echo ERROR: remove_eadir_tmp_recursive.ps1 not found next to this batch file.
goto :eof
)
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0remove_eadir_tmp_recursive.ps1" "%WINPATH%"
goto :eof
:END
pause