From: Mischa POSLAWSKY Date: Mon, 14 Nov 2022 23:33:56 +0000 (+0100) Subject: sexagesimal time formatting option X-Git-Tag: v1.09~15 X-Git-Url: http://git.shiar.nl/barcat.git/commitdiff_plain/a755882b1f5e89f6bd691219fe6de170cc6fcda7 sexagesimal time formatting option Convert duration values from previous examples; like ffprobe -sexagesimal. --- diff --git a/barcat b/barcat index 3744590..1a1112c 100755 --- a/barcat +++ b/barcat @@ -27,6 +27,7 @@ GetOptions(\%opt, } or die $@ =~ s/(?:\ at\ \N+)?\Z/ for option $_[0]/r; }, 'human-readable|H!', + 'sexagesimal!', 'interval|t:i', 'trim|length|l=s' => sub { my ($optname, $optval) = @_; @@ -129,7 +130,10 @@ $opt{input} = (@ARGV && $ARGV[0] =~ m/\A[-0-9]/) ? \@ARGV : undef $opt{'sum-format'} = sub { sprintf '%.8g', $_[0] }; $opt{'calc-format'} = sub { sprintf '%*.*f', 0, 2, $_[0] }; -$opt{'value-format'} = $opt{units} && sub { +$opt{'value-format'} = $opt{sexagesimal} ? sub { + my $s = $_[0] + .5; + sprintf('%d:%02d:%02d', $s/3600, $s/60%60, $s%60); +} : $opt{units} && sub { my $unit = ( log(abs $_[0] || 1) / log(10) - 3 * (abs($_[0]) < .9995) # shift to smaller unit if below 1 @@ -380,6 +384,7 @@ Options: --header Prepend a chart axis with minimum and maximum values labeled -H, --human-readable Format values using SI unit prefixes + --sexagesimal Convert seconds to HH:MM:SS time format -t, --interval[=(N|-LINES)] Output partial progress every given number of seconds or input lines @@ -467,6 +472,10 @@ turning long numbers like I<12356789> into I<12.4M>. Also changes an exponent I<1.602176634e-19> to I<160.2z>. Short integers are aligned but kept without decimal point. +=item --sexagesimal + +Convert seconds to HH:MM:SS time format. + =item -t, --interval[=( | -)] Output partial progress every given number of seconds or input lines. @@ -613,11 +622,11 @@ Compare media metadata, like image size or play time: exiftool -T -p '$megapixels ($imagesize) $filename' * | barcat - exiftool -T -p '$duration# $avgbitrate# $filename' * | barcat -H + exiftool -T -p '$duration# $avgbitrate# $filename' * | barcat --sexagesimal find -type f -print0 | xargs -0 -L1 \ ffprobe -show_format -of json -v error | - jq -r '[.format|.duration,.bit_rate,.filename]|join(" ")' | barcat -H + jq -r '.format|.duration+" "+.bit_rate+" "+.filename' | barcat --sex Memory usage of user processes with long names truncated: diff --git a/t/t0002-usage_-h_|wc_-l.out b/t/t0002-usage_-h_|wc_-l.out index a787364..8f92bfd 100644 --- a/t/t0002-usage_-h_|wc_-l.out +++ b/t/t0002-usage_-h_|wc_-l.out @@ -1 +1 @@ -34 +35 diff --git a/t/t1421-sexy_time.in b/t/t1421-sexy_time.in new file mode 100644 index 0000000..62c17bf --- /dev/null +++ b/t/t1421-sexy_time.in @@ -0,0 +1,12 @@ +0 +.5 +1.49 +60 +59.5 +3600 +3661 +35999.49 +35999.5 +40271.1 +86400 + diff --git a/t/t1421-sexy_time_--sexagesimal.out b/t/t1421-sexy_time_--sexagesimal.out new file mode 100644 index 0000000..8164e5b --- /dev/null +++ b/t/t1421-sexy_time_--sexagesimal.out @@ -0,0 +1,12 @@ +0:00:00 +0:00:01 +0:00:01 +0:01:00 +0:01:00 +1:00:00 + +1:01:01 + +9:59:59 +----=----->- +10:00:00 +----=----->- +11:11:11 +----=----->-- +24:00:00 +----=----->------------------- +