warn "using media/_editing -> $movie\n";
} elsif ( -d $movie && $movie =~ m{media/} ) {
$movie .= '/video.ogv';
-} elsif ( -f $movie && $movie =~ m{\.og[vg]$}i ) {
+} elsif ( -f $movie && $movie =~ m{\.og[vg]\b}i ) {
my $movie_master = $movie;
$movie = base_dir($movie) . '/video.ogv';
unlink $movie;
return sprintf('%02d:%02d', int($t/60), int($t%60));
}
+my %escape = ('<'=>'<', '>'=>'>', '&'=>'&', '"'=>'"');
+my $escape_re = join '|' => keys %escape;
+sub html_escape {
+ my $what = join('',@_);
+ $what =~ s/($escape_re)/$escape{$1}/gs;
+ warn "XXX html_escape $what\n";
+ return $what;
+}
+
sub html5tv {
if ( ! $prop->{width} || ! $prop->{height} ) {
id => $id,
title => $s->[2],
description => $s->[2],
- src => "$media_dir/s/1/00000001.jpg",
+ src => "$media_dir/s/$s->[3]/00000001.jpg",
href => '',
},
};
my $s = $_->{startTime};
my $e = $_->{endTime};
my $i = $_->{index};
- my $t = $_->{args}->{title};
+ my $t = html_escape( $_->{args}->{title} );
my $slide = '';
$slide = $1 if $t =~ s{\s*\[(\d+)\]\s*}{};
sub edit_subtitles {
print $to_mplayer qq|pause\n|;
focus_term;
- system( qq|vi "$subtitles.yaml"| ) == 0 and load_subtitles;
+ my $line = 1;
+ open( my $fh, '<', "$subtitles.yaml" ) || die $1;
+ while(<$fh>) {
+ last if /^-\s([\d\.]+)/ && $1 > $pos;
+ $line++;
+ }
+ close($fh);
+ system( qq|vi +$line "$subtitles.yaml"| ) == 0 and load_subtitles;
focus_mplayer;
}
}
-push @to_mplayer, "get_property $_\n" foreach grep { ! $prop->{$_} } ( qw/metadata video_codec video_bitrate width height fps length/ );
+my @mplayer_prop = ( qw/metadata video_codec video_bitrate width height fps/ );
+warn "XXX $movie\n";
+if ( my $l = `oggLength $movie` ) {
+ $l = $l / 1000;
+ $prop->{length} = $l;
+ warn "$movie length ", fmt_mmss( $l );
+}
+push @mplayer_prop, 'length' unless $prop->{length};
+
+push @to_mplayer, "get_property $_\n" foreach grep { ! $prop->{$_} } @mplayer_prop;
my $t = time;
my $line;