summaryrefslogtreecommitdiffstats
path: root/scripts/xmmsinfo.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/xmmsinfo.pl')
-rw-r--r--scripts/xmmsinfo.pl116
1 files changed, 116 insertions, 0 deletions
diff --git a/scripts/xmmsinfo.pl b/scripts/xmmsinfo.pl
new file mode 100644
index 0000000..46fd842
--- /dev/null
+++ b/scripts/xmmsinfo.pl
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+
+# $Id: xmmsinfo.pl,v 1.1.1.1 2002/03/24 21:00:55 tj Exp $
+#
+# Copyright (0) 2002 Tuomas Jormola <tjormola@cc.hut.fi
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# The complete text of the GNU General Public License can be found
+# on the World Wide Web: <URL:http://www.gnu.org/licenses/gpl.html>
+#
+# $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 => 'tjormola@cc.hut.fi',
+ 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 <file>\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("<URL:www.iki.fi/wwwwolf/code/xmms/infopipe.html");
+ Irssi::print("");
+ Irssi::print("Usage: /xmmsinfo [TARGET]");
+ Irssi::print("If TARGET is given, the info is sent there, othwerwise to");
+ Irssi::print("the current active channel/query or Irssi status window");
+ Irssi::print("if you have no channel/query window active.");
+ Irssi::print("Target can be nick name or channel name");
+ Irssi::print("");
+ Irssi::print("Configuration: /set xmms_info_pipe <file>");
+ 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