maloja/maloja/thirdparty/lastfm.py

42 lines
1.2 KiB
Python
Raw Normal View History

from . import MetadataInterface, ProxyScrobbleInterface, utf
import hashlib
import urllib.parse, urllib.request
class LastFM(MetadataInterface, ProxyScrobbleInterface):
name = "LastFM"
settings = {
"apikey":"LASTFM_API_KEY",
"sk":"LASTFM_API_SK",
"secret":"LASTFM_API_SECRET"
}
proxyscrobble = {
"scrobbleurl": "http://ws.audioscrobbler.com/2.0/",
"response_type":"xml",
"required_settings": ["apikey","sk","secret"],
"activated_setting": "SCROBBLE_LASTFM"
}
2020-07-25 06:29:23 +03:00
def proxyscrobble_parse_response(self,data):
return data.attrib.get("status") == "ok" and data.find("scrobbles").attrib.get("ignored") == "0"
2020-07-25 06:29:23 +03:00
def proxyscrobble_postdata(self,artists,title,timestamp):
return self.query_compose({
"method":"track.scrobble",
"artist[0]":", ".join(artists),
"track[0]":title,
"timestamp":timestamp,
"api_key":self.settings["apikey"],
"sk":self.settings["sk"]
})
# creates signature and returns full query string
def query_compose(self,parameters):
m = hashlib.md5()
keys = sorted(str(k) for k in parameters)
m.update(utf("".join(str(k) + str(parameters[k]) for k in keys)))
m.update(utf(self.settings["secret"]))
sig = m.hexdigest()
return urllib.parse.urlencode(parameters) + "&api_sig=" + sig