Annotation of mp3/bin/addsearch.pl, Revision 1.1
1.1 ! andrew 1: #!/usr/bin/perl -w
! 2: ########################################################################
! 3: # Search.pl *** Searches the full list of songs and finds matches.
! 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/ @playlist $maplay $filename $basedir $htmldir /;
! 13:
! 14: my $listfile = 'fulllist.lst';
! 15:
! 16: my $list = '/var/www/mp3/playlist/' . $listfile;
! 17:
! 18: my $playlist = '/var/www/mp3/playlist/playlist.lst';
! 19:
! 20: my $exe = 'addmp3playlist.pl';
! 21: my $Search = 'search.pl';
! 22:
! 23: #######################################################################
! 24: # *** MAIN ***
! 25: #######################################################################
! 26:
! 27:
! 28: print "Content-Type: text/html\n\n";
! 29: print "\n\n<html>\n<head>\n\t<meta HTTP-EQUIV='Pragma' CONTENT='no-cache'> <title>MP3 Search</title>\n";
! 30: #print "<meta HTTP-EQUIV=\"REFRESH\" CONTENT=\"300\">\n";
! 31: print "<body>\n\n";
! 32:
! 33:
! 34: #Print_Nav();
! 35:
! 36: print "<h1>Adding MP3's . . .</h1><hr>\n";
! 37:
! 38: use CGI qw/:standard/;
! 39: use CGI::Carp qw/fatalsToBrowser/;
! 40:
! 41: my $Query = new CGI;
! 42:
! 43: my @playlist;
! 44:
! 45: my $Search_Term = $Query->param('Search_Term');
! 46: my @Fields_To_Search = $Query->param('Fields');
! 47: @Fields_To_Search = ('Artist', 'Album', 'Song') unless @Fields_To_Search;
! 48:
! 49:
! 50: #print $Query->header;
! 51: #print "Search_Term: $Search_Term<br>\n";
! 52:
! 53: print $Query->start_form(-action=>$Search);
! 54: # $Query->hidden('Fields', \@Fields_To_Search);
! 55:
! 56: print "Search For: ",
! 57: $Query->textfield(-name=>'Search_Term',
! 58: -size=>70,
! 59: -maxlength=>80);
! 60:
! 61: # print $Query->checkbox_group(-name=>'Fields',
! 62: # -values=>[@Fields_To_Search],
! 63: # -default=>[@Fields_To_Search],
! 64: ## -linebreak=>'true',
! 65: # ), br();
! 66:
! 67:
! 68: print $Query->submit(-name=>'Submit',
! 69: -value=>'Submit'),
! 70: $Query->end_form;
! 71:
! 72: if ($Search_Term) {
! 73: print "Found ";
! 74:
! 75: @playlist = Search($list, \@Fields_To_Search, $Search_Term);
! 76:
! 77: print scalar @playlist;
! 78: print " Songs<P>\n";
! 79:
! 80: #List_Recipes(%recipes);
! 81:
! 82:
! 83: if (@playlist) {
! 84: my $counter;
! 85:
! 86: print "<br>\n";
! 87: foreach my $filename (@playlist) {
! 88: #print "\t<li><a href=\"$exe\?" . EncodeURL($filename) . "\" target=\"bottom\">$filename</a></li>\n";
! 89: AddSong($filename);
! 90: $counter++;
! 91: }
! 92: print "<H3>Total displayed: $counter</h3>\n";
! 93: } else {
! 94: print "\t<li>Nothing in list</li>\n";
! 95: }
! 96: }
! 97:
! 98:
! 99:
! 100: print "</UL>\n</body>\n</head>\n</html>\n";
! 101:
! 102:
! 103:
! 104:
! 105:
! 106:
! 107:
! 108:
! 109:
! 110:
! 111:
! 112:
! 113:
! 114:
! 115:
! 116:
! 117: #########################################################################
! 118: # GetTime
! 119: sub GetTime {
! 120: my $hours = shift;
! 121: my ($sec,$min,$hour,$mday,$mon,$year,,,) = localtime(); # 86400 seconds is one day
! 122:
! 123: if ($min < 10) { $min = "0$min"}
! 124: if ($sec < 10) { $sec = "0$sec"}
! 125: if ($hour < 10) { $hour = "0$hour"}
! 126: if ($mday < 10) { $mday = "0$mday"}
! 127: if ($mon < 10) { $mon = "0$mon"}
! 128:
! 129: my $time = ($year + 1900) . '-' . ++$mon . '-' . $mday . ' ' . $hour . ':' . $min . ':' . $sec;
! 130: return $time;
! 131: }
! 132: #########################################################################
! 133:
! 134:
! 135:
! 136:
! 137:
! 138: #######################################################################
! 139: # read in the Playlist
! 140: sub Search {
! 141: my $FILE = shift;
! 142: my $fields = shift;
! 143: my $term = shift;
! 144: my @lines;
! 145: open (FILE, $FILE) || bail ("Couldn\'t open $FILE: $!");
! 146: while (<FILE>) {
! 147: if (/$term/i) {
! 148: chomp;
! 149: push @lines, $_;
! 150: }
! 151: }
! 152: close (FILE) || bail ("Couldn't close $FILE: $!");
! 153: return @lines;
! 154: }
! 155:
! 156:
! 157:
! 158:
! 159: ########################################################################
! 160: # *** EncodeURL: %encodes the parameters of the URL
! 161: sub EncodeURL {
! 162: my $strURL = shift;
! 163: $strURL =~ s/(\W)/sprintf("%%%x", ord($1))/eg;
! 164: return $strURL;
! 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 = "@_";
! 176: print "Unexpected Error: $error";
! 177: exit;
! 178: }
! 179:
! 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: }
! 189:
! 190: sub AddSong
! 191: {
! 192: my $filename = shift;
! 193: $filename =~ s/%(..)/pack("c",hex($1))/ge;
! 194:
! 195: if ($filename) {
! 196: open PLAYLIST, ">>$playlist" or bail("unable to open PLAYLIST: $!");
! 197: print PLAYLIST "$filename\n";
! 198: close PLAYLIST or bail("unable to close PLAYLIST: $!");
! 199: print "Added $filename<br>\n";
! 200: } else {
! 201: print "<h1>You need to pass a song</h1>";
! 202: }
! 203: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>