Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 1.39 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. if [ $# -ne 2 ]; then
  4.     echo "Usage: `basename $0` SRTFILE DELAY"
  5.     echo "Parameters (required):"
  6.     echo -e "\tSTRFILE\t .srt file to read"
  7.     echo -e "\tDELAY\t delay to add/subtract, in whole miliseconds"
  8.     echo "The new file is sent to stdout."
  9.     exit
  10. fi
  11.  
  12. if [ ! -r $1 ]; then
  13.     echo "No file given."
  14.     exit
  15. fi
  16.  
  17. FILE=$1
  18. ADD=$2
  19. PART='([0-9][0-9]):([0-9][0-9]):([0-9][0-9]),([0-9][0-9][0-9])'
  20. RE="^$PART --> $PART$"
  21.  
  22. add() {    
  23.     XADDED=$(( $4+$ADD ))
  24.     XNEW=`printf "%.3d" $(( $XADDED%1000 ))`
  25.     SADDED=$(( $3+($XADDED/1000) ))
  26.     SNEW=`printf "%.2d" $(( $SADDED%60 ))`
  27.     MADDED=$(( $2+($SADDED/60) ))
  28.     MNEW=`printf "%.2d" $(( $MADDED%60 ))`
  29.     HNEW=`printf "%.2d" $(( $1+($MADDED/60) ))`
  30.     NEW="$HNEW:$MNEW:$SNEW,$XNEW"
  31.     echo $NEW
  32. }
  33.  
  34. while read LINE
  35. do
  36.     TEST=`egrep -ro "$RE" <<< "$LINE"`
  37.     if [ -n "$TEST" ]; then
  38.         H=`echo $LINE | sed -re "s/$RE/\1/"`
  39.         M=`echo $LINE | sed -re "s/$RE/\2/"`
  40.         S=`echo $LINE | sed -re "s/$RE/\3/"`
  41.         X=`echo $LINE | sed -re "s/$RE/\4/"`
  42.         START=`add $H $M $S $X`
  43.         H=`echo $LINE | sed -re "s/$RE/\5/"`
  44.         M=`echo $LINE | sed -re "s/$RE/\6/"`
  45.         S=`echo $LINE | sed -re "s/$RE/\7/"`
  46.         X=`echo $LINE | sed -re "s/$RE/\8/"`
  47.         END=`add $H $M $S $X`
  48.         echo "$START --> $END"
  49.     else
  50.         echo "$LINE"
  51.     fi
  52. done < $FILE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement