App-PhotoDB
view release on metacpan or search on metacpan
lib/App/PhotoDB/handlers.pm view on Meta::CPAN
my $auto = &prompt({prompt=>'Auto-add scans to the database that can be auto-matched to a negative or print?', type=>'boolean', required=>1});
my $x = 0;
for my $fsonlyfile (@fsonly) {
if ($auto || &prompt({prompt=>"Add $fsonlyfile to the database?", type=>'boolean', required=>1})) {
my $filename = fileparse($fsonlyfile);
# Test to see if this is from a negative, e.g. 123-12-image012.jpg
if ($filename =~ m/^(\d+)-([0-9a-z]+)-.+\.jpg$/i) {
my $film_id = $1;
my $frame = $2;
if ($auto || &prompt({prompt=>"This looks like a scan of negative $film_id/$frame. Add it?", type=>'boolean', default=>'yes', required=>1})) {
my $neg_id = &lookupval({db=>$db, col=>"lookupneg($film_id, '$frame')", table=>'NEGATIVE'});
my $subdir = &lookupval({db=>$db, col=>'directory', table=>'FILM', where=>{film_id=>$film_id}});
# Test for non-null subdir
if ($subdir =~ m/.+/) {
my $basepath = &basepath;
my $correctpath = "$basepath/$subdir/$filename";
# Test to make sure it's in a valid directory
if ($fsonlyfile ne $correctpath) {
lib/App/PhotoDB/handlers.pm view on Meta::CPAN
print "Could not determine negative ID for negative $film_id/$frame, skipping\n";
next;
}
&newrecord({db=>$db, data=>{negative_id=>$neg_id, filename=>$filename}, table=>'SCAN', silent=>$auto});
print "Added $filename as scan of negative $film_id/$frame\n" if $auto;
$x++;
}
# Test to see if this is from a print, e.g. P232-image012.jpg
} elsif ($filename =~ m/^p(rint)?(\d+).*\.jpg$/i) {
my $print_id = $2;
if ($auto || &prompt({prompt=>"This looks like a scan of print #$print_id. Add it?", type=>'boolean', default=>'yes', required=>1})) {
&newrecord({db=>$db, data=>{print_id=>$print_id, filename=>$filename}, table=>'SCAN', silent=>$auto});
print "Added $filename as scan of print #$print_id\n" if $auto;
$x++;
}
} else {
next if $auto;
if (&prompt({prompt=>"Can't automatically determine the source of this scan. Add it manually?", type=>'boolean', default=>'yes', required=>1})) {
&scan_add({db=>$db, filename=>$filename});
}
}
( run in 0.401 second using v1.01-cache-2.11-cpan-64827b87656 )