From: Kristoffer Grönlund Date: Wed, 6 Jan 2010 16:53:25 +0000 (+0100) Subject: Oops, my rate limiting was all broken... X-Git-Url: http://git.maemo.org/git/?p=jamaendo;a=commitdiff_plain;h=1db69a594f71e3b80c92d17ec171f3d6ac866bfb Oops, my rate limiting was all broken... --- diff --git a/jamaendo/api.py b/jamaendo/api.py index 7792c33..44cec73 100644 --- a/jamaendo/api.py +++ b/jamaendo/api.py @@ -240,23 +240,26 @@ _CACHED_COVERS = 2048 # 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: diff --git a/jamaui/ossohelper.py b/jamaui/ossohelper.py index ec81665..c7cbde2 100644 --- a/jamaui/ossohelper.py +++ b/jamaui/ossohelper.py @@ -71,13 +71,13 @@ def application_exit(): """ 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): diff --git a/jamaui/playlists.py b/jamaui/playlists.py index a7a46d3..cd8edac 100644 --- a/jamaui/playlists.py +++ b/jamaui/playlists.py @@ -43,6 +43,8 @@ def _show_banner(parent, message, timeout = 2000): 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): @@ -121,14 +123,16 @@ class PlaylistsWindow(hildon.StackableWindow): 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) diff --git a/jamaui/showartist.py b/jamaui/showartist.py index 9b0e9ba..7b830c7 100644 --- a/jamaui/showartist.py +++ b/jamaui/showartist.py @@ -33,6 +33,7 @@ from albumlist import AlbumList from postoffice import postoffice import util import gobject +from playlists import add_to_playlist, show_banner import logging @@ -76,7 +77,8 @@ class ShowArtist(hildon.StackableWindow): 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)) @@ -86,6 +88,36 @@ class ShowArtist(hildon.StackableWindow): 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,