Thursday, January 12, 2012

listall.pl

Just a quick script to list all of my music files.  Similar to the 'tree' command from the DOS command line utilities.  Set the variable SrcDir to the root of your music data and give it a run.


<<< --- listall.pl --- >>>
#!/usr/bin/perl
use strict;
use warnings;
use Cwd;
use sort '_qsort';
use File::Glob qw(:globally :nocase);
our $DEBUG = 1;

my $SrcDir = "/var/lib/mythtv/music";
opendir (Source_Dir, $SrcDir) || die "can't opendir $SrcDir: $!";
chdir Source_Dir;
my @Artists = grep { !/^\./ && -d "$_" } sort readdir(Source_Dir);
foreach my $Artist (@Artists) {
        opendir (Artist_Dir, $Artist) || die "can't opendir $Artist: $!";
        if ($DEBUG) { print $Artist, "\n"; }
        chdir Artist_Dir;
        my @Albums = grep { !/^\./ && -d "$_" } sort readdir(Artist_Dir);
        foreach my $Album (@Albums) {
                if ($DEBUG) { print "\t", $Album, "\n"; }
                chdir $Album;
                my @Tracks = <*.{flac,mp3}>;
                foreach my $Track (@Tracks) {
                        if ($DEBUG) { print "\t\t", $Track, "\n"; }
                }
                chdir "..";
        }
        chdir "..";
        closedir Artist_Dir;
}
closedir Source_Dir;

No comments:

Post a Comment