use strict; use Xmms::Remote (); use Irssi qw(command_bind signal_add); my $remote = Xmms::Remote->new; sub cmd_xmms { my ($data, $server, $window) = @_; my $title = $remote->get_playlist_title(); my $fileid = $remote->get_playlist_pos; $window->command("/ME Playing \002$title\002. One tit? Type \002!fetch $fileid\002"); } sub cmd_a { $remote->playlist_next(); } sub cmd_xmmssend { my ($data, $server, $window) = @_; my $file = $remote->get_playlist_file(); $window->command("/dcc send $data \"$file\""); } sub cmd_dig { my ($data, $server, $window) = @_; my $pattern = $data; $pattern =~ s/([^.]|^)\*/$1 . ".*"/eg; my (@results, $c); foreach (@{$remote->get_playlist_titles}) { if (m/$pattern/i) { push @results, $c; } $c++; } $remote->set_playlist_pos($results[0]); } sub sig_msg { my ($server, $msg, $nick, $address, $target) = @_; my @words = split(/ /,$msg); if (lc($words[0]) eq "!fetch") { my $file = $remote->get_playlist_file($words[1]); $server->command("/DCC send $nick \"$file\""); } elsif (lc($words[0]) eq "!random") { my $length = $remote->get_playlist_length(); my $file = $remote->get_playlist_file(int(rand($length))); $server->command("/DCC send $nick \"$file\""); } } Irssi::command_bind("xmms", "cmd_xmms"); Irssi::command_bind("xmmssend", "cmd_xmmssend"); Irssi::command_bind("a", "cmd_a"); Irssi::command_bind("dig", "cmd_dig"); signal_add("message public", "sig_msg");