#!/usr/bin/awk -f function printtime (rt) { f = sprintf("%.3f", rt); sub(/^.*\./, "", f); t = sprintf("%02d.%s", int(rt % 60), f); for (i=1; i<3; i++) { rt = int (rt / 60); temp = rt % 60; t = sprintf("%02d:%s", temp, t); } sub(/\./, ",", t); return t; } BEGIN { if ((ARGC < 3) || (ARGC > 4)) { printf "Usage: MicroDVD2SubRipper.awk [output]\n" \ >> "/dev/stderr"; printf " fps: frame per second (23.9, 25, 29.9, 30...)\n" >> "/dev/stderr"; exit(-1); } output = (ARGC == 4) ? ARGV[3] : ""; if (output != "") printf "" > output; fps = ARGV[1]; ARGV[3] = ARGV[1] = ""; } # For dos and mac { sub(/\r/, "", $0); sub(/\f/, "", $0); } { gsub(/[\{\}]/, " ", $0); beg = ($1 + 0.0) / fps; end = ($2 + 0.0) / fps; $1 = $2 = ""; sub(/^ +/, "", $0); if (ind != 0) { if (output == "") { printf "\n"; } else { printf "\n" >> output; } } ind++; if (output == "") { printf "%d\n%s --> %s\n", ind, printtime(beg), printtime(end); } else { printf "%d\n%s --> %s\n", ind, printtime(beg), printtime(end) \ >> output; } split($0, arline, /\|/); for (i in arline) { if (output == "") { printf "%s\n", arline[i]; } else { printf "%s\n", arline[i] >> output; } } }