Exemple #1
0
 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
Exemple #2
0
 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"}