Ignore:
Timestamp:
May 31, 2010, 9:35:46 AM (14 years ago)
Author:
ronosman
Message:

Bug 1710 fixed : pLoader lack of concurrency support causes data inconsistency.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • extensions/pLoader/trunk/src/Uploader/Image.pm

    r5472 r6426  
    2121use strict;
    2222use base qw/Uploader::Object/;
     23use File::Spec;
     24use Image::ExifTool qw(:Public);
     25use Data::Dumper;
    2326
    24 __PACKAGE__->mk_accessors(
    25     qw/
    26         file
    27         wx_thumb_file
    28         site_high_file
    29         site_name
    30         site_resized_file
    31         site_thumb_file
    32         site_author
    33         site_comment
    34         site_original_filename
    35         exif_metadata
    36         add_rank
    37         site_categories
    38         site_tags
    39         file_sum
    40                 width
    41                 height
    42                 privacy_level
    43         caption
    44     /
    45 );
     27# we need a ref to data preferences to use with threads
     28my @properties = qw/
     29    file
     30    wx_thumb_file
     31    site_high_file
     32    site_name
     33    site_resized_file
     34    site_thumb_file
     35    site_author
     36    site_comment
     37    site_original_filename
     38    exif_metadata
     39    add_rank
     40    site_categories
     41    site_tags
     42    image_id
     43    width
     44    height
     45    privacy_level
     46    caption
     47    global_rank
     48/;
     49
     50my $init_caption_from_pattern_cbk;
     51
     52__PACKAGE__->mk_accessors(@properties);
    4653
    4754sub Init {
    4855    my ( $self ) = @_;
    4956
     57
     58    my $exif = $self->read_exif_metadata(
     59        $self->file
     60    );
     61
     62    $self->exif_metadata(
     63        $self->select_exif_data($exif)
     64    );
     65
     66       
     67
     68    $self->site_original_filename(
     69        $self->original_filename
     70    );
     71
    5072}
     73
     74
     75sub read_exif_metadata {
     76    my ( $self, $file ) = @_;
     77   
     78    # read exif metadata
     79    my $info;
     80    eval {
     81        $info = ImageInfo( $file );
     82    };
     83    $info = {} if($@);
     84   
     85    $info;
     86}
     87
    5188
    5289sub exif_tag {
    5390    my ( $self, $tag ) = @_;
    54        
     91
    5592    my $exif = $self->exif_metadata ;
    5693   
    57     $exif->{$tag};     
     94    $exif->{$tag};
    5895}
     96
    5997
    6098sub create_date {
     
    64102   
    65103    $self->{-create_date} ||= $exif->{CreateDate};
    66        
     104
    67105    $self->{-create_date} = $date if defined $date;
    68106
    69         $self->{-create_date};
     107    $self->{-create_date};
    70108}
    71109
    72110
     111sub select_exif_data {
     112    my ( $self, $exif ) = @_;
     113
     114    return {
     115        map {
     116            $_ => $exif->{$_},
     117        }
     118        qw/
     119            CreateDate
     120            ImageWidth
     121            ImageHeight
     122            Orientation
     123            DateTimeOriginal
     124            ISO
     125            ExposureTime
     126            ApertureValue
     127            FocalLength
     128            Lens
     129            Exposure
     130            Make
     131            Model
     132        /
     133    };   
     134}
     135
     136
     137sub original_filename {
     138    my ( $self ) = @_;
     139
     140    my ( $vol, $dir, $filename ) = File::Spec->splitpath(
     141        $self->file
     142    );
     143
     144    $filename;
     145}
     146
     147sub get_data {
     148    my ( $self, $preferences, $destination_category, $add_rank ) = @_;
     149
     150    my $data = {
     151        map { $_ => $self->$_ } @properties
     152    };
     153    $data->{preferences} = $preferences;
     154    $data->{categories}  = $destination_category;
     155    $data->{site_img_date_creation} = $self->create_date;
     156    $data->{add_rank} = $add_rank;
     157
     158    return $data;
     159}
    73160
    741611;
Note: See TracChangeset for help on using the changeset viewer.