1# XMMS/InfoPipe script for the Irssi client. You need a few things 2# installed before this script will work... 3# 1) Irssi, http://irssi.org/ 4# 2) XMMS, http://www.xmms.org/ 5# 3) InfoPipe, http://www.beastwithin.org 6# /users/wwwwolf/code/xmms/infopipe.html 7# 8# xmms2.pl is a version of xmms.pl slightly modified by Sir Robin, 9# sir@robsku.cjb.net / http://robsku.cjb.net/ 10# 11# The script now outputs by default to the active window, instead of 12# status window. Also removed percentage meter as it didn't work. Only 13# two lines were modified and the original lines still exist, just 14# commented out. 15# 16# If you have trouble installing any of these, consult the READMEs that 17# come with the software, thank you. 18# 19# Fixed a few vital things adviced by kodgehopper at netscape dot net. 20# Very appreciated as I had no chance of testing a few of these things 21# myself. I hope everything works as it should now. 22# 23# Visit http://scripts.irssi.de/ 24# 25# simon at blueshell dot dk 26use Irssi; 27use vars qw($VERSION %IRSSI); 28use strict; 29 30$VERSION = '1.1.3+1'; 31%IRSSI = ( 32 authors => 'simon', 33 contact => 'simon\@blueshell.dk', 34 name => 'XMMS-InfoPipe Script', 35 description => 'Returns XMMS-InfoPipe data', 36 license => 'Public Domain', 37 url => 'http://irssi.dk/', 38 changed => 'Mon Nov 27 18:00:00 CET 2006', 39 commands => '/np', 40 note => 'Make sure InfoPipe is configured!' 41); 42 43sub cmd_xmms { 44 my ($args, $server, $target) = @_; 45 $args =~ s/\s+$//; #fix unneeded whitespaces after output dest. 46 47 my (@t, $t, $ttotal, @pos, $pos, $postotal, $title); 48 open xmms, "<", '/tmp/xmms-info' || die; # if nothing happens, it probably 49 # failed here! 50 51 while(<xmms>) { 52 if(/^Time: (.*)$/) { 53 @t = split(/:/, $1); 54 $t = $1; 55 $t =~ s/^([0-9]*):([0-9]{2})$/\1m\2s/; # convert to nice format 56 $ttotal = $t[0] + $t[1]*60; 57 } 58 if(/^Position: (.*)$/) { 59 @pos = split(/:/, $1); 60 $postotal = $pos[0] + $pos[1]*60; 61 } 62 if(/^Title: (.*)$/) { $title = $1; } 63 } 64 close xmms; 65 66 if(!$ttotal || !$postotal) { 67 Irssi::print "An error occurred. Check if XMMS is running and your"; 68 Irssi::print "InfoPipe module is running properly. If not, read how"; 69 Irssi::print "to get these up and running by reading the script source"; 70 die; 71 } 72 73 $pos = sprintf("%.0f", $postotal / $ttotal * 100); # calc. position 74# my $output = "np: $title ($pos% of $t)"; 75 my $output = "np: $title ($t)"; 76 $output =~ s/[\r\n]/ /g; # remove newline characters 77 if(!$server || !$server->{connected}) { # are we even connected? 78 Irssi::print $output; 79 return 80 } 81 if($args) { $server->command("msg $args $output"); } 82 else { Irssi::active_win()->command('say ' . $output); } 83# else { Irssi::print $output; } 84} 85 86Irssi::command_bind('np', 'cmd_xmms'); 87