All pastes #1275950 Raw Edit

xchat_rhythmbox.pl

public text v1 · immutable
#1275950 ·published 2008-12-04 15:30 UTC
rendered paste body
#!/usr/bin/perl -w

# Rhythmbox XChat Announcer 0.2
# (c) Copyright 2006 - Tim Denholm <tim@codestorm.net>
#
# 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.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

use POSIX qw(strftime);

$script_name        = "Rhythmbox XChat Announcer";
$script_version     = "0.2";
$script_description = "Announces the current playing song information from Rhythmbox in XChat.";

$rhythmbox_version = `rhythmbox --version`;
$rhythmbox_version =~ s/Gnome\srhythmbox\s//;
chop $rhythmbox_version;

IRC::register($script_name,$script_version,$script_description,"");

IRC::print("Loaded \002".$script_name."\002:");
IRC::print("Use \002/rb_help\002 to display a list of commands.");

IRC::add_command_handler("mp3","rb_announce");
IRC::add_command_handler("rb_next","rb_next");
IRC::add_command_handler("rb_prev","rb_prev");
IRC::add_command_handler("rb_play","rb_play");
IRC::add_command_handler("rb_pause","rb_pause");
IRC::add_command_handler("rb_version","rb_version");
IRC::add_command_handler("rb_help","rb_help");

sub rb_announce
{
	if (`ps -C rhythmbox` =~ /rhythmbox/) {
		# Get current playing song information.
		$song_info = `rhythmbox-client --print-playing-format %ta\\ -\\ %at\\ -\\ %tt\\ -\\ "(%td seg)"`;
		chop $song_info;

		IRC::command("/me escucha: ".$song_info);
	} else {
		IRC::print("Rhythmbox is not currently running.");
	}

	return 1;
}

sub rb_next
{
	# Skip to the next track.
	eval `rhythmbox-client --next`;
	IRC::print("Skipped to next track.");
	return 1;
}

sub rb_prev
{
	# Skip to the previous track.
	eval `rhythmbox-client --previous`;
	IRC::print("Skipped to previous track.");
	return 1;
}

sub rb_play
{
	# Start playback.
	eval `rhythmbox-client --play`;
	IRC::print("Started playback.");
	return 1;
}

sub rb_pause
{
	# Pause playback.
	eval `rhythmbox-client --pause`;
	IRC::print("Paused playback.");
	return 1;
}

sub rb_version
{
	# Display version information to a channel.
	IRC::command("/me is using ".$script_name." ".$script_version." with Rhythmbox ".$rhythmbox_version." and XChat ".IRC::get_info(0));
	return 1;
}

sub rb_help
{
	# Display help screen.
	IRC::print("\002\037".$script_name." Help:\037\002");
	IRC::print(" \002About:\002");
	IRC::print("  * Author: Tim Denholm <tim\@codestrorm.net>");
	IRC::print("  * URL:    http://tim.codestorm.net/projects/xchat-rhythmbox/");
	IRC::print("  * Script Version:    ".$script_version);
	IRC::print("  * Rhythmbox Version: ".$rhythmbox_version);
	IRC::print("  * XChat Version:     ".IRC::get_info(0));
	IRC::print(" \002Commands:\002");
	IRC::print("  * /rb_announce - Display the current song playing to a channel.");
	IRC::print("  * /rb_next     - Skip to the next track.");
	IRC::print("  * /rb_prev     - Skip to the previous track.");
	IRC::print("  * /rb_play     - Start playback.");
	IRC::print("  * /rb_pause    - Pause playback.");
	IRC::print("  * /rb_version  - Display version information for the script, Rhythmbox and XChat to a channel.");
	IRC::print("  * /rb_help     - Display this help screen.");
	return 1;
}