190 lines
6.9 KiB
Batchfile
190 lines
6.9 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%\"'"
|
|
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%\"'"
|
|
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 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 |