Showing posts with label perl. Show all posts
Showing posts with label perl. Show all posts

Sunday, January 11, 2009

Renaming MP3 by ID tag

Ever tried to recover from an IPOD dump, and get a bunch of files with the useless names? Here's a script to fix that.
$ ls *.mp3 | ./rename.pl - | while read line; do OLD=`echo $line | cut -d, -f1`; NEW=`echo $line | cut -d, -f2`; mv "$OLD" "$NEW"; done

And here's the perl script:

#!/usr/bin/perl
#
#Your Love Means Everything.mp3: (tag v1.0)
#songname: Your Love Means Everything
#artist: Coldplay
#album: Varie
#year:
#comment:
#genre: Other(12)
#

while( <> )
{
chomp;
my %hsh = ();
my @info = `id3ed -i "$_"`;
foreach my $iline ( @info )
{
chomp $iline;
#print $iline . "\n";
if( $iline =~ /songname:\s+\b(.+?)$/ ){
$hsh{ song } = $1;
}
if( $iline =~ /artist:\s+\b(.+?)$/ ){
$hsh{ artist } = $1;
}
if( $iline =~ /album:\s+\b(.+?)$/ ){
$hsh{ album } = $1;
}
}

my $newname = "$hsh{ artist }" . "-" . "$hsh{ album }" . "-" . "$hsh{ song }" . ".mp3";
$newname =~ s/\s+/_/g;
print "$_,$newname\n";
}

Wednesday, December 10, 2008

My first fvwm module

I've been using FVWM for some time now, but have never tried writing any kind of modules to extend it. Yesterday I tried it out, and I've got my first working FVWM module.



I wrote the module in Perl, and you can view there source here. Basically what it does is capture window focus events, and will set the transparency of the window to whatever is set in a configuration file
pblair@laptop:~$ cat ~/.fvwm/fvwmPeteTrans.cfg
XTerm:0.60
The above config will set all xterminals to 60% opacity when the focus moves away from it, but will return it to complete opacity once focus returns to it.

You can add as many types of applications (one per line). For instance, Firefox has
$ xprop | grep CLASS
WM_CLASS(STRING) = "Navigator", "Firefox"
So you could either place "Navigator" or "Firefox" at the left of the colon.

To install the module, place it somewhere where the .fvwmrc ModulePath will find it, then place it into the StartFunction section:

AddToFunc StartFunction
+ I Module FvwmPeteTransFocus
+ I FvwmButtons
P.S. You need "xcompmgr" and "transset" installed. And be sure to change the absolute pathnames within the module to the respective locations on your system.

Saturday, March 24, 2007

Perl programmer, who me?

Yikes-- it's true. Just purchased Programming Perl, 3rd Ed., from Chapters and am starting to pick it up.

First impressions: It's a damned ugly language to work with, but is very flexible, so I understand why so many sys-admins love it; you can really hack together a quick and dirty application in no time flat.

We'll see how much I like it as time goes.