Annotation of mp3/bin/showplaylist.pl, Revision 1.1.1.1
1.1 andrew 1: #!/usr/bin/perl -w
2: ########################################################################
3: # ShowPlaylist.pl *** Displays our current playlist on a web page
4: #
5: # 04-14-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/ $list @playlist $maplay $filename $basedir $htmldir $add /;
13:
14: my $args = shift;
15:
16: my ($listfile,$add);
17: if ($args) {
18: ($listfile,$add) = split /\\&/, $args;
19: }
20: $listfile ||= 'playlist.lst';
21:
22: my $list = '/var/www/mp3/playlist/' . $listfile;
23:
24: my $playlist = '/var/www/mp3/playlist/playlist.lst';
25:
26: my $exe = 'removemp3playlist.pl';
27: unless ($listfile eq 'playlist.lst') {
28: $exe = 'addmp3playlist.pl';
29: } else {
30: $add = undef;
31: }
32:
33: #######################################################################
34: # *** MAIN ***
35: #######################################################################
36:
37: my @playlist = get_playlist($list);
38:
39: print "Content-Type: text/html\n\n";
40: print "\n\n<html>\n<head>\n\t<meta HTTP-EQUIV='Pragma' CONTENT='no-cache'> <title>$listfile</title>\n";
41: print "<meta HTTP-EQUIV=\"REFRESH\" CONTENT=\"300\">\n";
42: print "<body>\n\n";
43:
44: use CGI::Carp qw/ fatalsToBrowser /;
45:
46: #Print_Nav();
47: #print "args: $args\n";
48: if ($listfile eq 'playlist.lst') {
49: print '<a href="deleteplaylist.pl">Delete Playlist</a>';
50: }
51:
52:
53:
54:
55: unless ($add) {
56: print "<h1>Currently in $listfile as of " . GetTime() . "</h1><hr>\n";
57: my $file = $0;
58: $file =~ s#^.*[//]##;
59: print "<a href='$file?$listfile\&ADD'>Add All</A><br>\n";
60: } else {
61: print "<h1>Added to playlist from $listfile as of " . GetTime() . "</h1><hr>\n";
62: }
63:
64:
65:
66: if (@playlist) {
67: my $counter;
68:
69: foreach my $filename (@playlist) {
70: if ($add) {
71: AddSong($filename);
72: } else {
73: print "\t<li><a href=\"$exe\?" . EncodeURL($filename) . "\" target=\"bottom\">$filename</a></li>\n";
74: }
75: $counter++;
76: }
77: print "<H3>Total displayed: $counter</h3>\n";
78: } else {
79: print "\t<li>Nothing in list</li>\n";
80: }
81: print "</UL>\n</body>\n</head>\n</html>\n";
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98: #########################################################################
99: # GetTime
100: sub GetTime {
101: my $hours = shift;
102: my ($sec,$min,$hour,$mday,$mon,$year,,,) = localtime(); # 86400 seconds is one day
103:
104: if ($min < 10) { $min = "0$min"}
105: if ($sec < 10) { $sec = "0$sec"}
106: if ($hour < 10) { $hour = "0$hour"}
107: if ($mday < 10) { $mday = "0$mday"}
108: if ($mon < 10) { $mon = "0$mon"}
109:
110: my $time = ($year + 1900) . '-' . ++$mon . '-' . $mday . ' ' . $hour . ':' . $min . ':' . $sec;
111: return $time;
112: }
113: #########################################################################
114:
115:
116:
117:
118:
119: #######################################################################
120: # read in the Playlist
121: sub get_playlist {
122: my $FILE = shift;
123: my @lines;
124: if (-e $FILE) {
125: open (FILE, $FILE) || bail ("Couldn\'t open $FILE: $!");
126: chomp (@lines = <FILE>);
127: close (FILE) || bail ("Couldn't close $FILE: $!");
128: }
129: return @lines;
130: }
131:
132:
133:
134:
135: ########################################################################
136: # *** EncodeURL: %encodes the parameters of the URL
137: sub EncodeURL {
138: my $strURL = shift;
139: $strURL =~ s/(\W)/sprintf("%%%x", ord($1))/eg;
140: return $strURL;
141: }
142:
143:
144:
145:
146: #######################################################################
147: # Bail: this subrouting dies and displays the error to the browser.
148: # gotten from the example in the O'Reilly
149: # _Learning_Perl_on_Win32_Systems_
150: sub bail {
151: my $error = "@_";
152: print "Unexpected Error: $error";
153: exit;
154: }
155:
156:
157: sub Print_Nav
158: {
159: open FILE, 'nav.inc' or die "\n\ncouldn't open FILE nav.inc: $!";
160: while (<FILE>) {
161: print;
162: }
163: close FILE;
164: }
165: sub AddSong
166: {
167: my $filename = shift;
168: $filename =~ s/%(..)/pack("c",hex($1))/ge;
169:
170: if ($filename) {
171: open PLAYLIST, ">>$playlist" or bail("unable to open PLAYLIST: $!");
172: print PLAYLIST "$filename\n";
173: close PLAYLIST or bail("unable to close PLAYLIST: $!");
174: print "Added $filename<br>\n";
175: } else {
176: print "<h1>You need to pass a song</h1>";
177: }
178: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>