All pastes #601969 Raw Edit

wfarr

public python v1 · immutable
#601969 ·published 2007-07-03 20:36 UTC
rendered paste body
#!/usr/bin/python# Banshee Plugin for Xchat# Copyright (C) 2007  Will Farrington <wcfarrington@gmail.com>## 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 3 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\U General Public License# along with this program.  If not, see <http://www.gnu.org/licenses/>.import xchatimport dbus__module_name__ = "Banshee Plugin for Xchat"__module_version__ = "1.0"__module_description__ = "Announce music from and control Banshee Music Player."bus = dbus.SessionBus()class Dbus:    def __init__(self):        obj = bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus')        iface = dbus.Interface(obj, 'org.freedesktop.DBus')        if 'org.gnome.Banshee' in iface.ListNames():            banshee_obj = bus.get_object('org.gnome.Banshee', '/org/gnome/Banshee/Player')            global banshee_iface            banshee_iface = dbus.Interface(banshee_obj, 'org.gnome.Banshee.Core')        else:            xchat.prnt("\002Banshee is not registered with DBus. Please start Banshee.\002")            return        def grab_track_data(self):        global track_title        global track_artist        global track_album        global track_rating        global track_pos        global track_dur                track_title = banshee_iface.GetPlayingTitle()        track_artist = banshee_iface.GetPlayingArtist()        track_album = banshee_iface.GetPlayingAlbum()        track_rating = banshee_iface.GetPlayingRating()        track_pos = banshee_iface.GetPlayingPosition()        track_dur = banshee_iface.GetPlayingDuration()                if track_rating == 0:            track_rating = "Not Rated."        else:            track_rating = "%s/5" % track_rating                    track_pos = int(track_pos)        track_dur = int(track_dur)        track_pos = "%d:%02d" % (track_pos / 60, track_pos % 60)        track_dur = "%d:%02d" % (track_dur / 60, track_dur % 60)class Commands:    def mabout(self, word, word_eol, nil):        xchat.prnt("\002\037%s\037\002" % __module_name__)        xchat.prnt(" \002About:\002")        xchat.prnt(" * Author: Will Farrington <wcfarrington@gmail.com>")        xchat.prnt(" * Script Version: %s" % __module_version__)        xchat.prnt(" \002Help:\002")        xchat.prnt(" * \037/media\037 - Displays the currently playing track")        xchat.prnt(" * \037/prev\037 - Skips to the previous track")        xchat.prnt(" * \037/stop\037 - Stops playback")        xchat.prnt(" * \037/play\037 - Starts playback")            xchat.prnt(" * \037/pause\037 - Pauses playback")        xchat.prnt(" * \037/next\037 - Skips to the next track")        xchat.prnt(" * \037/rate n\037 - Rates the song n/5")            def media(self, word, word_eol, nil):        Dbus().grab_track_data()        xchat.command("me is listening to: \"%s\" by %s on %s; Rated: %s (%s/%s)" % (track_title, track_artist, track_album, track_rating, track_pos, track_dur))            def next(self, word, word_eol, nil):        Dbus()        banshee_iface.Next()        xchat.prnt("Skipped to next track.")            def prev(self, word, word_eol, nil):        Dbus()        banshee_iface.Previous()        xchat.prnt("Skipped to previous track.")        def play(self, word, word_eol, nil):        Dbus()        banshee_iface.Play()        xchat.prnt("Started playback.")        def pause(self, word, word_eol, nil):        Dbus()        banshee_iface.Pause()        xchat.prnt("Paused playback.")            def rate(self, word, word_eol, new_rating):        Dbus().grab_track_data()        new_rating = int(word[1])        banshee_iface.SetPlayingRating(new_rating)        xchat.prnt("Rated \"%s\" by %s a %s/5." % (track_title, track_artist, new_rating))xchat.prnt("Loaded \002%s\002:" % __module_name__)xchat.prnt("Use \002/mabout\002 to display a list of commands.")mabout_hook = xchat.hook_command("mabout", Commands().mabout)media_hook  = xchat.hook_command("media", Commands().media)next_hook   = xchat.hook_command("next", Commands().next)prev_hook   = xchat.hook_command("prev", Commands().prev)play_hook   = xchat.hook_command("play", Commands().play)pause_hook  = xchat.hook_command("pause", Commands().pause)rate_hook   = xchat.hook_command("rate", Commands().rate)        def munload(nil):    xchat.unhook(mabout_hook)    xchat.unhook(media_hook)    xchat.unhook(next_hook)    xchat.unhook(prev_hook)    xchat.unhook(play_hook)    xchat.unhook(pause_hook)    xchat.unhook(rate_hook)    xchat.prnt("Thanks for using my script! =)")xchat.hook_unload(munload)