diff options
| author | Alexander Færøy | 2014-05-31 13:10:46 +0200 |
|---|---|---|
| committer | Alexander Færøy | 2014-05-31 13:10:46 +0200 |
| commit | 2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1 (patch) | |
| tree | 1c5e6d817c88e67b46e216a50e0aef5428bf63df /scripts/amaroknp.pl | |
| parent | 2d080422d79d1fd49d6c5528593ccaaff9bfc583 (diff) | |
| download | scripts.irssi.org-2d0759e6ca5767b48bcc85bf38c2c43d5f0b63b1.tar.bz2 | |
Import scripts from scripts.irssi.org
Diffstat (limited to 'scripts/amaroknp.pl')
| -rw-r--r-- | scripts/amaroknp.pl | 116 |
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 |
