All pastes #948283 Raw Edit

Someone

public python v1 · immutable
·published 2008-03-19 00:33 UTC
rendered paste body
from elisa.base_components.resource_provider import ResourceProviderfrom elisa.core.media_uri import MediaUrifrom elisa.core import common, componentfrom twisted.internet import defer, threadsfrom twisted.web import clientimport re, simplejsonclass JamendoResource(ResourceProvider):    supported_uri = "http://(www\.)?jamendo\.com.*"    ml2_base = "http://api.jamendo.com/get"    jam_base = "http://(?:www\.)jamendo.com(?:/[a-z]{2})?/"    jam_regex = {"main"     : ("?$", ["2/name+artist_name+url+image/album/json/?n=50&order=ratingweek_desc&imagesize=600"]),                 "tags"     : ("tags", ["2/idstr+name+url/tag/json/?n=50&order=rating_desc"]),                 "tag"      : ("tag/([^/]+)", ["2/name+artist_name+url+image/album/json/?tag_idstr=\1&n=50&order=ratingweek_desc&imagesize=600"]),                 "artists"  : ("artists", ["2/name+url+image/artist/plain/?n=50&order=id_desc&imagesize=600"]),                 "artist"   : ("artist/([^/]+)", ["2/name+url/track/json/track_album+album_artist/?artist_idstr=\1&n=5&order=rating_desc","2/name+url+artist_name+image/album/json/?artist_idstr=\1&n=all&imagesize=600"]),                 "albums"   : ("albums", ["2/name+artist_name+url+image/album/json/?&n=50&order=ratingweek_desc&imagesize=600"]),                 "album"    : ("album/([0-9]+)", ["2/name+url/track/json/?n=all&album_id=\1&order=numalbum_asc"]),                 "track"    : ("track/([0-9]+)", ["/track/id/track/audio/redirect/\1/?aue=ogg2"])                 }    _jam_compiled = {}    def initialize(self):        ResourceProvider.initialize(self)        resource_manager = common.application.resource_manager        uris = {u'main'      : MediaUri("http://jamendo.com"),                u'tags'      : MediaUri("http://jamendo.com/en/tags"),                u'rock'      : MediaUri("http://jamendo.com/en/tag/rock"),                u'artists'   : MediaUri("http://jamendo.com/en/artists"),                u'both'      : MediaUri("http://jamendo.com/en/artist/both"),                u'albums'    : MediaUri("http://jamendo.com/en/albums"),                u'simple'    : MediaUri("http://jamendo.com/en/album/33"),                u'enatten'   : MediaUri("http://jamendo.com/en/track/1100")                }                for k,v in uris.iteritems():            resource_manager.register_resource_entry_point(v, text=k,                                                           type="audio_internet",                                                           theme_icon="audio_directory_icon")    def _musiclist_uri(self, uri):        for k, v in self.jam_compiled.iteritems():            if(v[0].match(uri)):                return [MediaUri(v[0].sub(self.ml2_base+s)) for s in v[1]]        return False    def get(self, uri, context_model=None):        self.debug("Should get %s" % uri)        print self._musiclist_uri(uri)        return None    def jam_compiled__get(self):        if self._jam_compiled is None:            for k, v in self.jam_regex.iteritems():                _jam_compiled[k] = re.compile(self.jam_base+v[0]), v[1]        return _jam_compiled