Changeset 7504


Ignore:
Timestamp:
2004-05-31T14:41:11+12:00 (20 years ago)
Author:
davidb
Message:

ImagePlug, MP3Plug, UnknownPlug modified to set Title metadata based
on filename if no explicit Title metadata given. Also FileFormat
metadata is now also set to indicate type of file processed. To
share some of the functionality introduced some of the new code is
located in BasPlug.

Location:
trunk/gsdl/perllib/plugins
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl/perllib/plugins/BasPlug.pm

    r7362 r7504  
    540540}
    541541
     542sub filename_based_title
     543{
     544    my $self = shift (@_);
     545    my ($file) = @_;
     546
     547    my $file_derived_title = $file;
     548    $file_derived_title =~ s/_/ /g;
     549    $file_derived_title =~ s/\..*?$//;
     550
     551    return $file_derived_title;
     552}
     553
     554
     555sub title_fallback
     556{
     557    my $self = shift (@_);
     558    my ($doc_obj,$section,$file) = @_;
     559
     560    if (!defined $doc_obj->get_metadata_element ($section, "Title")) {
     561
     562    my $file_derived_title = $self->filename_based_title($file);
     563    $doc_obj->add_metadata ($section, "Title", $file_derived_title);
     564    }
     565}
     566
    542567sub textcat_get_language_encoding {
    543568    my $self = shift (@_);
  • trunk/gsdl/perllib/plugins/ImagePlug.pm

    r7362 r7504  
    178178    $doc_obj->add_metadata ($section, "Source", $url);
    179179
     180    $self->title_fallback($doc_obj,$section,$file);
     181    $doc_obj->add_metadata ($section, "FileFormat", $type);
     182
    180183    my ($image_type, $image_width, $image_height, $image_size)
    181184    = &identify($filename, $outhandle, $verbosity);
  • trunk/gsdl/perllib/plugins/MP3Plug.pm

    r7496 r7504  
    4444        'type' => "flag",
    4545        'deft' => "",
    46         'reqd' => "no" } ];
     46        'reqd' => "no" },
     47      { 'name' => "applet_metadata",
     48    'desc' => "{MP3Plug.applet_metadata}",
     49    'type' => "flag",
     50    'deft' => "" },
     51      { 'name' => "metadata_fields",
     52    'desc' => "{MP3Plug.metadata_fields}",
     53    'type' => "string",
     54    'deft' => "Title,Artist,Genre" } ];
    4755
    4856my $options = { 'name'     => "MP3Plug",
     
    6270    if (!parsargv::parse(\@_,
    6371             q^assoc_images^, \$self->{'assoc_images'},
     72             q^applet_metadata^, \$self->{'applet_metadata'},
     73             q^metadata_fields/.*/Title,Artist,Genre^, \$self->{'metadata_fields'},
    6474             "allow_extra_options")) {
    6575    print STDERR "\nIncorrect options passed to MP3Plug, check your collect.cfg configuration file\n";
     
    140150    # Add the file as an associated file ...
    141151    my $section = $doc_obj->get_top_section();
    142     my $file_type = $self->{'file_type'} || "audio/mp3";
     152    my $mime_type = $self->{'mime_type'} || "audio/mp3";
    143153    my $assoc_field = $self->{'assoc_field'} || "mp3";
    144154    my $assoc_name = $file;
    145155    $assoc_name =~ s/\.mp3$//;
    146156
    147     $doc_obj->associate_file($filename, $dst_file, $file_type, $section);
     157    $doc_obj->associate_file($filename, $dst_file, $mime_type, $section);
    148158    $doc_obj->add_metadata ($section, "Source", $file);
    149159    $doc_obj->add_metadata ($section, $assoc_field, $assoc_name);
    150160    $doc_obj->add_metadata ($section, "srcurl", $assoc_url);
    151161
     162    $self->title_fallback($doc_obj,$section,$file);
     163    $doc_obj->add_metadata ($section, "FileFormat", "MP3");
     164
    152165    my $mp3_info = get_mp3info($filename);
    153     foreach my $ki ( keys %$mp3_info ) {
    154     my $mp3_metavalue = $mp3_info->{$ki};
    155 
    156     if ($mp3_metavalue !~ m/^\s*$/s) {
    157         my $mp3_metaname = "mp3:".lc($ki);
    158         $doc_obj->add_metadata ($section, $mp3_metaname, $mp3_metavalue);
    159     }
    160     }
    161 
    162166    my $mp3_tags = get_mp3tag($filename);
    163     foreach my $kt ( keys %$mp3_tags ) {
    164     my $mp3_metavalue = $mp3_tags->{$kt};
    165 
    166     if ($mp3_metavalue !~ m/^\s*$/s) {
    167         my $kt_len = length($kt);
    168         $kt_initial_cap = uc(substr($kt,0,1)).lc(substr($kt,1,$kt_len-1));
    169         my $mp3_metaname = "mp3:".$kt_initial_cap;
    170 
    171         $doc_obj->add_metadata ($section, $mp3_metaname, $mp3_metavalue);
    172         if ($mp3_metaname eq "mp3:Title") {
    173         $doc_obj->add_metadata ($section, "Title", $mp3_metavalue);
    174         }
     167
     168    my $metadata_fields = $self->{'metadata_fields'};
     169
     170    if ($metadata_fields eq "*") {
     171    # Locate all info and tag metadata
     172
     173    foreach my $ki ( keys %$mp3_info ) {
     174        my $mp3_metavalue = $mp3_info->{$ki};
     175
     176        if ($mp3_metavalue !~ m/^\s*$/s) {
     177        my $mp3_metaname = "mp3:".lc($ki);
     178        $doc_obj->add_metadata ($section, $mp3_metaname, $mp3_metavalue);
     179        }
     180    }
     181
     182    foreach my $kt ( keys %$mp3_tags ) {
     183        my $mp3_metavalue = $mp3_tags->{$kt};
     184       
     185        if ($mp3_metavalue !~ m/^\s*$/s) {
     186        my $kt_len = length($kt);
     187        $kt_initial_cap = uc(substr($kt,0,1)).lc(substr($kt,1,$kt_len-1));
     188        my $mp3_metaname = "mp3:".$kt_initial_cap;
     189       
     190        $doc_obj->add_metadata ($section, $mp3_metaname, $mp3_metavalue);
     191        if ($mp3_metaname eq "mp3:Title") {
     192            $doc_obj->add_metadata ($section, "Title", $mp3_metavalue);
     193        }
     194        }
     195    }
     196    }
     197    else {
     198
     199    # Restrict metadata to that specifically given
     200    foreach my $field (split /,/, $metadata_fields) {
     201
     202        # check info
     203        if (defined $mp3_info->{$field}) {
     204
     205        my $mp3i_metavalue = $mp3_info->{$field};
     206       
     207        if ($mp3i_metavalue !~ m/^\s*$/s) {
     208            my $mp3i_metaname = "mp3:".lc($field);
     209            $doc_obj->add_metadata ($section, $mp3i_metaname, $mp3i_metavalue);
     210        }
     211        }
     212
     213        # check tags
     214        if (defined $mp3_tags->{$field}) {
     215
     216        my $mp3t_metavalue = $mp3_tags->{uc($field)};
     217       
     218        if ($mp3t_metavalue !~ m/^\s*$/s) {
     219            my $mp3t_metaname = "mp3:".$field;
     220           
     221            $doc_obj->add_metadata ($section, $mp3t_metaname, $mp3t_metavalue);
     222            if ($mp3t_metaname eq "mp3:Title") {
     223            $doc_obj->add_metadata ($section, "Title", $mp3t_metavalue);
     224            }
     225        }
     226        }
     227       
    175228    }
    176229    }
     
    178231    $doc_obj->add_metadata ($section, "srclink",
    179232                "<a href=_httpcollection_/index/assoc/[assocfilepath]/[srcurl]>");
    180     $doc_obj->add_metadata ($section, "srcicon",
    181                 "<img src=_httpimg_/mp3icon.gif>");
     233    $doc_obj->add_metadata ($section, "srcicon", "<img src=_httpimg_/mp3icon.gif>");
    182234    $doc_obj->add_metadata ($section, "/srclink", "</a>");
    183235
    184     $doc_obj->add_metadata ($section, "mp3applet",
    185                 gen_mp3applet("_httpcollection_/index/assoc/[assocfilepath]/[srcurl]"));
    186 
    187 
     236    my $applet_metadata = $self->{'applet_metadata'};
     237    if (defined $applet_metadata && $applet_metadata ) {
     238    my $applet_html
     239        = gen_mp3applet("_httpcollection_/index/assoc/[assocfilepath]/[srcurl]");
     240    $doc_obj->add_metadata ($section, "mp3applet", $applet_html);
     241    }
    188242
    189243    my $assoc_images = $self->{'assoc_images'};
     
    252306# a given plugin.
    253307
    254 my $mp3_doc_count = 0;
     308my $mp3_doc_count = 0; ## is this used anywhere now !!???
    255309
    256310sub read {
     
    278332   
    279333##    $doc_obj->set_OIDtype ($processor->{'OIDtype'});   
    280     $doc_obj->set_OIDtype ("incremental");   
     334    $doc_obj->set_OIDtype ("incremental");    # this is done to avoid hashing content of file
    281335    $doc_obj->add_utf8_metadata($doc_obj->get_top_section(), "$self->{'plugin_type'}", "1");
    282336
  • trunk/gsdl/perllib/plugins/UnknownPlug.pm

    r7362 r7504  
    7070    'deft' => "",
    7171    'reqd' => "no" } ,
    72       { 'name' => "file_type",
    73     'desc' => "{UnknownPlug.file_type}",
     72      { 'name' => "file_format",
     73    'desc' => "{UnknownPlug.file_format}",
     74    'type' => "string",
     75    'deft' => "",
     76    'reqd' => "no" },
     77      { 'name' => "mime_type",
     78    'desc' => "{UnknownPlug.mime_type}",
    7479    'type' => "string",
    7580    'deft' => "",
     
    9398    if (!parsargv::parse(\@_,
    9499             q^assoc_field/.*/^, \$self->{'assoc_field'},
    95              q^file_type/.*/^, \$self->{'file_type'},
     100             q^file_format/.*/^, \$self->{'file_format'},
     101             q^mime_type/.*/^, \$self->{'mime_type'},
    96102             "allow_extra_options")) {
    97103    print STDERR "\nIncorrect options passed to UnknownPlug, check your collect.cfg configuration file\n";
     
    123129    return 0 if ($file eq "" || $filename eq "");
    124130
    125     # if ($filename =~ m/ /) {
    126     # print $outhandle "UnknownPlug: \"$filename\" contains a space. choking.\n";
    127     # return undef;
    128     # }
    129 
    130131    # Add the image metadata
    131132    my $url = $file;
     
    134135    # Add the file as an associated file ...
    135136    my $section = $doc_obj->get_top_section();
    136     my $file_type = $self->{'file_type'} || "unknown/unknown";
     137    my $file_format = $self->{'file_format'} || "unknown";
     138    my $mime_type = $self->{'mime_type'} || "unknown/unknown";
    137139    my $assoc_field = $self->{'assoc_field'} || "unknown_file";
    138140
    139141    $doc_obj->associate_file($filename, $file, $mime_type, $section);
     142    $doc_obj->add_metadata ($section, "FileFormat", $file_format);
    140143    $doc_obj->add_metadata ($section, $assoc_field, $file);
    141 
     144    $doc_obj->add_metadata ($section, "Source", $file);
     145
     146    $self->title_fallback($doc_obj,$section,$file);
    142147   
    143148    $doc_obj->add_metadata ($section, "srclink",
    144149                "<a href=_httpcollection_/index/assoc/[assocfilepath]/[$assoc_field]>");
     150    $doc_obj->add_metadata ($section, "srcicon", "_iconunknown_");
    145151    $doc_obj->add_metadata ($section, "/srclink", "</a>");
    146152   
Note: See TracChangeset for help on using the changeset viewer.