#!/usr/bin/perl use strict; use warnings; use Irssi; use Audio::XMMSClient; our $VERSION = '0.03'; our %IRSSI = ( authors => 'Florian Ragwitz', contact => 'rafl@debian.org', name => 'ixmms2', description => 'Irssi xmms2 client', license => 'GPL', url => 'http://perldition.org/', changes => '2006-10-03', ); our $xmms = Audio::XMMSClient->new( $IRSSI{name} ); $xmms->connect or die; sub cmd_xmms2 { my ($data, $server, $witem) = @_; my $result = $xmms->playback_current_id; $result->wait; $result = $xmms->medialib_get_info( $result->value ); $result->wait; my $artist = $result->value->{ artist }; my $title = $result->value->{ title }; if ($witem && ($witem->{type} eq 'CHANNEL' || $witem->{type} eq 'QUERY')) { $witem->command("say xmms2 is now playing: $artist - $title"); } else { Irssi::print("xmms2 is now playing: $artist - $title"); } } sub cmd_xmms2next { $xmms->playlist_set_next_rel( 1 )->wait; $xmms->playback_tickle->wait; } sub cmd_xmms2prev { $xmms->playlist_set_next_rel( -1 )->wait; $xmms->playback_tickle->wait; } sub cmd_xmms2stop { $xmms->playback_stop->wait; } sub cmd_xmms2pause { $xmms->playback_pause->wait; } sub cmd_xmms2play { $xmms->playback_start->wait; } sub cmd_xmms2shuffle { $xmms->playlist_shuffle->wait; } for my $cmd (qw( xmms2 xmms2next xmms2prev xmms2stop xmms2pause xmms2play xmms2shuffle )) { Irssi::command_bind( $cmd => "cmd_$cmd" ); }