42d7afb087
I should have done this a long time ago. Oh well, no time like the present!
75 lines
2.1 KiB
Batchfile
75 lines
2.1 KiB
Batchfile
@echo off
|
|
REM Check if FFmpeg is in PATH
|
|
where ffmpeg >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo FFmpeg is not installed or not in PATH.
|
|
pause
|
|
exit /b
|
|
)
|
|
|
|
REM Check if a file was dragged onto the script
|
|
if "%~1"=="" (
|
|
echo No file was dragged onto the script.
|
|
pause
|
|
exit /b
|
|
)
|
|
|
|
REM Get the filename without extension
|
|
set "filename=%~n1"
|
|
set "outputfile=%filename%_chapters.csv"
|
|
|
|
REM Extract chapters using FFmpeg
|
|
ffmpeg -i "%~1" -f ffmetadata chapters.txt
|
|
|
|
REM Check if chapters.txt was created
|
|
if not exist chapters.txt (
|
|
echo No chapters found in the file.
|
|
pause
|
|
exit /b
|
|
)
|
|
|
|
REM Convert chapters.txt to CSV using tab as a separator
|
|
(
|
|
echo Marker Name Description In Out Duration Marker Type
|
|
setlocal enabledelayedexpansion
|
|
set "last_start_time="
|
|
for /f "tokens=1,2 delims==" %%A in ('findstr /c:"START=" /c:"title=" chapters.txt') do (
|
|
if "%%A"=="START" (
|
|
set "timestamp=%%B"
|
|
REM Convert timestamp from milliseconds to seconds assuming 60fps
|
|
set /a "milliseconds=timestamp %% 1000"
|
|
set /a "total_seconds=timestamp / 1000"
|
|
set /a "frames=(milliseconds * 60) / 1000"
|
|
set /a "seconds=total_seconds %% 60"
|
|
set /a "minutes=(total_seconds / 60) %% 60"
|
|
set /a "hours=total_seconds / 3600"
|
|
|
|
REM Pad values to ensure proper format
|
|
if !hours! lss 10 set "hours=0!hours!"
|
|
if !minutes! lss 10 set "minutes=0!minutes!"
|
|
if !seconds! lss 10 set "seconds=0!seconds!"
|
|
if !frames! lss 10 set "frames=0!frames!"
|
|
|
|
set "formatted_time=!hours!:!minutes!:!seconds!:!frames!"
|
|
|
|
if defined last_start_time (
|
|
echo !title! !last_start_time! !last_start_time! 00:00:00:00 Chapter
|
|
)
|
|
set "last_start_time=!formatted_time!"
|
|
) else if "%%A"=="title" (
|
|
set "title=%%B"
|
|
)
|
|
)
|
|
REM Handle the last chapter
|
|
if defined last_start_time (
|
|
echo !title! !last_start_time! !last_start_time! 00:00:00:00 Chapter
|
|
)
|
|
) > "%outputfile%"
|
|
|
|
REM Clean up temporary files
|
|
del chapters.txt
|
|
|
|
echo Chapter markers saved to %outputfile%
|
|
|
|
start "" python 0csv_to_xml.py
|
|
pause |