Changeset 24487


Ignore:
Timestamp:
2011-08-26T09:39:01+12:00 (13 years ago)
Author:
sjm84
Message:

Added two new options in EmbeddedMetadataPlugin for filtering the embedded sets that are returned

Location:
main/trunk/greenstone2/perllib
Files:
2 edited

Legend:

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

    r24419 r24487  
    7575    'list' => [{'name' => "true", 'desc' => "{common.true}"}, {'name' => "false", 'desc' => "{common.false}"}],
    7676    'deft' => "true"
     77    },{
     78    'name' => "set_filter_list",
     79    'desc' => "{EmbeddedMetadataPlugin.set_filter_list}",
     80    'type' => "string"
     81    },{
     82    'name' => "set_filter_regexp",
     83    'desc' => "{EmbeddedMetadataPlugin.set_filter_regexp}",
     84    'type' => "string",
     85    'deft' => ".*" #If changing this default, also need to update the constructor
    7786    }];
    7887
     
    102111    $exifTool->Options('Verbose');
    103112    $self->{'exiftool'} = $exifTool;
     113   
     114    my $setFilterList = $self->{'set_filter_list'};
     115    my $setFilterRegexp = $self->{'set_filter_regexp'};
     116    if ((defined $setFilterList) && ($setFilterList ne ""))
     117    {
     118        if ((defined $setFilterRegexp) && ($setFilterRegexp ne ".*") && ($setFilterRegexp ne ""))
     119        {
     120            my $outhandle = $self->{'outhandle'};
     121            print $outhandle "Warning: can only specify 'set_filter_list' or 'set_filter_regexp'\n";
     122            print $outhandle "         defaulting to 'set_filter_list'\n";
     123        }
     124
     125        my @sets = split(/,/,$setFilterList);
     126        my @sets_bracketed;
     127        foreach my $s (@sets)
     128        {
     129            $s =~ s/^(ex\.)?(.*)$/(ex.$2)/;
     130            push (@sets_bracketed, $s);
     131        }
     132
     133        my $setFilterRegexp = join("|",@sets_bracketed);
     134        $self->{'set_filter_regexp'} = $setFilterRegexp;
     135    }
    104136
    105137    return bless $self, $class;
     
    145177}
    146178
     179sub checkAgainstFilters
     180{
     181    my $self = shift(@_);
     182    my $name = shift(@_);
     183   
     184    my $setFilterRegexp = $self->{'set_filter_regexp'};
     185    if((defined $setFilterRegexp) && ($setFilterRegexp ne ""))
     186    {
     187        return ($name =~ m/($setFilterRegexp)/i);
     188    }
     189    else
     190    {
     191        return 1;
     192    }
     193}
    147194
    148195sub extractEmbeddedMetadata()
     
    215262                                foreach my $val (@vs) {
    216263                                    if ($val =~ /\S/) {
    217                                         push (@{$exif_metadata{$field}}, $self->gsSafe($val));
     264                                        push (@{$exif_metadata{$field}}, $self->gsSafe($val)) if $self->checkAgainstFilters($field);
    218265                                        ++$metadata_count;
    219266                                    }
     
    222269                            else
    223270                            {
    224                                 push (@{$exif_metadata{$field}}, $self->gsSafe($v));
     271                                push (@{$exif_metadata{$field}}, $self->gsSafe($v)) if $self->checkAgainstFilters($field);
    225272                                ++$metadata_count;
    226273                            }
     
    239286                            foreach my $val (@vs) {
    240287                                if ($val =~ /\S/) {
    241                                     push (@{$exif_metadata{$field}}, $self->gsSafe($val));
     288                                    push (@{$exif_metadata{$field}}, $self->gsSafe($val)) if $self->checkAgainstFilters($field);
    242289                                    ++$metadata_count;
    243290                                }
     
    246293                        else
    247294                        {
    248                             push (@{$exif_metadata{$field}}, $self->gsSafe($allvals));
     295                            push (@{$exif_metadata{$field}}, $self->gsSafe($allvals)) if $self->checkAgainstFilters($field);
    249296                            ++$metadata_count;
    250297                        }
     
    258305                        foreach my $v (@vs) {
    259306                            if ($v =~ /\S/) {
    260                                 push (@{$exif_metadata{$field}}, $self->gsSafe($v));
     307                                push (@{$exif_metadata{$field}}, $self->gsSafe($v)) if $self->checkAgainstFilters($field);
    261308                                ++$metadata_count;
    262309                            }
     
    265312                }
    266313                if (!$metadata_done) {
    267                     push (@{$exif_metadata{$field}}, $self->gsSafe($value));
     314                    push (@{$exif_metadata{$field}}, $self->gsSafe($value)) if $self->checkAgainstFilters($field);
    268315                    ++$metadata_count;
    269316                }
  • main/trunk/greenstone2/perllib/strings.properties

    r24291 r24487  
    866866EmbeddedMetadataPlugin.join_character:The character to use with join_before_split (default is a single space).
    867867EmbeddedMetadataPlugin.trim_whitespace:Trim whitespace from start and end of any extracted metadata values (Note: this also applies to any values generated through joining with join_before_split or splitting through metadata_field_separator).
     868EmbeddedMetadataPlugin.set_filter_list:A comma-separated list of the metadata sets we would like to retrieve.
     869EmbeddedMetadataPlugin.set_filter_regexp:A regular expression that filters out the metadata we would like to retrieve.
    868870
    869871ExcelPlugin.desc:A plugin for importing Microsoft Excel files (versions 95 and 97).
Note: See TracChangeset for help on using the changeset viewer.