def getNeighboursFromTracklist(self, url, artist, track): r = requests.get(self.wwwToApi(url)) cloudcast = json.loads(u.toUtf8(r.text)) result = [] if ('sections' in cloudcast): sections = cloudcast['sections'] for (i, section) in enumerate(sections): if ('track' in section): tracklistArtistName = section['track']['artist']['name'] tracklistTrackName = section['track']['name'] if (u.clean(tracklistArtistName).find(u.clean(artist)) >= 0 and u.clean(tracklistTrackName).find(u.clean(track)) >= 0): if (i > 0): prev = sections[i - 1] name = u.toName(prev['track']['artist']['name'], prev['track']['name']) result.append(name) if (i < len(sections) - 1): nxt = sections[i + 1] name = u.toName(nxt['track']['artist']['name'], nxt['track']['name']) result.append(name) break return result
def getCandidates(self, artist, track): tracklists = self.search(artist, track, 0) tracks = {} total = 0 for url in tracklists.keys(): neighbours = self.getNeighboursFromTracklist(url, artist, track) for neighbour in neighbours: r = self.getRank(tracklists[url]) tracks[neighbour] = r total = total + 1 if (total % 10 == 0): print str(total) + ' playlists processed' if (len(tracks) > 0): print str(len(tracks)) + ' tracks have been found' return sorted(tracks.items(), key=lambda x: x[1], reverse=True) #s = sorted(tracks, key=tracks.get, reverse=True) #return [[t, tracks[t]] for t in s] return {"error" : "sorry, no playlists containing the track " + u.toName(artist, track) + " were found"}