summaryrefslogtreecommitdiffstats
path: root/scripts/amaroknp.pl
diff options
context:
space:
mode:
authorAlexander Færøy2014-05-31 13:10:46 +0200
committerAlexander Færøy2014-05-31 13:10:46 +0200
commit2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch)
tree1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/amaroknp.pl
parent2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff)
downloadscripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/amaroknp.pl')
-rw-r--r--scripts/amaroknp.pl116
1 files changed, 116 insertions, 0 deletions
diff --git a/scripts/amaroknp.pl b/scripts/amaroknp.pl
new file mode 100644
index 0000000..22b68de
--- /dev/null
+++ b/scripts/amaroknp.pl
@@ -0,0 +1,116 @@
+#!/usr/bin/perl
+
+# amaroknp.pl (0.1)
+
+# This is a simple script for irssi which (attempts to) show the current song played
+# by amaroK in the current channel or query window. It should output something like
+# this: <@mynick> np: Artist - Song (1:34 / 4:05). This script has been tested to work
+# with amaroK 0.9, KDE 3.2.1 and irssi 0.8.9 (on Linux). Might not work with older
+# versions of amaroK.
+
+# !! The only thing you might want to change is $dcopbin (line 45) !!
+# !! and the format of $output (line 102) !!
+
+# TODO
+# - Cleaning up this mess :)
+# - Setting options
+# - Simple controls (play, pause, next, previous..)
+
+use vars qw($VERSION %IRSSI);
+use Irssi;
+use strict;
+$VERSION = '0.10';
+%IRSSI = (
+ authors => 'Tuukka Lukkala',
+ contact => 'ragdim at mbnet dot fi',
+ name => 'amaroknp',
+ description => 'Shows the song playing in amaroK in the active window (channel or query).',
+ license => 'GPL',
+ url => 'http://koti.mbnet.fi/ragdim/amaroknp/',
+ changed => 'Tue Mar 30 23:20 EET 2004',
+);
+
+# !! Adjust this to the full path of dcop if it's not in your PATH. eg. /opt/kde/bin/dcop !!
+my $dcopbin = "dcop";
+
+# Let's check if we have dcop..
+if (!`$dcopbin`) {
+ die "Couldn't find dcop executable.. Make sure dcop is in your PATH or edit dcoppath in the script";
+}
+
+sub cmd_amaroknp_help {
+
+print "";
+print "amaroknp script v0.1 for irssi";
+print "To announce the current song, type: /amarok";
+print "Requires KDE and amaroK";
+print "";
+
+}
+
+sub cmd_amaroknp {
+
+ my ($data, $server, $witem) = @_;
+ my $playing; # Whether amaroK is playing something or not
+ my $song; # The song currently playing
+ my $timenow; # Current position in the song
+ my $timetotal; # Total length of teh song
+ my $minutes; # Current time converted to full minutes
+ my $seconds; # Current time converted to seconds
+ my $minutestotal; # Total amount of minutes
+ my $secondstotal; # Total amount of seconds
+ my $output; # The format in which all this is going -> channel
+ my $amaroktest; # To see if amarok is running or not
+ my $amarokNOTrunning; # Don't ask me.. :z
+
+ # ..and if amaroK is running (fix)
+ $amaroktest = `$dcopbin amarok 2> /dev/null`;
+ chomp($amaroktest);
+ if ($amaroktest =~ s/^$/No such application: 'amarok'/) {
+ print "amaroK isn't running?";
+ $amarokNOTrunning="nope";
+ }
+ # if amaroK is running, let's get teh infos!
+ if (!$amarokNOTrunning) {
+ $playing = `$dcopbin amarok default isPlaying`;
+ chomp($playing);
+ if ($playing eq 'false') {
+ print "amaroK isn't playing anything =I";
+ }
+
+ else {
+ # Get some infos
+ $song = `$dcopbin amarok default nowPlaying`;
+ chomp($song);
+ $timenow = `$dcopbin amarok default trackCurrentTime`;
+ # Converting times to a more readable format
+ $minutes = ($timenow/60)%60;
+ $seconds = $timenow%60;
+ # Add the leading zero
+ if ($seconds < 10) {
+ $seconds = "0" . $seconds;
+ }
+ $timetotal = `$dcopbin amarok default trackTotalTime`;
+ $timetotal = $timetotal/1000;
+ $minutestotal = ($timetotal/60)%60;
+ $secondstotal = $timetotal%60;
+ # Here too
+ if ($secondstotal < 10) {
+ $secondstotal = "0" . $secondstotal;
+ }
+ # The way it's gonna show up when we do /amarok
+ $output = "np: $song ($minutes:$seconds / $minutestotal:$secondstotal)";
+ }
+
+ if ($output) {
+ if ($witem && ($witem->{type} eq "CHANNEL" || $witem->{type} eq "QUERY")) {
+ $witem->command("MSG ".$witem->{name}." $output");
+ }
+ else {
+ Irssi::print("This is not a channel/query window :b");
+ }
+ }
+ }
+}
+Irssi::command_bind('amarok', 'cmd_amaroknp');
+Irssi::command_bind('amarokhelp', 'cmd_amaroknp_help'); \ No newline at end of file