Changeset 22448

Show
Ignore:
Timestamp:
20.07.2010 14:07:33 (10 years ago)
Author:
kjdon
Message:

metadata values mught be array type - add each individual item as a separate metadata element

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone2/perllib/plugins/EmbeddedMetadataPlugin.pm

    r22293 r22448  
    123123            $tag =~ s/^([^\s]+)\s.*$/$1/i; 
    124124            my $value = $self->{'exiftool'}->GetValue($tag); 
    125             if (defined $value && $value =~ /[a-z0-9]+/i) 
    126               { 
    127                 if (ref $value eq 'SCALAR') 
    128                   { 
    129                     if ($$value =~ /^Binary data/) 
    130                       { 
    131                         $value = "($$value)"; 
    132                       } 
    133                     else 
    134                       { 
    135                         my $len = length($$value); 
    136                         $value = "(Binary data $len bytes)"; 
    137                       } 
    138                   } 
     125            if (defined $value && $value =~ /[a-z0-9]+/i) { 
    139126 
    140127        my $field = "ex.$group.$tag"; 
     
    144131            $exif_metadata{$field} = []; 
    145132        } 
    146         push (@{$exif_metadata{$field}}, $self->gsSafe($value)); 
    147 ##      print STDERR "**** adding $field: $value\n"; 
    148  
    149         ++$metadata_count; 
    150               } 
     133 
     134        my $array = 0; 
     135        if (ref $value eq 'SCALAR') { 
     136             
     137                    if ($$value =~ /^Binary data/) { 
     138             
     139                        $value = "($$value)"; 
     140            } 
     141                    else { 
     142             
     143                        my $len = length($$value); 
     144                        $value = "(Binary data $len bytes)"; 
     145            } 
     146        } 
     147        elsif (ref $value eq 'ARRAY') { 
     148            $array = 1; 
     149            foreach my $v (@$value) { 
     150            push (@{$exif_metadata{$field}}, $self->gsSafe($v)); 
     151            #print STDERR "**** adding array $field: $v\n"; 
     152            ++$metadata_count; 
     153            } 
     154        } 
     155        if (!$array) { 
     156            push (@{$exif_metadata{$field}}, $self->gsSafe($value)); 
     157            #print STDERR "**** adding $field: $value\n"; 
     158             
     159            ++$metadata_count; 
     160        } 
     161        } 
    151162          } 
    152163      }