my ($r, $id, $width, $height) = @_;
# Also find the date taken if appropriate (from the EXIF tag etc.)
- my $info = Image::ExifTool::ImageInfo(get_disk_location($r, $id));
+ my $exiftool = Image::ExifTool->new;
+ $exiftool->ExtractInfo(get_disk_location($r, $id));
+ my $info = $exiftool->GetInfo();
my $datetime = undef;
if (defined($info->{'DateTimeOriginal'})) {
undef, $width, $height, $datetime, $id)
or die "Couldn't update width/height in SQL: $!";
+ # EXIF information
$dbh->do('DELETE FROM exif_info WHERE image=?',
undef, $id)
or die "Couldn't delete old EXIF information in SQL: $!";
or die "Couldn't insert EXIF information in database: $!";
}
+ # Tags
+ my @tags = $exiftool->GetValue('Keywords', 'ValueConv');
+ $dbh->do('DELETE FROM tags WHERE image=?',
+ undef, $id)
+ or die "Couldn't delete old tag information in SQL: $!";
+
+ my $q = $dbh->prepare('INSERT INTO tags (image,tag) VALUES (?,?)')
+ or die "Couldn't prepare inserting tag information: $!";
+
+ for my $tag (@tags) {
+ $q->execute($id, guess_charset($tag))
+ or die "Couldn't insert tag information in database: $!";
+ }
+
# update the last_picture cache as well (this should of course be done
# via a trigger, but this is less complicated :-) )
$dbh->do('UPDATE last_picture_cache SET last_picture=GREATEST(last_picture, ?) WHERE (vhost,event)=(SELECT vhost,event FROM images WHERE id=?)',
GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE shadow_files TO pr0n;
GRANT SELECT ON TABLE users TO pr0n;
GRANT SELECT,INSERT,DELETE ON TABLE exif_info TO pr0n;
+GRANT SELECT,INSERT,DELETE ON TABLE tags TO pr0n;
GRANT INSERT,SELECT,UPDATE,DELETE ON TABLE last_picture_cache TO pr0n;