Code: Select all
#!/bin/sh
# srted.sh by puppy_apprentice
# simple script to adjust times for subtitles in SRT format
# https://matroska.org/technical/specs/subtitles/srt.html
# usage: srted.sh srtfile delta skip
srtfile=$1 # file with subtitles in SRT format
delta=$2 # number of seconds
skip=$3 # start after subtitle number
n=1
# used grep for extra newline for read command
grep "" $srtfile | while read -r line
do
if [[ $line =~ "-->" ]]
then
if [[ $n > $skip ]]
then
ft=$(date "+%s" -d "01/01/1970 ${line:0:8}")
ft=$((ft+delta))
st=$(date "+%s" -d "01/01/1970 ${line:17:8}")
st=$((st+delta))
line=${line/${line:0:8}/$(date +%T -d @$ft)}
echo "${line/${line:17:8}/$(date +%T -d @$st)}"
else
echo "$line"
fi
n=$((n+1))
else
echo "$line"
fi
done