#!/usr/bin/perl # $Id: xmmsinfo.pl,v 1.1.1.1 2002/03/24 21:00:55 tj Exp $ # # Copyright (0) 2002 Tuomas Jormola # # $Log: xmmsinfo.pl,v $ # Revision 1.1.1.1 2002/03/24 21:00:55 tj # Initial import. # # # TODO: # * Configurable string to print (%t = title, %a = artist ...) use strict; use Irssi; use Irssi::XMMSInfo; use vars qw($VERSION %IRSSI); # global variables $VERSION = sprintf("%d.%02d", q$Revision: 1.1.1.2 $ =~ /^.+?(\d+)\.(\d+)/); %IRSSI = ( authors => 'Tuomas Jormola', contact => '[email protected]', name => 'XMMSInfo', description => '/xmmsinfo to tell what you\'re currently playing', license => 'GPLv2', url => 'http://shakti.tky.hut.fi/stuff.xml#irssi', changed => '2006-1027T18:00+0300', ); if(runningUnderIrssi()) { Irssi::settings_add_str('misc', 'xmms_info_pipe', '/tmp/xmms-info'); Irssi::command_bind('xmmsinfo', 'commandXmmsInfo'); Irssi::print("$IRSSI{name} $VERSION loaded, /xmmsinfo -help"); } else { (my $s = $0) =~ s/.*\///; $ARGV[0] || die("Usage: $s \n"); commandXmmsInfo(); } # command handler sub commandXmmsInfo { my($args, $server, $target) = @_; if(lc($args) eq "-help") { Irssi::print("XMMSInfo $VERSION by $IRSSI{authors} <$IRSSI{contact}>"); Irssi::print(""); Irssi::print("Displays what your XMMS is playing using information"); Irssi::print("provided by the XMMS InfoPipe plugin"); Irssi::print(""); Irssi::print("Define filename of the pipe where from the InfoPipe output is read"); Irssi::print("Default is /tmp/xmms-info"); return; } my($p) = runningUnderIrssi() ? Irssi::settings_get_str('xmms_info_pipe') : $ARGV[0]; my($i) = XMMSInfo->new; $i->getInfo(pipe => $p); my($o) = "XMMS: " . $i->getStatusString; if($i->isFatalError) { $o .= ": " . $i->getError; } elsif($i->isXmmsRunning) { my($t) = $i->infoTitle || "(unknown song)"; my($a) = $i->infoArtist || "(unknown artist)"; my($g) = lc($i->infoGenre) || "(unknown genre)"; my($pos) = $i->infoMinutesNow . "m" . $i->infoSecondsNowLeftover."s"; my($tot) = $i->infoMinutesTotal . "m" . $i->infoSecondsTotalLeftover."s"; my($per) = $i->infoPercentage; my($b) = $i->infoBitrate . "kbps"; my($f) = $i->infoFrequency . "kHz"; $o .= " $g tune $t by $a." if ($i->isPlaying || $i->isPaused); $o .= " Played $pos of total $tot ($per%)." if $i->isPlaying; $o .= " [$b/$f]" if ($i->isPlaying || $i->isPaused); } if(!runningUnderIrssi()) { print "$o\n"; } elsif($i->isFatalError || !$server || !$server->{connected} || (!$args && !$target)) { Irssi::print($o); } else { $o =~ s/[\r\n]/ /g; # remove newline characters my($t) = $args || $target->{name}; $server->command("msg $t $o"); } } sub runningUnderIrssi { $0 eq '-e'; } # END OF SCRIPT