=================================================================== RCS file: /cvs/mp3/daemon/playmp3s.pl,v retrieving revision 1.5 retrieving revision 1.7 diff -u -r1.5 -r1.7 --- mp3/daemon/playmp3s.pl 2007/02/08 18:13:33 1.5 +++ mp3/daemon/playmp3s.pl 2010/10/28 20:21:29 1.7 @@ -1,5 +1,5 @@ #!/usr/bin/perl -# $RedRiver: playmp3s.pl,v 1.4 2007/02/08 17:54:38 andrew Exp $ +# $RedRiver: playmp3s.pl,v 1.6 2007/02/08 23:02:30 andrew Exp $ ######################################################################## # PlayMP3.pl *** play's MP3s off a playlist using mp3play # @@ -19,6 +19,7 @@ my $err_log = $cfgs{errors} || "/var/log/playmp3s.log"; +my $Num_History = 0; Print_PlayLog("Beginning playtime\n\n"); @@ -66,6 +67,10 @@ DisplayPlaying($cfgs{currenthtml},$filename); Print_PlayLog("done\n"); + Print_PlayLog("Adding Last. . ."); + AddLast($filename, $cfgs{playedlist}, $Num_History, $cfgs{playedhtml}, $cfgs{addurl}); + Print_PlayLog("done\n"); + if ($save_playlist) { Print_PlayLog("Saving Playlist. . ."); save_playlist($cfgs{list},@playlist) || bail("Unable to save playlist!: $!"); @@ -74,15 +79,20 @@ Print_PlayLog("Playing: $filename . . .\n"); + my $player; + my $play = "$cfgs{basedir}$filename"; if (defined $filename && $filename =~ /\.mp3$/i) { - `$cfgs{mp3play} \"$cfgs{basedir}$filename\"`; + $player = $cfgs{mp3play}; } elsif ($filename =~ /\.ogg$/i) { - my $play = "$cfgs{basedir}$filename"; - $play =~ s/(\(|\)|&|"|'| |-)/\\$1/g; - print "\n\n$play\n\n"; - `$cfgs{oggplay} $play`; + $player = $cfgs{oggplay}; + #$play =~ s/(\(|\)|&|"|'| |-)/\\$1/g; } + if (not $player =~ s/\{\}/"$play"/g) { + $player .= ' "' . $play . '"'; + } + Print_PlayLog("$player\n"); + `$player`; # my $kid = 0; # while ($kid ne -1 && ContinueRun()) { @@ -93,14 +103,6 @@ # } - if ($song) { - Print_PlayLog("Adding Last. . ."); - delete ${ $Full_Playlist{list} }{$song}; - - AddLast($filename, $cfgs{playedlist}, $cfgs{numhistory}, $cfgs{playedhtml}, $cfgs{addurl}); - Print_PlayLog("done\n"); - } - Print_PlayLog("Displaying Nothing . . ."); DisplayPlaying($cfgs{currenthtml},"Nothing"); Print_PlayLog("done\n"); @@ -164,13 +166,19 @@ my %played; @played{@played_list} = (); - delete $Full_Playlist{list}; + my $list_size = 0; foreach my $song (@list) { + $list_size++; $Full_Playlist{list}{$song} = 1 unless (exists $played{$song}); } + my $history = int $list_size * 0.1; + if ($history) { + Print_PlayLog("New history is $history\n"); + $Num_History = $history; + } $Full_Playlist{last_mod} = $last_mod; } @@ -250,7 +258,7 @@ ####################################################################### # Prints a webpage with the previously played song -# AddLast($filename, $cfgs{playedlist}, $cfgs{numhistory}, $cfgs{playedhtml}, $cfgs{addurl}); +# AddLast($filename, $cfgs{playedlist}, $Num_History, $cfgs{playedhtml}, $cfgs{addurl}); sub AddLast { my $lastsong = shift; my $lastlist = shift; @@ -259,10 +267,15 @@ my $addurl = shift; my @LIST = get_playlist($lastlist); + + DisplayPrevious($htmlfile, $addurl, @LIST) if $htmlfile; + unshift @LIST, $lastsong; - splice (@LIST, $history); + splice (@LIST, $history) if $history; save_playlist($lastlist,@LIST); - DisplayPrevious($htmlfile, $addurl, @LIST); + + # Remove song from full list so we don't play it again. + delete $Full_Playlist{list}{$lastsong}; }