# TODO: cache queries?
-class Query(object):
- rate_limit = 1.1 # seconds between queries
+class Ratelimit(object):
+ rate_limit = 1.0 # seconds between queries
last_query = time.time() - 1.5
@classmethod
- def _ratelimit(cls):
+ def ratelimit(cls):
now = time.time()
- if now - cls.last_query < cls.rate_limit:
+ if (now - cls.last_query) < cls.rate_limit:
time.sleep(cls.rate_limit - (now - cls.last_query))
- cls.last_query = now
+ cls.last_query = time.time()
+
+_ratelimit = Ratelimit.ratelimit
+class Query(object):
def __init__(self):
pass
def _geturl(self, url):
+ _ratelimit()
log.info("%s", url)
- Query._ratelimit()
try:
ret = simplejson.loads(curlGET(url))
except Exception, e:
"""
Osso application exit.
"""
- if __osso_application__ is not None and __osso_context__ is not None:
- try:
- #__osso_application__.close()
- __osso_context__.close()
- except Exception, err:
- __log.warning('application end could not be sent: %s' % err)
- __log.debug('osso application end sent')
+ #if __osso_application__ is not None and __osso_context__ is not None:
+ # try:
+ # #__osso_application__.close()
+ # __osso_context__.close()
+ # except Exception, err:
+ # __log.warning('application end could not be sent: %s' % err)
+ # __log.debug('osso application end sent')
# application_exit
def application_top(app_name):
banner = hildon.hildon_banner_show_information(parent, '', message)
banner.set_timeout(2000)
+show_banner = _show_banner
+
from listbox import ListDialog
def add_to_playlist(wnd, track):
player.set_label("Open player")
player.connect("clicked", on_player)
self.menu.append(player)
- player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
- player.set_label("Manage playlists")
- player.connect("clicked", self.on_manage_playlists)
- self.menu.append(player)
- player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
- player.set_label("Export...")
- player.connect("clicked", self.on_export_playlists)
- self.menu.append(player)
+ # bah, I haven't decided how I want to do this yet
+ # lets just hide it for now
+ #player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+ #player.set_label("Manage playlists")
+ #player.connect("clicked", self.on_manage_playlists)
+ #self.menu.append(player)
+ #player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+ #player.set_label("Export...")
+ #player.connect("clicked", self.on_export_playlists)
+ #self.menu.append(player)
self.menu.show_all()
self.set_app_menu(self.menu)
from postoffice import postoffice
import util
import gobject
+from playlists import add_to_playlist, show_banner
import logging
self.add(top_hbox)
try:
- for album in jamaendo.get_albums(artist.ID):
+ self.albumlist = jamaendo.get_albums(artist.ID)
+ for album in self.albumlist:
self.albums.add_album(album)
except jamaendo.JamendoAPIException:
log.exception("Failed in get_albums(%s)"%(artist.ID))
if self.artist.image:
postoffice.notify('request-images', [self.artist.image])
+ self.create_menu()
+
+ def create_menu(self):
+ def on_player(*args):
+ from playerwindow import open_playerwindow
+ open_playerwindow()
+ self.menu = hildon.AppMenu()
+ player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+ player.set_label("Open player")
+ player.connect("clicked", on_player)
+ self.menu.append(player)
+ player = hildon.GtkButton(gtk.HILDON_SIZE_AUTO)
+ player.set_label("Add to playlist")
+ player.connect("clicked", self.on_add_to_playlist)
+ self.menu.append(player)
+ self.menu.show_all()
+ self.set_app_menu(self.menu)
+
+ def on_add_to_playlist(self, button, user_data=None):
+ if self.albumlist:
+ try:
+ tracklist = []
+ for album in self.albumlist:
+ tracklist.extend(jamaendo.get_tracks(album.ID))
+ add_to_playlist(self, tracklist)
+ except jamaendo.JamendoAPIException:
+ log.exception("Failed to get track list for artist %s", self.artist.ID)
+ else:
+ show_banner(self, "Error when opening track list")
+
def get_pixbuf(self, img):
try:
return gtk.gdk.pixbuf_new_from_file_at_size(img,