#!/usr/bin/perl # rmThe.pl removes 'the_' from mp3 player folders (artist name). # written 08-apr-2006 by fgb # # do the following: # 1. rename m3u file # 2. modify contents of m3u file: for each line, rename album folder name # 3. if folder doesn't already exist: rename folder # 4. else move album folder into existing folder # # required arg: m3u file use Cwd; use File::Basename; my $bDebug = 0; my $sAppName = 'rmThe'; my $sM3u = ""; my $sArtistFolder = ""; my $sAlbum = ""; my $sArtist = ""; my $sDir = ""; my $sNewArtist = ""; my $sNewDir = ""; my $sNewM3u = ""; my $sVersion = '0.1'; $sM3u = shift(@ARGV); # get 1st arg if ($sM3u eq "") { print "m3u: "; $sM3u = ; chomp $sM3u; } if ($sM3u eq "") { exit(0); } $cwd = cwd(); if ($bDebug) { print "dbg: cwd=$cwd\n"; } # save current dir if (-e $sM3u) { print "processing $sM3u...\n"; $sFile = basename($sM3u); ($sArtist, $sAlbum) = split('-',$sFile); $sAlbum =~ s/\.m3u$//; $sDir = dirname($sM3u); if ($bDebug) { print "dbg: artist=$sArtist\nalbum=$sAlbum\ndir=$sDir\nfile=$sFile\n"; } if ($sArtist =~ /^the_/) { $sNewArtist = $sArtist; $sNewArtist =~ s/^the_//; $sNewM3u = $sNewArtist . '-' . $sAlbum . '.m3u'; fixM3uFile(); moveAlbum(); } else { errExit("'the' not found in $sArtist"); } } else { errExit("can't find $sM3u"); } chdir $cwd; print "'the_' removed from $sM3u\n"; ### subs here: sub errExit { my $s = "Error: " . @_[0]; print "$s\n"; print "$sAppName terminated\n"; exit; } sub fixM3uFile { $sCmd = "sed s/^the_//g $sFile >$sNewM3u"; # use sed to fixup file chdir $sDir; $sNameToDelete = $sFile . '-replaced'; if ($bDebug) { print "dbg: $sCmd\nrename $sFile,$sNameToDelete\n"; } else { system($sCmd); rename $sFile,$sNameToDelete; chdir $cwd; } } sub moveAlbum { chdir $sDir; if (! -d $sNewArtist) { rename $sArtist,$sNewArtist; } else { $sCurAlbum = $sArtist . '/' . $sAlbum; $maybe = $sNewArtist . '/' . $sAlbum; if (! -d $maybe) { $sCmd = "mv $sCurAlbum $sNewArtist"; if ($bDebug) { print "dbg: $sCmd\n"; } else { system($sCmd); } } } } __END__