def execute(self, queue, nick, message, channel): msg = message.split() if len(msg) < 2: lastfmname = self.r.get(nick) if lastfmname: user = self.network.get_user(lastfmname) else: print "No username set for %s" %nick queue.put(("No last.fm username set, try !setlastfm <username>", channel)) return else: user = self.network.get_user(msg[1]) try: trackData = user.get_now_playing() if trackData: output = "%s is playing: " %user else: trackData = user.get_recent_tracks(limit=1)[0][0] output = "%s played: " %user except: err = "Couldn't retrieve now playing or last played track" print err queue.put((err, channel)) return artist = trackData.get_artist().get_name() track = trackData.get_title() rawtags = pylast.extract_items(trackData.get_top_tags(limit=3)) tags = ', '.join([x.get_name() for x in rawtags]) if tags: tags = "<" + tags + ">" output += artist + " - " + track + " " + tags queue.put((output, channel))
def getTopTracks(artist, count=3): global network artist = network.get_artist(artist) tracks = pylast.extract_items(artist.get_top_tracks()) buildlist = [] for track in tracks[:count]: buildlist.append([str(track.artist),str(track.title),str(track.get_duration())]) return buildlist
def _parse_tags(self, toptags): tags = pylast.extract_items(toptags) genres = [] for tag in tags: genres.append(tag.get_name()) return genres