X-Git-Url: http://git.shiar.nl/minime.git/blobdiff_plain/44da9ac5236010871ca1402111869c9ac9838a7b..58ef2fa9c88f4bac0589cd85e580b92ec069e397:/termimg diff --git a/termimg b/termimg index ef57cd3..6876158 100755 --- a/termimg +++ b/termimg @@ -7,6 +7,7 @@ my @info = eval { my $exif = Image::ExifTool->new->ImageInfo($file, { CoordFormat => '%.5f', DateFormat => '%Y-%m-%d %H:%M:%S', + Exclude => 'System:*', }); die "exiftool: $exif->{Error}\n" if $exif->{Error}; return ( @@ -19,7 +20,7 @@ my @info = eval { $exif->{SVGVersion} // $exif->{PDFVersion} // (), ), $exif->{ColorType} ? "$exif->{BitDepth}bpp $exif->{ColorType}" : (), - sprintf('exif x%d', scalar %{$exif}), + sprintf('exif (%d)', scalar %{$exif}), $exif->{Thumb} ? "thumb $exif->{ThumbnailLength}B" : (), (map "@ $_", $exif->{DateTimeOriginal} // @@ -53,13 +54,21 @@ eval { push @info, "# $md5 ($filesize)"; } or warn $@; +my $aspect = eval { + require Term::ReadKey; + my ($w, $h, $x, $y) = Term::ReadKey::GetTerminalSize(); + return $x/$w / $y*$h; +}; + open my $pgm, '-|', convert => ( $file => -delete => '1--1', - '+distort' => SRT => '0,0 1,.56 0', + $aspect ? ('+distort' => SRT => "0,0 1,$aspect 0") : (), -thumbnail => $size || '40x12', -colorspace => 'gray', '-normalize', + -level => '-1%', + -channel => 'A', -threshold => '50%', -background => 'black', -layers => 'flatten', -compress => 'none', @@ -71,10 +80,31 @@ if (<$pgm> eq "P2\n") { <$pgm>; # ignore depth my @ch = split //, " .:oO@"; while (<$pgm>) { - print $ch[ $_ * @ch >> 8 ] for /\d+/g; + print !$_ ? '/' : $ch[ $_ * @ch >> 8 ] for /\d+/g; print ' ', shift @info if @info; print $/; } substr $_, 0, 0, ' ' x ($width + 1) for @info; } say for @info; + +=head1 NAME + +termimg - media file fingerprint and metadata + +=head1 SYNOPSIS + +B [] + +=head1 DESCRIPTION + +Identify given file by ascii image +with a summary of distinctive metadata. + +=head1 AUTHOR + +Mischa POSLAWSKY + +=head1 LICENSE + +AGPL3+