Actions

&johncdvorak

From Rabbi Blog

While writing my perl Sansa mp3 player podcast sync program, I came across the issue that the mp3 audio for the CrankyGeeks podcast is without id3 tag information. This royally messes up my list. As a short irony, I noticed that the last KFI Tech Guy with Leo Laporte was without a few tags, causing it to fall into the <unknown> category on the player.

Leo has enough stuff derived from his name, so I wrote the &johncdvorak subroutine

In the example below, only 1 mp3 file came through with any tag info (#66), the rest are artificial.

Johncdvorak.jpg

Portable Player Drive is J:
Checking source files to move to destination:
Did not find J:/MUSIC/Podcasts/Cranky Geeks MP3 Audio
Created J:/MUSIC/Podcasts/Cranky Geeks MP3 Audio
Copying CrankyGeeks 058.mp3
Checked ID3v1 tags for CrankyGeeks 058.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Copying CrankyGeeks 059.mp3
Checked ID3v1 tags for CrankyGeeks 059.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Copying CrankyGeeks 060.mp3
Checked ID3v1 tags for CrankyGeeks 060.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Copying CrankyGeeks 061.mp3
Checked ID3v1 tags for CrankyGeeks 061.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Copying CrankyGeeks 062.mp3
Checked ID3v1 tags for CrankyGeeks 062.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Copying CrankyGeeks 063.mp3
Checked ID3v1 tags for CrankyGeeks 063.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Copying CrankyGeeks 064.mp3
Checked ID3v1 tags for CrankyGeeks 064.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Copying CrankyGeeks 066.mp3
Checked ID3v1 tags for CrankyGeeks 066.mp3:
Title: CrankyGeeks Episode 66, May 30, 2007 Artist: John C. Dvorak Genre: Podcast
Copying CrankyGeeks 067.mp3
Checked ID3v1 tags for CrankyGeeks 067.mp3:
Title: CrankyGeeks Artist: CrankyGeeks Genre: Podcast
Reading On The Go.plp for files to remove from portable:
Checking for files removed from source:

Here are the excerpts of the main file:

use MP3::Info;

&johncdvorak($checkmp3tag,$checkmp3name);


sub johncdvorak
    {
    #This routine is dedicated to John C Dvorak by way of CrankyGeeks
    my $file=$checkmp3tag;
    my $mp3 = new MP3::Info $file;
           
        my $newtag=();
        if ($checkmp3name =~ m/(.*).mp3/)
        {
        $newtag=$1;
        
        #Strip out numbers.  If we're lucky
        #we'll have a nice name for the tag w/o
        #show/ep numbers
        
        $newtag =~ s/[0-9]//g;  
        }            

        if ($mp3->title eq "")
            {
            $tag->{TITLE} = $newtag;
            set_mp3tag($checkmp3tag, $tag);
            }
        if ($mp3->artist eq "")
            {
            $tag->{ARTIST} = $newtag;
            set_mp3tag($checkmp3tag, $tag);
            }
        if ($mp3->album eq "")
            {
            $tag->{ALBUM} = $newtag;
            set_mp3tag($checkmp3tag, $tag);
            }
        if ($mp3->genre eq "")
            {
            #You must edit MP3\Info.pm and add Podcast to the genres
            #for this to work.  If I remember, I'll email Chris Nandor
            #and relay that. [email protected]
            $tag->{GENRE} = 'Podcast';
            set_mp3tag($checkmp3tag, $tag);
            }
        $mp3 = new MP3::Info $file;
        printf "Checked ID3v1 tags for $checkmp3name:\n title: %s - artist: %s - genre: %s\n",
                $mp3->title, $mp3->artist, $mp3->genre;
        #ref: FILE, TITLE, ARTIST, ALBUM, YEAR, COMMENT, GENRE
    }