]> mj.ucw.cz Git - gallery.git/blob - gal-scan
db41a0b038698ef368f248c67fa8941a8e02d23a
[gallery.git] / gal-scan
1 #!/usr/bin/perl
2 # Scan images in a list or gqview collection and prepare them for gal-gen
3 # (c) 2004--2007 Martin Mares <mj@ucw.cz>
4
5 use Image::EXIF;
6 use Data::Dumper;
7
8 use strict;
9 use warnings;
10
11 my @pics = ();
12 if (@ARGV) {
13         @pics = @ARGV;
14 } else {
15         while (<STDIN>) {
16                 chomp;
17                 /^#/ && next;
18                 /^$/ && next;
19                 if (/^"(.*)"$/) {
20                         push @pics, $1;
21                 } else {
22                         die "Parse error: $_";
23                 }
24         }
25 }
26
27 foreach my $f (@pics) {
28         my $e = new Image::EXIF($f);
29         my $i = $e->get_all_info();
30         if ($e->error) { print STDERR "EXIF error on $f: ", $e->error, "\n"; }
31         else {
32                 #print STDERR Dumper($i), "\n";
33                 my $o = $i->{'image'}->{'Image Orientation'} || "Top, Left-Hand";
34                 if ($o eq "Top, Left-Hand") { $o = "."; }
35                 elsif ($o eq "Right-Hand, Top") { $o = "r"; }
36                 elsif ($o eq "Left-Hand, Bottom") { $o = "l"; }
37                 elsif ($o eq "Bottom, Right-Hand") { $o = "d"; }
38                 else {
39                         print STDERR "Unrecognized orientation: $o\n";
40                         $o = ".";
41                 }
42                 my $d = $i->{'image'}->{'Image Created'} || "?";
43                 if ($d ne "?") {
44                         $d =~ s/^(\d{4}):(\d{2}):(\d{2}) (\d{2}:\d{2}:\d{2})/$1-$2-$3 $4/ or die "Date parse error: $d";
45                 }
46                 print "$f\t$d\t$o\tn\n";
47         }
48 }