#!/usr/bin/perl -w # $RedRiver: addsearch.pl,v 1.3 2007/02/08 20:04:03 andrew Exp $ ######################################################################## # Search.pl *** Searches the full list of songs and finds matches. # # 04-14-00 # Written by andrew fresh ######################################################################## use strict; use diagnostics; #use MP3::Info; #my qw/ @playlist $maplay $filename $basedir $htmldir /; my $exe = 'addmp3playlist.pl'; my $Search = 'search.pl'; ####################################################################### # *** MAIN *** ####################################################################### my $prefix = $ENV{'QUERY_STRING'}; if ($prefix) { $prefix =~ s/%(..)/pack("c",hex($1))/ge; } else { $prefix =''; } print "Content-Type: text/html\n\n"; print "\n\n\n\n\t MP3 Search\n"; #print "\n"; print "\n\n"; #Print_Nav(); print "

Adding MP3's . . .


\n"; use CGI qw/:standard/; use CGI::Carp qw/fatalsToBrowser/; my $Query = new CGI; my @playlist; my $Search_Term = $Query->param('Search_Term'); my @Fields_To_Search = $Query->param('Fields'); @Fields_To_Search = ('Artist', 'Album', 'Song') unless @Fields_To_Search; my $listfile = $prefix . 'fulllist.lst'; my $list = '/var/www/mp3/playlist/' . $listfile; my $playlist = '/var/www/mp3/playlist/' . $prefix . 'playlist.lst'; if ($prefix && $Query->param('Submit') eq 'Approve All') { $playlist = '/var/www/mp3/playlist/' . $prefix . 'fulllist.lst'; } #print $Query->header; #print "Search_Term: $Search_Term
\n"; print $Query->start_form(-action=>$Search); # $Query->hidden('Fields', \@Fields_To_Search); print "Search For: ", $Query->textfield(-name=>'Search_Term', -size=>70, -maxlength=>80); # print $Query->checkbox_group(-name=>'Fields', # -values=>[@Fields_To_Search], # -default=>[@Fields_To_Search], ## -linebreak=>'true', # ), br(); print $Query->submit(-name=>'Submit', -value=>'Submit'), $Query->end_form; if ($Search_Term) { print "Found "; @playlist = Search($list, \@Fields_To_Search, $Search_Term); print scalar @playlist; print " Songs

\n"; #List_Recipes(%recipes); if (@playlist) { my $counter; print "
\n"; foreach my $filename (@playlist) { #print "\t

  • $filename
  • \n"; AddSong($filename); $counter++; } print "

    Total displayed: $counter

    \n"; } else { print "\t
  • Nothing in list
  • \n"; } } print "\n\n\n\n"; ######################################################################### # GetTime sub GetTime { my $hours = shift; my ($sec,$min,$hour,$mday,$mon,$year,,,) = localtime(); # 86400 seconds is one day if ($min < 10) { $min = "0$min"} if ($sec < 10) { $sec = "0$sec"} if ($hour < 10) { $hour = "0$hour"} if ($mday < 10) { $mday = "0$mday"} if ($mon < 10) { $mon = "0$mon"} my $time = ($year + 1900) . '-' . ++$mon . '-' . $mday . ' ' . $hour . ':' . $min . ':' . $sec; return $time; } ######################################################################### ####################################################################### # read in the Playlist sub Search { my $FILE = shift; my $fields = shift; my $term = shift; my @lines; open (FILE, $FILE) || bail ("Couldn\'t open $FILE: $!"); while () { if (/$term/i) { chomp; push @lines, $_; } } close (FILE) || bail ("Couldn't close $FILE: $!"); return @lines; } ######################################################################## # *** EncodeURL: %encodes the parameters of the URL sub EncodeURL { my $strURL = shift; $strURL =~ s/(\W)/sprintf("%%%x", ord($1))/eg; return $strURL; } ####################################################################### # Bail: this subrouting dies and displays the error to the browser. # gotten from the example in the O'Reilly # _Learning_Perl_on_Win32_Systems_ sub bail { my $error = "@_"; print "Unexpected Error: $error"; exit; } sub Print_Nav { open FILE, 'nav.inc' or die "\n\ncouldn't open FILE nav.inc: $!"; while () { print; } close FILE; } sub AddSong { my $filename = shift; $filename =~ s/%(..)/pack("c",hex($1))/ge; if ($filename) { open PLAYLIST, ">>$playlist" or bail("unable to open PLAYLIST: $!"); print PLAYLIST "$filename\n"; close PLAYLIST or bail("unable to close PLAYLIST: $!"); print "Added $filename
    \n"; } else { print "

    You need to pass a song

    "; } }