Changeset 6

Show
Ignore:
Timestamp:
02/06/07 22:11:05 (2 years ago)
Author:
simon
Message:

Start to do some more with the metadata. References #1, #2.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Memories/Photo.pm

    r5 r6  
    3131        uploader => $r->user, 
    3232        uploaded => Time::Piece->new(), 
    33         title => ($r->params->{title} || $upload{filename}) 
     33        title => $r->params->{title} 
    3434    }); 
    3535 
     
    4646 
    4747    # Rotate? 
    48     $photo->unrotate(); 
     48    $photo->unrotate();  
     49    if (!$photo->title){  
     50        $photo->title($photo->title_exif || $upload{filename}); 
     51    } 
    4952 
    5053    $photo->make_thumb; 
     
    281284} 
    282285 
     286# Work out some common properties from a set of potential photo metadata 
     287# tags 
     288sub _grovel_metadata { 
     289    my ($self, @tags) = @_; 
     290    my %md = map {%$_} values %{$self->exif_info}; 
     291    for (@tags) { 
     292        if ($md{$_} and $md{$_} =~/[^ 0:]/) { return $md{$_} } 
     293    } 
     294    return; 
     295} 
     296 
    283297sub shot { 
    284   my $self = shift; 
    285   my $exif = $self->exif_info->{EXIF}; 
    286   my ($dt) = 
    287     grep {$_ and /[^ 0:]/}  
    288         ($exif->{ 'Shooting Date/Time' }, 
    289          $exif->{ 'Date/Time Of Digitization' }, 
    290          $exif->{ 'Date/Time Of Last Modification' }); 
    291   if (!$dt) { return $self->uploaded } 
    292   return Time::Piece->strptime($dt, "%Y:%m:%d %T") || $self->uploaded; 
    293 
     298    my $self = shift; 
     299    my $dt = $self->_grovel_metadata( 
     300        'Shooting Date/Time', 
     301        'Date/Time Of Digitization', 
     302        'Date/Time Of Last Modification' 
     303    ); 
     304    if (!$dt) { return $self->uploaded } 
     305    return Time::Piece->strptime($dt, "%Y:%m:%d %T") || $self->uploaded; 
     306
     307 
     308sub description { 
     309    shift->_grovel_metadata( 
     310        'Description', 'Image Description', 'Caption-Abstract' 
     311    ); 
     312
     313 
     314sub title_exif { shift->_grovel_metadata( 'Headline', 'Title'); } 
     315sub license { shift->_grovel_metadata( 'Rights Usage Terms', 'Usage Terms' ) } 
     316sub copyright { shift->_grovel_metadata( 'Rights', 'Copyright', 'Copyright Notice') } 
    2943171;