=================================================================== RCS file: /cvs/mp3/bin/mixer.pl,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- mp3/bin/mixer.pl 2007/02/08 20:04:03 1.3 +++ mp3/bin/mixer.pl 2011/06/14 18:04:58 1.4 @@ -1,5 +1,5 @@ #!/usr/bin/perl -Tw -# $RedRiver: mixer.pl,v 1.2 2006/08/12 00:14:53 andrew Exp $ +# $AFresh1$ ######################################################################## # Mixer.pl *** Changes volume on the MP3 player # @@ -7,7 +7,7 @@ # Written by andrew fresh ######################################################################## use strict; -use diagnostics; +use warnings; my $mixerctl = '/usr/bin/mixerctl'; @@ -15,69 +15,67 @@ delete $ENV{PATH} if exists $ENV{PATH}; +my $paused_file = '/var/www/mp3/playlist/paused'; my @Vols = ( - [ 7, 7], - [ 15, 15], - [ 23, 23], - [ 31, 31], - [ 39, 39], - [ 47, 47], - [ 55, 55], - [ 63, 63], - [ 71, 71], - [ 79, 79], - [ 87, 87], - [ 95, 95], - [103, 103], - [111, 111], - [119, 119], - [127, 127], - [135, 135], - [143, 143], - [151, 151], - [159, 159], - [167, 167], - [175, 175], - [183, 183], - [191, 191], - [199, 199], - [207, 207], - [215, 215], - [223, 223], - [231, 231], - [239, 239], - [247, 247], - [255, 255], + 7, + 15, + 23, + 31, + 39, + 47, + 55, + 63, + 71, + 79, + 87, + 95, + 103, + 111, + 119, + 127, + 135, + 143, + 151, + 159, + 167, + 175, + 183, + 191, + 199, + 207, + 215, + 223, + 231, + 239, + 247, + 255, ); my $Cur_Vol = `$mixerctl outputs.master`; #»print "Cur_Vol $Cur_Vol
\n"; $Cur_Vol =~ /outputs.master=(\d+),(\d+)/i; -my $Cur_Vol_Left = $1; -my $Cur_Vol_Right = $2; +$Cur_Vol = ($1 + $2) / 2; +my $pause_action = 'pause'; +if (-e $paused_file) { + $pause_action = 'play'; +} print "Content-Type: text/html\n\n"; print "\n\n\t "; -my ($prefix, $New_Vol_Left, $New_Vol_Right) = split /\&/, $ENV{'QUERY_STRING'}; -if ($New_Vol_Left || $New_Vol_Right) { - $New_Vol_Left =~ s/%(..)/pack("c",hex($1))/ge; - $New_Vol_Right =~ s/%(..)/pack("c",hex($1))/ge; +my ($prefix, $action) = split /\&/, $ENV{'QUERY_STRING'}; +$prefix ||= ''; +if ($action) { + $prefix =~ s/%(..)/pack("c",hex($1))/ge if $prefix; + $action =~ s/%(..)/pack("c",hex($1))/ge; + print ""; -} -$New_Vol_Left ||= $Cur_Vol_Left; -$New_Vol_Right ||= $Cur_Vol_Right; + if ($action eq 'pause') { $pause_action = Pause($pause_action) } + elsif ($action =~ /^(\d+)$/) { $Cur_Vol = Set_Vol($Cur_Vol, $1); } -if ($New_Vol_Left =~ /(\d+)/) { $New_Vol_Left = $1; } -if ($New_Vol_Right =~ /(\d+)/) { $New_Vol_Right = $1; } - -if ($prefix) { - $prefix =~ s/%(..)/pack("c",hex($1))/ge; -} else { - $prefix =''; } print <\n"; - my @nav; +push @nav, "$pause_action\n"; +push @nav, " - Volume: "; + foreach my $vol (@Vols) { - if ($$vol[0] == $New_Vol_Left) { - push @nav, "$$vol[0]\n"; - } elsif ($$vol[0] < $New_Vol_Left) { - push @nav, "}\n"; - } elsif ($$vol[0] > $New_Vol_Left) { - push @nav, "]\n"; - } - #print "$vol - $$vol[0] - $$vol[1]
\n"; + my ($char, $class) = ($vol, 'up'); + + if ($vol > $Cur_Vol) { ($char, $class) = ('}', 'up'); } + elsif ($vol < $Cur_Vol) { ($char, $class) = (']', 'down'); } + + push @nav, "$char\n"; + } print join " ", @nav; #print "
\n"; - -Set_Vol($Cur_Vol_Left, $Cur_Vol_Right, $New_Vol_Left, $New_Vol_Right); } print "\n\n\n"; @@ -129,39 +126,36 @@ sub Set_Vol { - my $old_vol_right = shift; - my $old_vol_left = shift; - my $new_vol_left = shift; - my $new_vol_right = shift; + my ($old, $new) = @_; - my $old_vol; - my $new_vol; - if (($old_vol_left + $old_vol_right) > ($new_vol_left + $new_vol_right)) { - $old_vol = $old_vol_left > $old_vol_right ? $old_vol_left : $old_vol_right; - $new_vol = $new_vol_left < $new_vol_right ? $new_vol_left : $new_vol_right; - } else { - $old_vol = $old_vol_left < $old_vol_right ? $old_vol_left : $old_vol_right; - $new_vol = $new_vol_left > $new_vol_right ? $new_vol_left : $new_vol_right; - } - - #print "Old: $old_vol - New: $new_vol
\n"; - my $Set_Vol; - - foreach my $vol ($old_vol < $new_vol ? $old_vol..$new_vol : reverse $new_vol..$old_vol) { - #print "$vol
\n"; + foreach my $vol ($old < $new ? $old..$new : reverse $new..$old) { $Set_Vol = `$mixerctl -w outputs.master=$vol,$vol`; - #print $Set_Vol . "
\n"; } - return $Set_Vol; + return $new; } +sub Pause { + my ($action) = @_; + if ($action eq 'play') { + unlink $paused_file; + return 'pause'; + } + else { + open my $fh, '>', $paused_file or die; + print $fh time; + close $fh; + return 'play'; + } +} + + ######################################################################## # *** EncodeURL: %encodes the parameters of the URL sub EncodeURL { - my $strURL = shift; + my $strURL = shift || ''; $strURL =~ s/(\W)/sprintf("%%%x", ord($1))/eg; return $strURL; }