Revision: 55472
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at February 8, 2012 07:24 by chrisaiv
Initial Code
#
# http://www.last.fm/api/show/geo.getTopTracks
#
from pprint import pprint
import urllib, urllib2
import inspect
try:
import json
except ImportError:
import simplejson as json
class LastFM:
def __init__(self ):
self.API_URL = "http://ws.audioscrobbler.com/2.0/"
self.API_KEY = "LAST_FM_API_KEY"
def send_request(self, args, **kwargs):
#Request specific args
kwargs.update( args )
#Global args
kwargs.update({
"api_key": self.API_KEY,
"format": "json"
})
try:
#Create an API Request
url = self.API_URL + "?" + urllib.urlencode(kwargs)
#Send Request and Collect it
data = urllib2.urlopen( url )
#Print it
response_data = json.load( data )
#Close connection
data.close()
return response_data
except urllib2.HTTPError, e:
print "HTTP error: %d" % e.code
except urllib2.URLError, e:
print "Network error: %s" % e.reason.args[1]
def get_top_artists(self, method, dict ):
#find the key
args = {
"method": method,
"limit": 3
}
for key in dict.keys():
args[key] = dict[key]
response_data = self.send_request( args )
print "~~~~~~~~~~~~~~" + str( args["method"] ) + "~~~~~~~~~~~~~~"
#Get the first artist from the JSON response and print their name
for artist in response_data["topartists"]["artist"]:
print artist["name"]
def get_hyped_artists(self, method ):
args = {
"method": method,
"limit": 3
}
response_data = self.send_request( args )
print "~~~~~~~~~~~~~~" + str( args["method"] ) +"~~~~~~~~~~~~~~"
#Get the first artist from the JSON response and print their name
for artist in response_data["artists"]["artist"]:
print artist["name"]
def get_similar_tracks(self, method, dict ):
args = {
"method": method,
"limit": 3
}
for key in dict.keys():
args[key] = dict[key]
print key, dict[key]
response_data = self.send_request( args )
print "~~~~~~~~~~~~~~" + str( args["method"] ) +"~~~~~~~~~~~~~~"
#Get the first artist from the JSON response and print their name
for artist in response_data["similartracks"]["track"]:
print artist["name"], artist["artist"]["name"]
def main():
last_request = LastFM()
last_request.get_top_artists( "tag.gettopartists", { "tag": "rock" } )
last_request.get_top_artists( "geo.gettopartists", { "country": "spain" } )
last_request.get_hyped_artists( "chart.getHypedArtists" )
last_request.get_similar_tracks( "track.getsimilar", {
"track": "Ray of Light",
"artist": "Madonna"})
if __name__ == "__main__": main()
Initial URL
http://www.last.fm/api/show/geo.getTopTracks
Initial Description
I started messing around with the Last.fm API and somehow just started building more and more service requests. This should be enough to get anyone started on using Last.FM's API
Initial Title
Python: Last.Fm Advanced API Example
Initial Tags
python
Initial Language
Python