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