I've been playing with it and it just hasn't been stable for me. I'm not Python proficient, so I can use all the help you give.
1. I can't figure our how to make it compile to run under Python 2.5 (however this is not a showstopper, I can live with a Python 2.4 dependency). /usr/bin/pytone always references python2.4, even when I compile under install pytone under Python 2.5 with no Python 2.4 installed on the system.
2. More serious: pytone crashes when I add something to the playlist with this songformat under [playlistwindow]: "songformat = [%(playstarthours)02d:%(playstartminutes)02d:%(playstartseconds)02d] %(genre)s - %(artist)s - %(title)s". It appears that the issue is that here is no genre tag available in item.py, instead there is a "tags: [u'G:<genre>']".
Genre is actually something I can't do without; I need to be able to search on genre, then artist, then title. Follows the error output from the crash:
$ pytone /usr/lib/pytone/services/players/internal.py:25: RuntimeWarning: Python C API version mismatch for module pcm: This Python has API version 1012, module pcm has version 1013. import pcm /usr/lib/pytone/services/players/internal.py:32: RuntimeWarning: Python C API version mismatch for module bufferedao: This Python has API version 1012, module bufferedao has version 1013. import bufferedao Traceback (most recent call last): File "/usr/lib/pytone/pytone.py", line 280, in ? m.run() File "/usr/lib/pytone/mainscreen.py", line 132, in run self.channel.process() File "/usr/lib/pytone/hub.py", line 167, in process handler(item) File "/usr/lib/pytone/playlist.py", line 118, in playlistchanged self.win.update() File "/usr/lib/pytone/playlistwin.py", line 194, in update name = encoding.encode(item.song.format(self.songformat, adddict=adddict)) File "/usr/lib/pytone/item.py", line 573, in format return unicode(formatstring) % d KeyError: u'genre' Locals by frame, innermost last
Frame ? in /usr/lib/pytone/pytone.py at line 287 cwd = /usr/lib/pytone sigtermhandler = <function sigtermhandler at 0xb792287c> helper = <module 'helper' from '/usr/lib/pytone/helper.py'> curses = <module 'curses' from '/usr/lib/python2.4/curses/__init__.pyc'> locale = <module 'locale' from '/usr/lib/python2.4/locale.pyc'> stdscr = <_curses.curses window object at 0xb7e42420> songdbname = main plugins = [] songdbids = ['main'] mainscreen = <module 'mainscreen' from '/usr/lib/pytone/mainscreen.py'> playerids = ['main', None] errors = <module 'errors' from '/usr/lib/pytone/errors.py'> log = <module 'log' from '/usr/lib/pytone/log.py'> cursessetup = <function cursessetup at 0xb792209c> gettext = <module 'gettext' from '/usr/lib/python2.4/gettext.pyc'> imp = <module 'imp' (built-in)> version = <module 'version' from '/usr/lib/pytone/version.py'> cursescleanup = <function cursescleanup at 0xb7922844> config = <module 'config' from '/usr/lib/pytone/config.py'> events = <module 'events' from '/usr/lib/pytone/events.py'> hub = <module 'hub' from '/usr/lib/pytone/hub.py'> __builtins__ = <module '__builtin__' (built-in)> __file__ = /usr/lib/pytone/pytone.py sys = <module 'sys' (built-in)> pluginpath = ['/home/ceverett/.pytone/plugins/', '/usr/lib/pytone/plugins'] services = <module 'services' from '/usr/lib/pytone/services/__init__.py'> __name__ = __main__ network = <module 'network' from '/usr/lib/pytone/network.py'> e = [Errno 17] File exists: '/home/ceverett/.pytone' signal = <module 'signal' (built-in)> userpluginpath = /home/ceverett/.pytone/plugins/ m = <mainscreen.mainscreen instance at 0xb7ba990c> __doc__ = None globalpluginpath = /usr/lib/pytone/plugins locallocaledir = /usr/lib/pytone/../locale os = <module 'os' from '/usr/lib/python2.4/os.pyc'> songdbid = main songdbmanager = <songdbmanager(songdb manager service, stopped)>
Frame run in /usr/lib/pytone/mainscreen.py at line 143 self = <mainscreen.mainscreen instance at 0xb7ba990c> skipcount = 0 key = -1
Frame process in /usr/lib/pytone/hub.py at line 169 self = <hub.channel instance at 0xb7ba992c> item = playlistchanged([playlistitem: id=0],0/212,off,None) handler = <bound method playlist.playlistchanged of <playlist.playlist instance at 0xb7bad58c>> timeout = None subscribedevent = events.playlistchanged block = False
Frame playlistchanged in /usr/lib/pytone/playlist.py at line 118 self = <playlist.playlist instance at 0xb7bad58c> event = playlistchanged([playlistitem: id=0],0/212,off,None)
Frame update in /usr/lib/pytone/playlistwin.py at line 194 attr = 0 adddict = {'playstartseconds': 10, 'playstarthours': 2, 'playstartminutes': 17} i = 0 h = 2 autoplaymode = m = 17 item = playlistitem: id=0 s = 10 self = <playlistwin.playlistwin instance at 0xb7bad54c>
Frame format in /usr/lib/pytone/item.py at line 573 self = song(1696) in main database safe = False d = {'rating': None, 'lyrics': [], 'date_updated': 1190704567.905508, 'trackcount': None, 'disknumber': None, 'is_vbr': None, 'year': 2005, 'tracknumber': None, 'samplerate': 44100, 'size': 4906582, 'album': u'Jazz Hits Remixed', 'replaygain_album_gain': None, 'title': u"Ain't Nobody's Business (NY C", 'diskcount': None, 'comments': [], 'type': u'mp3', 'playstartminutes': 17, 'replaygain_album_peak': None, 'tags': [u'G:Jazz'], 'seconds': 32, 'compilation': 0, 'skipcount': 0, 'playstarthours': 2, 'date_added': 1190698941.9357021, 'bitrate': 185071, 'album_artist': u'Billy Holiday', 'artist': u'Billy Holiday', 'url': u"file://Cortinas/Jazz Hits Remixed/VA - Jazz Hits Remixed - 2CD [Electronic][2006][www.pctrecords.com]/Jazz -- Billy Holiday -- Ain't Nobody's Business (NY C.mp3", 'date_lastplayed': None, 'dates_played': [], 'bpm': None, 'replaygain_track_peak': None, 'length': '3:32', 'replaygain_track_gain': None, 'playstartseconds': 10, 'playcount': 0, 'minutes': 3} adddict = {'playstartseconds': 10, 'playstarthours': 2, 'playstartminutes': 17} formatstring = [%(playstarthours)02d:%(playstartminutes)02d:%(playstartseconds)02d] %(genre)s - %(artist)s - %(title)s