Annotation of mp3/bin/addall.pl, Revision 1.1.1.1
1.1 andrew 1: #!/usr/bin/perl -w
2: ########################################################################
3: # showall.pl *** Displays all MP3's in all subdirs
4: #
5: # 04-27-00
6: # Written by andrew fresh <andrew@mad-techies.org>
7: ########################################################################
8: use strict;
9: use diagnostics;
10:
11: #use MP3::Info;
12: #my qw/ %mp3s %dirs /;
13:
14: my $basedir = '/home/mp3/Sorted';
15: my $subdir = $ENV{'QUERY_STRING'};
16: my $playlist = '/var/www/mp3/playlist/playlist.lst';
17:
18: my $countdir = 0;
19: my $countmp3 = 0;
20: #######################################################################
21: # *** MAIN ***
22: #######################################################################
23:
24: if ($subdir) {
25: $subdir =~ s/%(..)/pack("c",hex($1))/ge;
26: } else {
27: $subdir ='';
28: }
29:
30: #$basedir = $basedir . "/" . $subdir;
31:
32: print "Content-Type: text/html\n\n";
33: print "<html>\n<head>\n\t<meta HTTP-EQUIV='Pragma' CONTENT='no-cache'> <title>' . $subdir . '</title>\n<body>\n\n";
34:
35: #Print_Nav();
36:
37: print "<h3>";
38: SplitDir($subdir);
39: print "</h3>\n<hr>\n";
40:
41: #@mp3s = GetMP3Listing("$basedir/$subdir");
42:
43: GetDirListing("$subdir");
44: #GetDirListing("");
45:
46: print "<hr>\n<h3>Total Directories displayed: $countdir<br>\n";
47: print "Total MP3's Added: $countmp3</h3>\n";
48:
49: #if (%dirs) {
50: # my $count;
51: # my @sorted = sort { lc($dirs{$a}) cmp lc($dirs{$b}) } (keys %dirs);
52: # foreach my $dir (@sorted) {
53: # print "<a href=\"showfiles.pl\?" . EncodeURL("$dir/$dirs{$dir}") . "\">$dirs{$dir}</a><br>";
54: # $count++;
55: # }
56: # print "Total dirs displayed: $count<p>\n";
57: #}
58:
59: #if (%mp3s) {
60: # print "<ul>\n";
61: # my @sorted = sort { lc($mp3s{$a}) cmp lc($mp3s{$b}) } (keys %mp3s);
62: # my $count;
63: # foreach my $mp3dir (sort keys %mp3s) {
64: # foreach $mp3 (@{ $mp3s{$mp3dir} }) {
65: # print "\t<li>Song: <a href=\"$addurl\?" . EncodeURL("$mp3dir/$mp3") . "\" target=\"bottom\">$mp3</a></li>\n";
66: # $count++;
67: # }
68: # }
69: # print "</ul>\n";
70: # print "Total MP3's Displayed: $count<p>\n";
71: #}
72:
73: print "</body>\n</head>\n</html>\n";
74:
75:
76:
77:
78: ########################################################################
79: # *** SUBS ***
80: ########################################################################
81:
82: ########################################################################
83: # *** GetDirListing: reads the list of directories
84: sub GetDirListing {
85: my $DIR = shift;
86: $DIR ||= '';
87: my @directories;
88: my @songs;
89:
90:
91: opendir DIR, "$basedir/$DIR" or bail("Unable to opendir $$!");
92: @directories = grep { !/^\./ && -d "$basedir$DIR/$_" } readdir(DIR);
93: closedir DIR;
94:
95: print "<ul>\n";
96: foreach my $directory (@directories) {
97: # $dirs{"$DIR/$directory"} = $directory;
98: print "<li><a href=\"showfiles.pl\?" . EncodeURL("$DIR/$directory") . "\">$directory</a>";
99: print " - <font size=\"-1\"><a href=\"" . "showall.pl" . "\?" . EncodeURL("$DIR/$directory") . "\">All</a></font></li>";
100:
101: $countdir++;
102: my @curdir = GetDirListing("$DIR/$directory");
103:
104:
105:
106: # push @dirs, @curdir;
107: # print "<a href=\"showfiles.pl\?" . EncodeURL("$DIR/$directory") . "\">$directory</a><br>";
108: }
109: opendir DIR, "$basedir/$DIR" or bail("Unable to opendir $$!");
110: my @temp = grep /\.(mp3|ogg)$/i, readdir(DIR);
111: # $mp3s{"$DIR/$directory"} = [ @temp ];
112: print "<ul>\n";
113: foreach my $mp3 (@temp) {
114: # print "\t<li>Song: <a href=\"$addurl\?" . EncodeURL("$DIR/$mp3") . "\" target=\"bottom\">$mp3</a></li><br>\n";
115: print "\t<li>";
116: AddSong("$DIR/$mp3");
117: print "</li>\n";
118: $countmp3++;
119: }
120: print "</ul>\n";
121: closedir DIR;
122:
123: print "</ul>\n";
124:
125:
126: return @directories;
127: }
128:
129:
130:
131:
132: ########################################################################
133: # *** GetMP3Listing: reads the list of directories
134: sub GetMP3Listing {
135: my $DIR = shift;
136: my @songs;
137: opendir DIR, $DIR or bail("Unable to opendir $$!");
138: @songs = grep /\.(mp3|ogg)$/i, readdir(DIR);
139: closedir DIR;
140:
141: return @songs;
142: }
143:
144:
145:
146:
147:
148: ########################################################################
149: # *** EncodeURL: %encodes the parameters of the URL
150: sub EncodeURL {
151: my $strURL = shift;
152: $strURL =~ s/(\W)/sprintf("%%%x", ord($1))/eg;
153: return $strURL;
154: }
155:
156:
157:
158:
159: #########################################################################
160: # My name
161: sub MyName {
162: my @filename = (split /\//, $0);
163: pop @filename;
164: }
165:
166:
167:
168: #########################################################################
169: # SplitDir
170: sub SplitDir {
171: my $dir = shift;
172: substr($dir, 0, 1) = "";
173: my @filename = (split /\//, $dir);
174: my $file;
175: my $returntext;
176: my $i;
177:
178:
179: if ($dir ne " ") {
180: for ($i=0;$i<=$#filename;$i++) {
181: my $j;
182: my $url = "";
183: for ($j=0;$j<=$i;$j++) {
184: $url = "$url/$filename[$j]";
185: }
186: print "/<a href=\"showfiles.pl\?" . EncodeURL($url) . "\">$filename[$i]</a>";
187:
188: }
189: } else {
190: print "/";
191: }
192: }
193:
194:
195:
196:
197: #######################################################################
198: # Bail: this subrouting dies and displays the error to the browser.
199: # gotten from the example in the O'Reilly
200: # _Learning_Perl_on_Win32_Systems_
201: sub bail {
202: my $error = shift;
203: print "\n\nUnexpected Error: <b>$error</b><br>\n";
204: print "In " . __FILE__ . "\n";
205: die;
206: exit;
207: }
208:
209:
210: sub AddSong
211: {
212: my $filename = shift;
213: $filename =~ s/%(..)/pack("c",hex($1))/ge;
214:
215: if ($filename) {
216: print "Added $filename<br>\n";
217: open PLAYLIST, ">>$playlist" or bail("unable to open PLAYLIST: $!");
218: print PLAYLIST "$filename\n";
219: close PLAYLIST or bail("unable to close PLAYLIST: $!");
220: } else {
221: print "<h1>You need to pass a song</h1>";
222: }
223: }
224:
225: sub Print_Nav
226: {
227: open FILE, 'nav.inc' or die "\n\ncouldn't open FILE nav.inc: $!";
228: while (<FILE>) {
229: print;
230: }
231: close FILE;
232: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>