예제 #1
0
 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")
예제 #2
0
    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()
예제 #3
0
    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)
예제 #4
0
	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)
예제 #5
0
    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)
예제 #6
0
    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)