#!/usr/bin/perl -w # $RedRiver: showall.pl,v 1.3 2007/02/08 20:04:03 andrew Exp $ ######################################################################## # showall.pl *** Displays all MP3's in all subdirs # # 04-27-00 # Written by andrew fresh ######################################################################## use strict; use diagnostics; #use MP3::Info; #my qw/ %mp3s %dirs /; my $basedir = '/home/mp3/Sorted'; my $addurl = 'addmp3playlist.pl'; my $countdir = 0; my $countmp3 = 0; ####################################################################### # *** MAIN *** ####################################################################### my ($prefix, $subdir) = split /\&/, $ENV{'QUERY_STRING'}; if ($subdir) { $subdir =~ s/%(..)/pack("c",hex($1))/ge; } else { $subdir =''; } if ($prefix) { $prefix =~ s/%(..)/pack("c",hex($1))/ge; } else { $prefix =''; } #$basedir = $basedir . "/" . $subdir; print "Content-Type: text/html\n\n"; print "\n\n\t ' . $subdir . '\n\n\n"; #Print_Nav(); if ($subdir) { print "

"; SplitDir($subdir); print " - Show"; print " - Play"; print " - Approve" if $prefix; print "
"; print "

\n"; print "
\n"; } #print "

"; #SplitDir($subdir); #print "

\n
\n"; #@mp3s = GetMP3Listing("$basedir/$subdir"); GetDirListing("$subdir"); #GetDirListing(""); print "
\n

Total Directories displayed: $countdir
\n"; print "Total Songs displayed: $countmp3

\n"; #if (%dirs) { # my $count; # my @sorted = sort { lc($dirs{$a}) cmp lc($dirs{$b}) } (keys %dirs); # foreach my $dir (@sorted) { # print "$dirs{$dir}
"; # $count++; # } # print "Total dirs displayed: $count

\n"; #} #if (%mp3s) { # print "

\n"; # print "Total MP3's Displayed: $count

\n"; #} print "\n\n\n"; ######################################################################## # *** SUBS *** ######################################################################## ######################################################################## # *** GetDirListing: reads the list of directories sub GetDirListing { my $DIR = shift; $DIR ||= ''; my @directories; my @songs; opendir DIR, "$basedir/$DIR" or bail("Unable to opendir $$!"); @directories = sort grep { !/^\./ && -d "$basedir$DIR/$_" } readdir(DIR); closedir DIR; print "

\n"; return sort @directories; } ######################################################################## # *** GetMP3Listing: reads the list of directories sub GetMP3Listing { my $DIR = shift; my @songs; opendir DIR, $DIR or bail("Unable to opendir $$!"); @songs = grep /\.(mp3|ogg)$/i, readdir(DIR); closedir DIR; return sort @songs; } ######################################################################## # *** EncodeURL: %encodes the parameters of the URL sub EncodeURL { my $strURL = shift; $strURL =~ s/(\W)/sprintf("%%%x", ord($1))/eg; return $strURL; } ######################################################################### # My name sub MyName { my @filename = (split /\//, $0); pop @filename; } ######################################################################### # SplitDir sub SplitDir { my $dir = shift; substr($dir, 0, 1) = ""; my @filename = (split /\//, $dir); my $file; my $returntext; my $i; if ($dir ne " ") { for ($i=0;$i<=$#filename;$i++) { my $j; my $url = ""; for ($j=0;$j<=$i;$j++) { $url = "$url/$filename[$j]"; } print "/$filename[$i]"; } } else { print "/"; } } ####################################################################### # Bail: this subrouting dies and displays the error to the browser. # gotten from the example in the O'Reilly # _Learning_Perl_on_Win32_Systems_ sub bail { my $error = shift; print "\n\nUnexpected Error: $error
\n"; print "In " . __FILE__ . "\n"; die; exit; } sub Print_Nav { open FILE, 'nav.inc' or die "\n\ncouldn't open FILE nav.inc: $!"; while () { print; } close FILE; }