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.

File:
1 edited

Legend:

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