def post(self): name=self.request.get('name') wrong=self.request.get("wrong") right=self.request.get("right") c=CorrectArtist(name=name, mbid=right, key=ndb.Key('CorrectArtist',wrong)) c.put() self.redirect("/correctArtist")
def getSimilarsFromUrl(self): logging.error("getSimilars") mbid=self.key.id() similars=None #similar=memcache.get("similars of %s"%mbid) if similars is None: similars=[] url=tools.get_url('lastfm','similar',mbid) j=tools.get_json(url) if j is None: return [] try: a=j['similarartists']['artist'] except: return [] for i in a: if i["mbid"]!="": try: cmbid=CorrectArtist.by_id(i["mbid"]) if cmbid is not None: skey=ndb.Key("Artist",cmbid.mbid) else: skey=ndb.Key("Artist",i['mbid']) similars.append(skey) except: pass self.similars=similars self.put()
def createEchoTag(self): url = tools.get_url("echonest", "genre", self.param).replace(" ", "%20") j = tools.get_json(url) for d in j["response"]["songs"]: try: mbid = d["artist_foreign_ids"][0]["foreign_id"].split(":")[2] except: continue track = {} track["artist"] = {} tracKey = ndb.Key("Track", d["title"] + " - " + d["artist_name"]) trac = tracKey.get() if trac is not None: track["ytid"] = trac.ytid track["img"] = "http://img.youtube.com/vi/" + trac.ytid + "/0.jpg" cmbid = CorrectArtist.by_id(mbid) if cmbid is not None: track["artist"]["mbid"] = cmbid.mbid artist = ndb.Key("Artist", cmbid.mbid).get() else: track["artist"]["mbid"] = mbid artist = ndb.Key("Artist", mbid).get() if artist is not None: if artist.name is not None: track["artist"]["name"] = artist.name else: track["artist"]["name"] = d["artist_name"] if artist.logo is not None: track["artist"]["logo"] = images.get_serving_url(artist.logo) if artist.info is not None: track["artist"]["info"] = artist.info if artist.tags is not None: track["artist"]["tags"] = artist.tags if artist.similars is not None: similars = [] for s in artist.similars: similar = s.get() similars.append({"name": similar.name, "logo": similar.image, "mbid": similar.key.id()}) track["artist"]["similars"] = similars else: track["artist"]["name"] = d["artist_name"] track["artist"]["similars"] = [] track["artist"]["logo"] = "" track["artist"]["info"] = "" track["artist"]["tags"] = [] track["name"] = d["title"] self.tracks.append(track)
def parseTrack(self, d={}): try: mbid=d["artist_foreign_ids"][0]["foreign_id"].split(':')[2] except: try: mbid=d["artist_foreign_ids"]["foreign_id"].split(':')[2] except: return {} track={} track["artist"]={} tracKey=ndb.Key('Track',d["title"]+ " - " +d["artist_name"] ) trac=tracKey.get() if trac is not None: track["ytid"]=trac.ytid track["img"]="http://img.youtube.com/vi/"+trac.ytid+"/0.jpg" logging.error(mbid) cmbid=CorrectArtist.by_id(mbid) if cmbid is not None: track["artist"]["mbid"]=cmbid.mbid mbid=cmbid.mbid artist=ndb.Key('Artist',cmbid.mbid).get() else: track["artist"]["mbid"]=mbid artist=ndb.Key('Artist',mbid).get() if artist is not None: track["artist"]=artist.toJson() else: track["artist"]["mbid"]=mbid track["artist"]["name"]=d["artist_name"] track["artist"]["similars"]=[] track["artist"]["logo"]="" track["artist"]["info"]="" track["artist"]["tags"]=[] track["name"]=d["title"] logging.error(mbid) logging.error(track) self.tracks.append(track)
def create(self): time_start = time.time() self.tracks = [] filter = "toptracks" url = "" logging.error(url) if self.tipo == "tag": if {"name": self.param} in echonest_genres["response"]["genres"]: echo = GenrePL(self.param) echo.create() self.tracks = echo.tracks self.session = echo.session # self.createEchoTag() actual = time.time() - time_start logging.error("After create echo playlist= %s" % actual) return url = tools.get_url("lastfm", "genreCreate", self.param) elif self.tipo == "artist": echo = ArtistPL(self.param) echo.create() self.tracks = echo.tracks self.session = echo.session actual = time.time() - time_start logging.error("After create echo playlist= %s" % actual) return # url=tools.get_url("lastfm","artistCreate",self.param) elif self.tipo == "artist-radio": echo = ArtistR(self.param) echo.create() self.tracks = echo.tracks self.session = echo.session actual = time.time() - time_start logging.error("After create echo playlist= %s" % actual) return # url=tools.get_url("lastfm","artistCreate",self.param) else: url = tools.get_url("lastfm", "toptracks", " ") filter = "tracks" logging.error(url) page = urllib2.urlopen(url) p = page.read() j = json.loads(p) actual = time.time() - time_start logging.error("after json: %s" % actual) for d in j[filter]["track"]: track = {} track["artist"] = {} tracKey = ndb.Key("Track", d["name"] + " - " + d["artist"]["name"]) trac = tracKey.get() if trac is not None: track["ytid"] = trac.ytid track["img"] = "http://img.youtube.com/vi/" + trac.ytid + "/0.jpg" mbid = d["artist"]["mbid"] if mbid == "": continue logging.error(mbid) cmbid = CorrectArtist.by_id(mbid) if cmbid is not None: track["artist"]["mbid"] = cmbid.mbid artist = ndb.Key("Artist", cmbid.mbid).get() else: track["artist"]["mbid"] = mbid artist = ndb.Key("Artist", mbid).get() if artist is not None: actual = time.time() - time_start logging.error("before similars: %s" % actual) if artist.name is not None: track["artist"]["name"] = artist.name else: track["artist"]["name"] = d["artist"]["name"] if artist.logo is not None: track["artist"]["logo"] = images.get_serving_url(artist.logo) if artist.info is not None: track["artist"]["info"] = artist.info if artist.tags is not None: track["artist"]["tags"] = artist.tags if artist.similars is not None: similars = [] s = ndb.get_multi(artist.similars) for similar in s: similars.append({"name": similar.name, "logo": similar.image, "mbid": similar.key.id()}) track["artist"]["similars"] = similars actual = time.time() - time_start logging.error("after getting similars: %s" % actual) else: track["artist"]["name"] = d["artist"]["name"] track["artist"]["similars"] = [] track["artist"]["logo"] = "" track["artist"]["info"] = "" track["artist"]["tags"] = [] track["name"] = d["name"] self.tracks.append(track)
def getNextTrack(self): if self.tipo == "tag": data = playlists.getEchoTagTracks(self.param) elif self.tipo == "artist": url = tools.get_url("lastfm", "artistNext", self.param) logging.error(url) page = urllib2.urlopen(url) p = page.read() j = json.loads(p) filter = "toptracks" if "a" == "a": d = j[filter]["track"] track = {} track["artist"] = {} tracKey = ndb.Key("Track", d["name"] + " - " + d["artist"]["name"]) trac = tracKey.get() if trac is not None: track["ytid"] = trac.ytid track["img"] = "http://img.youtube.com/vi/" + trac.ytid + "/0.jpg" mbid = d["artist"]["mbid"] cmbid = CorrectArtist.by_id(mbid) if cmbid is not None: track["artist"]["mbid"] = cmbid.mbid artist = ndb.Key("Artist", cmbid.mbid).get() else: track["artist"]["mbid"] = mbid artist = ndb.Key("Artist", mbid).get() if artist is not None: if artist.name is not None: track["artist"]["name"] = artist.name else: track["artist"]["name"] = d["artist"]["name"] if artist.logo is not None: track["artist"]["logo"] = images.get_serving_url(artist.logo) if artist.info is not None: track["artist"]["info"] = artist.info if artist.tags is not None: track["artist"]["tags"] = artist.tags if artist.similars is not None: similars = [] for s in artist.similars: similar = s.get() similars.append({"name": similar.name, "logo": similar.image, "mbid": similar.key.id()}) track["artist"]["similars"] = similars else: track["artist"]["name"] = d["artist"]["name"] track["artist"]["similars"] = [] track["artist"]["logo"] = "" track["artist"]["info"] = "" track["artist"]["tags"] = [] track["name"] = d["name"] self.tracks.append(track) else: data = playlists.getTopTracks() logging.error(data)