Added PLAYING, made PLAY more sophisticated, added some debugging.

git-svn-id: https://samskivert.googlecode.com/svn/trunk@139 6335cc39-0255-0410-8fd6-9bcaacd3b74c
This commit is contained in:
mdb
2001-06-05 16:40:53 +00:00
parent 0f9f4f2e5c
commit 6d6eed4fc7
+41 -4
View File
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
#
# $Id: musicd,v 1.3 2001/03/22 02:59:13 mdb Exp $
# $Id: musicd,v 1.4 2001/06/05 16:40:53 mdb Exp $
#
# MP3 audio server. Manages playlists of mp3 files that live on a local
# filesystem. The playlsits can be manipulated by connecting to the server
@@ -10,6 +10,7 @@ use strict;
use IO::Socket;
use IO::Select;
use MPEG::MP3Play;
use Data::Dumper;
# this is what's currently being played
my $playing;
@@ -106,15 +107,30 @@ sub handle_client
foreach $path (@playlist) {
print $cfh "$path\n";
}
return 1;
} elsif ($input =~ m/^PLAYING/) {
print $cfh "200 Currently playing: " .
(defined $playing ? $playing : "<none>") . "\n";
} elsif ($input =~ m/^STOP/) {
$mp3->stop();
print $cfh "200 Music stopped.\n";
} elsif ($input =~ m/^PLAY/) {
# if we've already queued up a song, play it
if (defined $playing) {
$mp3->play();
} else {
# otherwise queue one up to play
play_next_tune();
}
# and report back based on whether or not we successfully queued
# up a song for playing
if (defined $playing) {
print $cfh "200 Music started.\n";
} else {
print $cfh "501 Can't play: playlist empty.\n";
}
} elsif ($input =~ m/^PAUSE/) {
$mp3->pause();
@@ -164,8 +180,29 @@ package MPEG::MP3Play;
sub msg_notify_player_state
{
my ($mp3, $msg) = @_;
print "state: " . Dumper($msg) . "\n";
# play the next tune if we hit the end of this one
main::play_next_tune()
if ($msg->{state} == &XA_PLAYER_STATE_EOF);
if ($msg->{state} == &XA_PLAYER_STATE_EOF) {
main::play_next_tune();
}
return 1;
}
sub msg_notify_error
{
my ($mp3, $msg) = @_;
print "error: " . Dumper($msg) . "\n";
return 1;
}
sub msg_notify_debug
{
my ($mp3, $msg) = @_;
if ($msg->{code} == &XA_ERROR_NO_SUCH_FILE) {
print "unable to load: $playing\n";
} else {
print "debug: " . Dumper($msg) . "\n";
}
print "nsf: " . &XA_ERROR_NO_SUCH_FILE . "\n";
return 1;
}