Audio-Daemon
view release on metacpan or search on metacpan
Daemon/Xmms.pm view on Meta::CPAN
package Audio::Daemon::Xmms;
use strict;
use Audio::Daemon;
use IO::Socket;
use IO::Select;
use Xmms ();
use Xmms::Remote ();
use Xmms::Config ();
use MP3::Info;
use vars qw(@ISA $VERSION);
@ISA = qw(Audio::Daemon);
$VERSION='0.99Beta';
sub new {
my $class = shift;
my $self = $class->SUPER::new(@_);
bless $self, $class;
$self->remote(Xmms::Remote->new);
$self->config(Xmms::Config->new(Xmms::Config->file));
my $remote = $self->remote;
unless ($remote->is_running) {
exec "xmms" unless (fork());
sleep 1;
}
$self->{state} = {random => $remote->is_shuffle, repeat => $remote->is_repeat};
return $self;
}
sub remote {
my $self = shift;
$self->{_remote} = shift if (scalar @_);
return $self->{_remote};
}
sub config {
my $self = shift;
$self->{_config} = shift if (scalar @_);
return $self->{_config};
}
sub stop {
my $self = shift;
$self->remote->stop;
}
sub play {
my $self = shift;
my $remote = shift;
if (defined $remote->{args}[0]) {
$self->info("trying to play index: ".$remote->{args}[0]);
$self->remote->set_playlist_pos($remote->{args}[0]);
}
$self->remote->play;
}
sub pause {
my $self = shift;
$self->remote->pause;
}
sub add {
my $self = shift;
my $remote = shift;
$self->remote->playlist($remote->{args});
}
sub del {
my $self = shift;
my $remote = shift;
if ($remote->{args}[0] eq 'all') {
$self->remote->stop;
$self->remote->playlist_clear;
} else {
foreach (sort { $b <=> $a } @{$remote->{args}}) {
$self->debug("Trying to remove index: $_");
( run in 0.995 second using v1.01-cache-2.11-cpan-a9496e3eb41 )