summaryrefslogtreecommitdiffstats
path: root/scripts/rhythmbox.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rhythmbox.pl')
-rw-r--r--scripts/rhythmbox.pl129
1 files changed, 129 insertions, 0 deletions
diff --git a/scripts/rhythmbox.pl b/scripts/rhythmbox.pl
new file mode 100644
index 0000000..ec31cc7
--- /dev/null
+++ b/scripts/rhythmbox.pl
@@ -0,0 +1,129 @@
+#=================================================================================
+#
+# rhythmbox.pl
+# script that allows you to control rhythmbox from irssi
+#
+#=================================================================================
+# INITIAL SECTION
+#=================================================================================
+use Irssi;
+use Irssi::Irc;
+use strict;
+use vars qw($VERSION %IRSSI);
+
+$VERSION = "1.30";
+
+%IRSSI = (
+ authors => 'Fogel',
+ contact => 'fogel@fogel.netmark.pl',
+ name => 'rhythmbox',
+ description => 'Rhythmbox now playing script',
+ license => 'BSD',
+ url => "www.fogel.com.pl",
+);
+#=================================================================================
+# NOW PLAYING SECTION
+#=================================================================================
+sub now_playing {
+
+ my ($data, $server, $witem) = @_;
+
+
+ my $title = `rhythmbox-client --print-playing-format %tt`;
+ my $artist = `rhythmbox-client --print-playing-format %ta`;
+ my $number = `rhythmbox-client --print-playing-format %tn`;
+ my $duration = `rhythmbox-client --print-playing-format %td`;
+ my $elapsed = `rhythmbox-client --print-playing-format %te`;
+ my $album_title = `rhythmbox-client --print-playing-format %at`;
+ my $album_artist = `rhythmbox-client --print-playing-format %aa`;
+ my $album_year = `rhythmbox-client --print-playing-format %ay`;
+ my $album_genre = `rhythmbox-client --print-playing-format %ag`;
+ my $disc_number = `rhythmbox-client --print-playing-format %an`;
+
+ if ($number =~ m/^\d*$/i) {
+
+ my $output = "np: $artist - $title ($elapsed / $duration)"; # here set desired format of output
+
+ if ($witem && ($witem->{type} eq "CHANNEL" || $witem->{type} eq "QUERY")) {
+
+ $witem->command("me $output")
+ } else {
+ Irssi::print("This is not a channel/query window");
+ }
+
+ } else {
+ Irssi::print("rhythmbox is not playing anything at the moment.");
+ }
+}
+#=================================================================================
+# RHYTHMBOX CONTROL SECTION
+#=================================================================================
+sub pause {
+ system("rhythmbox-client --pause");
+}
+
+sub play {
+ system("rhythmbox-client --play");
+}
+
+sub next {
+ system("rhythmbox-client --next");
+}
+
+sub previous {
+ system("rhythmbox-client --previous");
+}
+
+sub volume_up {
+ system("rhythmbox-client --volume-up");
+}
+
+sub volume_down {
+ system("rhythmbox-client --volume-down");
+}
+
+sub volume {
+ my $vol = `rhythmbox-client --print-volume`;
+ Irssi::print("rhythmbox volume: $vol");
+}
+
+sub mute {
+ system("rhythmbox-client --mute");
+}
+
+sub unmute {
+ system("rhythmbox-client --unmute");
+}
+#=================================================================================
+# HELP DISPLAY SECTION SECTION
+#=================================================================================
+sub help {
+
+ Irssi::print("rhythmbox.pl - rhythmbox control script for irssi");
+ Irssi::print("Copyright Michal \"Fogel\" Fogelman");
+ Irssi::print("List of commands:");
+ Irssi::print("/np - now playing - show others what are you listening to");
+ Irssi::print("/pause, /play");
+ Irssi::print("/prev, /next - previous/next track");
+ Irssi::print("/vup, /vdown - volume up/down");
+ Irssi::print("/volume - displays current volume level");
+ Irssi::print("/mute, /unmute");
+}
+#=================================================================================
+# COMMAND BINDINGS
+#=================================================================================
+Irssi::command_bind('np', 'now_playing');
+Irssi::command_bind('pause', 'pause');
+Irssi::command_bind('play', 'play');
+Irssi::command_bind('next', 'next');
+Irssi::command_bind('prev', 'previous');
+Irssi::command_bind('vup', 'volume_up');
+Irssi::command_bind('vdown', 'volume_down');
+Irssi::command_bind('vol', 'volume');
+Irssi::command_bind('mute', 'mute');
+Irssi::command_bind('unmute', 'unmute');
+
+Irssi::command_bind('rhythmbox_help', 'help');
+#=================================================================================
+# END OF FILE
+#=================================================================================