[BACK]Return to showfiles.pl CVS log [TXT][DIR] Up to [local] / mp3 / bin

Annotation of mp3/bin/showfiles.pl, Revision 1.2

1.1       andrew      1: #!/usr/bin/perl -w
1.2     ! andrew      2: # $RedRiver$
1.1       andrew      3: ########################################################################
                      4: # GenerateMP3HTML.pl *** Generates the HTML files for the playlist.
                      5: #
                      6: # 04-14-00
                      7: # Written by andrew fresh <andrew@mad-techies.org>
                      8: ########################################################################
                      9: use strict;
                     10: use diagnostics;
                     11:
                     12: #use MP3::Info;
                     13: #my qw/ @mp3s @dirs /;
                     14:
                     15: my $basedir = '/home/mp3/Sorted';
                     16: my $subdir = $ENV{'QUERY_STRING'};
                     17: my $addurl = 'addmp3playlist.pl';
                     18:
                     19: #######################################################################
                     20: # *** MAIN ***
                     21: #######################################################################
                     22:
                     23: if ($subdir) {
                     24:        $subdir =~ s/%(..)/pack("c",hex($1))/ge;
                     25: } else {
                     26:        $subdir ='';
                     27: }
                     28:
                     29: my @dirs = GetDirListing("$basedir/$subdir");
                     30: my @mp3s = GetMP3Listing("$basedir/$subdir");
                     31:
                     32:
                     33: print "Content-Type: text/html\n\n";
                     34: print "<html>\n<head>\n\t<meta HTTP-EQUIV='Pragma' CONTENT='no-cache'> <title>' . $subdir . '</title>\n<body>\n\n";
                     35:
                     36: #Print_Nav();
                     37:
                     38: if ($subdir) {
                     39:        print "<h3>";
                     40:        SplitDir($subdir);
                     41:        print " - <font size=\"-2\"><a href=\"" . "showall.pl" . "\?" . EncodeURL("$subdir") . "\">All</a></font>";
                     42:        print " - <font size=\"-2\"><a href=\"" . "addall.pl" . "\?" . EncodeURL("$subdir") . "\">Add</a></font><br>";
                     43:        print "</h3>\n";
                     44:        print "<hr>\n";
                     45: }
                     46:
                     47: if (@dirs) {
                     48:        foreach my $dir (@dirs) {
                     49:                print "<a href=\"" . MyName() . "\?" . EncodeURL("$subdir/$dir") . "\">$dir</a> ";
                     50:                print "- <font size=\"-2\"><a href=\"" . "showall.pl" . "\?" . EncodeURL("$subdir/$dir") . "\">All</a></font>";
                     51:                print "- <font size=\"-2\"><a href=\"" . "addall.pl" . "\?" . EncodeURL("$subdir/$dir") . "\">Add</a></font><br>";
                     52:        }
                     53: }
                     54:
                     55: if (@mp3s) {
                     56:        print "<ul>\n";
                     57:        foreach my $mp3 (@mp3s) {
                     58:                my $songtitle = $mp3;
                     59:                my $directory = $subdir;
                     60:                $directory =~ s#.*/(.*)$#$1#;
                     61: #              print "dir ", $directory;
                     62: #              print "song ", $songtitle;
                     63:                if ($songtitle =~ /\Q$directory\E\s/i) {
                     64:                        $songtitle =~ s/^.*- (\d{2}(\.| -) .*)/$1/i;
                     65:                }
                     66:
                     67:                print "\t<li>";
                     68:                if ($songtitle =~ /\.mp3$/i) {
                     69:                        print "MP3: ";
                     70:                } elsif ($songtitle =~ /\.ogg$/i) {
                     71:                        print "OGG: ";
                     72:                }
                     73:
                     74:                $songtitle =~ s/\.(mp3|ogg)$//i;
                     75:                print "<a href=\"$addurl\?" . EncodeURL("$subdir/$mp3") . "\" target=\"bottom\">$songtitle</a></li>\n";
                     76:        }
                     77:        print "</ul>\n";
                     78: }
                     79:
                     80: print "</body>\n</head>\n</html>\n";
                     81:
                     82:
                     83:
                     84:
                     85: ########################################################################
                     86: # *** SUBS ***
                     87: ########################################################################
                     88:
                     89: ########################################################################
                     90: # *** GetDirListing: reads the list of directories
                     91: sub GetDirListing {
                     92:        my $DIR = shift;
                     93:        my @directories;
                     94:        my @songs;
                     95:        opendir DIR, $DIR or bail("Unable to opendir $$!");
                     96:                @directories = grep { !/^\./ && -d "$DIR/$_" } readdir(DIR);
                     97:        closedir DIR;
                     98:
                     99:        return sort @directories;
                    100: }
                    101:
                    102:
                    103:
                    104:
                    105: ########################################################################
                    106: # *** GetMP3Listing: reads the list of directories
                    107: sub GetMP3Listing {
                    108:        my $DIR = shift;
                    109:        my @songs;
                    110:        opendir DIR, $DIR or bail("Unable to opendir $$!");
                    111:                @songs = grep /\.(mp3|ogg)$/i, readdir(DIR);
                    112:        closedir DIR;
                    113:
                    114:        return sort @songs;
                    115: }
                    116:
                    117:
                    118:
                    119:
                    120:
                    121: ########################################################################
                    122: # *** EncodeURL: %encodes the parameters of the URL
                    123: sub EncodeURL {
                    124:        my $strURL = shift;
                    125:        $strURL =~ s/(\W)/sprintf("%%%x", ord($1))/eg;
                    126:        return $strURL;
                    127: }
                    128:
                    129:
                    130:
                    131:
                    132: #########################################################################
                    133: # My name
                    134: sub MyName {
                    135:        my @filename = (split /\//, $0);
                    136:        pop @filename;
                    137: }
                    138:
                    139:
                    140:
                    141: #########################################################################
                    142: # SplitDir
                    143: sub SplitDir {
                    144:        my $dir = shift;
                    145:        substr($dir, 0, 1) = "";
                    146:        my @filename = (split /\//, $dir);
                    147:        my $file;
                    148:        my $returntext;
                    149:        my $i;
                    150:
                    151:
                    152:        if ($dir ne " ") {
                    153:                for ($i=0;$i<=$#filename;$i++) {
                    154:                        my $j;
                    155:                        my $url = "";
                    156:                        for ($j=0;$j<=$i;$j++) {
                    157:                                $url = "$url/$filename[$j]";
                    158:                        }
                    159:                print "/<a href=\"showfiles.pl\?" . EncodeURL($url) . "\">$filename[$i]</a>";
                    160:
                    161:                }
                    162:        } else {
                    163:                print "/";
                    164:        }
                    165: }
                    166:
                    167:
                    168:
                    169:
                    170: #######################################################################
                    171: # Bail: this subrouting dies and displays the error to the browser.
                    172: # gotten from the example in the O'Reilly
                    173: # _Learning_Perl_on_Win32_Systems_
                    174: sub bail {
                    175:        my $error = shift;
                    176:        print "\n\nUnexpected Error: <b>$error</b><br>\n";
                    177:        print "In " . __FILE__ . "\n";
                    178:        die;
                    179:        exit;
                    180: }
                    181: sub Print_Nav
                    182: {
                    183:        open FILE, 'nav.inc' or die "\n\ncouldn't open FILE nav.inc: $!";
                    184:        while (<FILE>) {
                    185:                print;
                    186:        }
                    187:        close FILE;
                    188: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>