sub get_metadata { my $self = shift; my $file = $_[0] || return 0; use Image::ExifTool qw(:Public); my $exifTool = new Image::ExifTool; my $meta; $meta->{info} = $exifTool->ExtractInfo($file); my @extracttags = qw(Author Copyright MIMEType ImageWidth ImageHeight XResolution ISO Make ImageSize CreateDate FileType Comment CompressionType AudioLayer AudioBitrate SampleRate CopyrightFlag AspectRatio VideoBitrate CodecList ContentEncryption Compression FrameRate FrameCount Duration copyright description title Artist Album Year PlayCounter PublisherURL UserDefinedURL CommercialURL Model FocalLength Lens Subject Producer ModifyDate PageCount BackgroundColor URL Version -ID3v1:Author -ID3v1:Comment -ID3v1:Title -ID3v2_3:Album -ID3v2_3:Artist -ID3v2_3:Year); $exifTool->Options(Duplicates => 0); $meta->{info} = ImageInfo($file, \@extracttags); sub clear_dupekeys { # clear out nasty keys on a nasty way so they are xml compliant and not duplicate my $self = shift; my $tag = shift; $tag =~ s/ \(1\)$//i; my $dupetag = $tag; $dupetag .= " (1)" if not substr($dupetag,length($dupetag)-4,4) eq " (1)"; if ($meta->{info}->{$dupetag}) { $meta->{info}->{$tag} = $meta->{info}->{$dupetag}; delete $meta->{info}->{$dupetag}; } } my $temphash = $meta->{info}; for my $keyref ( keys %$temphash ) { $self->clear_dupekeys($keyref); } $meta->{type} = Image::ExifTool::GetFileType($file, 1); no Image::ExifTool; return $meta; }