Changeset 22448


Ignore:
Timestamp:
2010-07-20T14:07:33+12:00 (14 years ago)
Author:
kjdon
Message:

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

File:
1 edited

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      }
Note: See TracChangeset for help on using the changeset viewer.