#!/usr/bin/perl -w # $RedRiver: showfiles.pl,v 1.2 2006/08/12 00:14:53 andrew Exp $ ######################################################################## # GenerateMP3HTML.pl *** Generates the HTML files for the playlist. # # 04-14-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'; ####################################################################### # *** 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 =''; } my @dirs = GetDirListing("$basedir/$subdir"); my @mp3s = GetMP3Listing("$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 "
\n"; print "

\n"; print "
\n"; } if (@dirs) { foreach my $dir (@dirs) { print "$dir "; print "- Show"; print "- Play"; print "- Approve" if $prefix; print "
\n"; } } if (@mp3s) { print "\n"; } print "\n\n\n"; ######################################################################## # *** SUBS *** ######################################################################## ######################################################################## # *** GetDirListing: reads the list of directories sub GetDirListing { my $DIR = shift; my @directories; my @songs; opendir DIR, $DIR or bail("Unable to opendir $$!"); @directories = grep { !/^\./ && -d "$DIR/$_" } readdir(DIR); closedir DIR; 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; }