F5 Zeitmarken verschieben


Das Transkriptionprogramm F5 ist ja ganz nett, aber Zeitmarken nachträglich zu verschieben, scheint nicht möglich zu sein.

Anbei ein kleines Perl-Skript, dass Abhilfe schafft.

Datei als moveMarker.pl speichern und via perl moveMarker.pl --delta 321.5 "Textdatei des Transkripts" ausführen um alle Zeitstempel 5m21.5s zu verschieben.

#!/usr/bin/perl
use strict;
use warnings;
use Getopt::Long;

my $deltaTime = 0;

# Change timestamp by adding $deltaTime to the parsed time
sub moveTime($) {
    my ($t) = @_;
    # F5 Format: HH:MM:SS-s
    my ($h, $m, $s, $ss) = ($t =~ m/([0-9]+):([0-9]+):([0-9]+)-([0-9]+)/);
    my $changedTime = ($h * 3600 + $m * 60 + $s + $ss / 10) + $deltaTime;
    # Back to string representation
    my $changedTimeStr = sprintf("%02d:%02d:%02d-%01d",
        int(abs($changedTime) / 3600),
        int(abs($changedTime / 60) % 60),
        int(abs($changedTime) % 60),
        int(abs($changedTime * 10) % 10));

    if ($changedTime >= 0) {
        return $changedTimeStr;
    } else {
        return "-".$changedTimeStr;
    }
}

GetOptions ("delta=f" => \$deltaTime)
    or die(qq{Error in command line arguments\n

Moves F5 timestamps [seconds] into the future.

Usage: moveMarker.pl [--delta seconds] {txt.files}+\n});

# Process all files and stdin, keep backups as .bak files
BEGIN { $^I = ".bak"; }
while (<>) {
    $_ =~ s/#([0-9:\-]+)#/("#" . moveTime($1) . "#")/ge;
    print $_;
}
Kommentare per Mail an post@wolfgang-jung.net.