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 )