#!/usr/bin/perl

use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

my $DB="/home/vorbau/mp3db";

print header;

if (!param()) {

   print start_form,
         "Search:   ",
         textfield('search','',24,128),
         submit('Lookup'),
         end_form;

}
else {

   print start_form,
         "Search:   ",
         textfield('search','',24,128),
         submit('Lookup'),
         end_form;


   my $date = localtime;

   $orig_search = param(search);
   $search = &indep(param(search));
   $search =~ s/ /\[ _-\]/g;

   open(LOG,">>search.log");
   print LOG "$date - $ENV{'REMOTE_ADDR'} - $orig_search\n";
   close(LOG);

   my $total=0;

   print "<h2>Search results:</h2><br>\n\n";
#   print "Query: $orig_search<br>\n";

   print "<table bgcolor=#ffffff>\n";
   print "<tr bgcolor=#358acc><td>CD</td><td>Directory</td><td>Song</td></tr>\n";

   @CD = `ls $DB/mp3_*`;
   
   foreach $abscd (@CD) {
      chomp;
   
      open(CD, "$abscd");

      $cd = (split(/\//,$abscd))[4];

      while (<CD>) {
         chomp;

         if ( /$search.*\.mp[g3]/ ) {
            chomp;

            ($dir, @mp3) = (/^\/cdrom(\/.+\/|\/)(.+\.mp[g3])/);

            if (@mp3 >= 2) { 
               $mp3=$mp3[1]; 
               $dir = substr($dir,1);
               $dir = $dir."/".$mp3[0]; 
            }
            else {
               $dir = substr($dir,1) unless ($dir eq "/");
               $mp3 = $mp3[0];
            }

            print "<tr><td>$cd</td><td>$dir</td><td>$mp3</td></tr>\n";
            $total++;

         }
      }

      close(CD);
   }
   
   print "</table>\n";
   print "Total: $total<br>\n";

   print "<p>$date : $ENV{'REMOTE_ADDR'}<br>\n";
}

print end_html;


exit;

sub indep {

   my $tmp = shift(@_);
   my $str = "";

   my $uc = uc($tmp);
   my $lc = lc($tmp);

   my $len = length($tmp);

   my @uc=split(//,$uc);
   my @lc=split(//,$lc);

   for $i (0 .. ($len-1)) {

      if ($uc[$i] !~ /\W/ && $lc[$i] !~ /\W/) {
         $str = $str."[".$uc[$i].$lc[$i]."]";
      }    
      else { $str = $str.$uc[$i]; }
   }

   return $str;
}

