I've been working on a plugin for lastfm support, using the shell-fm command line client. I've done this because the existing web based client isn't connecting to lastfm properly and I don't have enough knowledge about the lastfm API to get it working. Since the shell-fm program works fine and has a socket control interface, it works well as a player. This much I have been able to accomplish. It's working fine, I need to clean it up a bit and hope to submit for the 1.9.2 release in the next couple of weeks.
The one feature that I need to complete is to implement the "ban" and "love" buttons. I'd like to use the "1" and "3" keys (or similar). I'm struggling to figure out how to get the number buttons to cause an event to be propagated to the eventhandler. What would be even better is if I could add another menu while the ShellfmPlayer is operating. If someone can point me to an example of how I might do that, I would prefer to use menu. I haven't seen this in the past. Snipets of the code are below. I register ShellfmPlayer as a player. The eventhandler only get certain key commands, STOP, PLAY_END, PLAYLIST_NEXT, SEEK. It never gets any messages when a number key is pressed. Where is the "glue" which binds events to the eventhandler in a AUDIO_PLAYER class? Thanks, Jim from event import * ... class PluginInterface(plugin.DaemonPlugin): """ This is the player plugin for the shell-fm. This class interacts with the shell-fm deamon using the socket interface. """ def __init__(self): plugin.Plugin.__init__(self) print('%s.__init__()' % (self.__class__,)) # register it as the object to play audio plugin.register(ShellfmPlayer(), plugin.AUDIO_PLAYER, True) class ShellfmPlayer: ... def eventhandler(self, event, menuw=None): """ eventhandler for mplayer control. If an event is not bound in this function it will be passed over to the items eventhandler """ print('ShellfmPlayer event handler %s' % event) if event in (STOP, PLAY_END, USER_END): self.playerGUI.stop() return self.item.eventhandler(event) elif event in (PLAYLIST_NEXT,SEEK): self.skip() return True elif event == INPUT_1: self.ban() return True elif event == INPUT_3: self.love() return True else: # everything else: give event to the items eventhandler return self.item.eventhandler(event) ------------------------------------------------------------------------------ Learn how Oracle Real Application Clusters (RAC) One Node allows customers to consolidate database storage, standardize their database environment, and, should the need arise, upgrade to a full multi-node Oracle RAC database without downtime or disruption http://p.sf.net/sfu/oracle-sfdevnl _______________________________________________ Freevo-users mailing list Freevo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freevo-users