Skip to content

Instantly share code, notes, and snippets.

@S-trace
Last active April 4, 2024 11:35
Show Gist options
  • Save S-trace/c8964488287b3a33b561a1eb29c6aae6 to your computer and use it in GitHub Desktop.
Save S-trace/c8964488287b3a33b561a1eb29c6aae6 to your computer and use it in GitHub Desktop.
A simple script to beautify and improve readability of .ass subtitles and converting subtitles .srt <=> .ass {\\bord3} - ASS subtitles outline width {\\blur14} - blur ratio (to create smooth transition between movie and subtitles)
#!/usr/bin/env sh
COMMAND=$1
case "$COMMAND" in
ass-outline)
# Add outline to all ASS subtitles in current directory
for file in *.ass; do
echo "$COMMAND: Processing $file"
perl -pe 's/(^Dialogue: ([^{]*?,){9})(?=[^{])/\1\{\\bord3}\{\\blur14}/g' <"$file" >temp
mv temp "$file"
done
echo "$COMMAND: Finalizing"
sed -E 's/^(Style: sp_.+),[0-9]+,([0-9]+\r?)$/\1,0,\2/g' -i ./*.ass
sed -E 's/^(Style: Default.+),[0-9]+,([0-9]+\r?)$/\1,0,\2/g' -i ./*.ass
;;
ass-to-srt)
# Convert all ASS subtitles in current directory to SRT (use to fix broken subtitles or prepare subtitles for tablet)
for file in *.ass; do
echo "$COMMAND: Processing $file"
ffmpeg -i "$file" "$(basename "$file" ass)srt"
done
;;
srt-to-ass)
# Convert all SRT subtitles in current directory to ASS (use before $0 ass-outline)
for file in *.srt; do
echo "$COMMAND: Processing $file"
ffmpeg -i "$file" "$(basename "$file" srt)ass"
done
;;
*)
echo "Usage: $(basename "$0") {command}"
echo " Commands:"
echo " ass-outline: Add outline to all ASS subtitles in current directory"
echo " ass-to-srt: Convert all ASS subtitles in current directory to SRT (use to fix broken subtitles or prepare subtitles for MiPad4)"
echo " srt-to-ass: Convert all SRT subtitles in current directory to ASS (use before $(basename "$0") ass-outline)"
exit 1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment