lastfm: remove tasteometer
They removed this feature from the API. What exactly is the point of Last.fm now, just advertising?master
parent
64d7088adb
commit
984dba9b4b
|
@ -13,8 +13,7 @@ from lxml import etree
|
|||
from datetime import datetime
|
||||
|
||||
APIKEY = "816cfe50ddeeb73c9987b85de5c19e71"
|
||||
APIURL = "http://ws.audioscrobbler.com/2.0/?api_key="+APIKEY+"&"
|
||||
AEPURL = "http://www.davethemoonman.com/lastfm/aep.php?format=txt&username="
|
||||
APIURL = "https://ws.audioscrobbler.com/2.0/?api_key="+APIKEY+"&"
|
||||
|
||||
config = configparser.RawConfigParser()
|
||||
config.optionxform = str
|
||||
|
@ -130,66 +129,6 @@ def now_playing(phenny, input):
|
|||
|
||||
now_playing.commands = ['np']
|
||||
|
||||
def tasteometer(phenny, input):
|
||||
input1 = input.group(2)
|
||||
if not input1 or len(input1) == 0:
|
||||
phenny.say("tasteometer: compares two users' musical taste")
|
||||
phenny.say("syntax: .taste user1 user2")
|
||||
return
|
||||
input2 = input.group(3)
|
||||
user1 = resolve_username(input1)
|
||||
if not user1:
|
||||
user1 = input1
|
||||
user2 = resolve_username(input2)
|
||||
if not user2:
|
||||
user2 = input2
|
||||
if not user2 or len(user2) == 0:
|
||||
user2 = resolve_username(input.nick)
|
||||
if not user2:
|
||||
user2 = input.nick
|
||||
try:
|
||||
req = web.get("%smethod=tasteometer.compare&type1=user&type2=user&value1=%s&value2=%s" % (APIURL, web.quote(user1), web.quote(user2)))
|
||||
except web.HTTPError as e:
|
||||
if e.response.status_code == 400:
|
||||
phenny.say("uhoh, someone doesn't exist on last.fm, perhaps they need to set user")
|
||||
return
|
||||
else:
|
||||
phenny.say("uhoh. try again later, mmkay?")
|
||||
return
|
||||
root = etree.fromstring(req.encode('utf-8'))
|
||||
score = root.xpath('comparison/result/score')
|
||||
if len(score) == 0:
|
||||
phenny.say("something isn't right. have those users scrobbled?")
|
||||
return
|
||||
|
||||
score = float(score[0].text)
|
||||
rating = ""
|
||||
if score >= 0.9:
|
||||
rating = "Super"
|
||||
elif score >= 0.7:
|
||||
rating = "Very High"
|
||||
elif score >= 0.5:
|
||||
rating = "High"
|
||||
elif score >= 0.3:
|
||||
rating = "Medium"
|
||||
elif score >= 0.1:
|
||||
rating = "Low"
|
||||
else:
|
||||
rating = "Very Low"
|
||||
|
||||
artists = root.xpath("comparison/result/artists/artist/name")
|
||||
common_artists = ""
|
||||
names = []
|
||||
if len(artists) == 0:
|
||||
common_artists = ". they don't have any artists in common."
|
||||
else:
|
||||
list(map(lambda a: names.append(a.text) ,artists))
|
||||
common_artists = "and music they have in common includes: %s" % ", ".join(names)
|
||||
|
||||
phenny.say("%s's and %s's musical compatibility rating is %s %s" % (user1, user2, rating, common_artists))
|
||||
|
||||
tasteometer.rule = (['taste'], r'(\S+)(?:\s+(\S+))?')
|
||||
|
||||
def save_config():
|
||||
configfile = open(config_filename, 'w')
|
||||
config.write(configfile)
|
||||
|
|
|
@ -6,7 +6,7 @@ author: mutantmonkey <mutantmonkey@mutantmonkey.in>
|
|||
import re
|
||||
import unittest
|
||||
from mock import MagicMock, Mock
|
||||
from modules.lastfm import now_playing, tasteometer
|
||||
from modules.lastfm import now_playing
|
||||
|
||||
|
||||
class TestLastfm(unittest.TestCase):
|
||||
|
@ -32,36 +32,3 @@ class TestLastfm(unittest.TestCase):
|
|||
out = self.phenny.say.call_args[0][0]
|
||||
m = re.match('^{0} listened to ".+" by .+ on .+ .*$'.format(self.user1), out, flags=re.UNICODE)
|
||||
self.assertTrue(m)
|
||||
|
||||
def test_tasteometer(self):
|
||||
def mock_group(x):
|
||||
if x == 2:
|
||||
return self.user1
|
||||
else:
|
||||
return self.user2
|
||||
|
||||
input = Mock(group=mock_group)
|
||||
tasteometer(self.phenny, input)
|
||||
|
||||
out = self.phenny.say.call_args[0][0]
|
||||
m = re.match("^{0}'s and {1}'s musical compatibility rating is .*"\
|
||||
" they don't have any artists in common.$".
|
||||
format(self.user1, self.user2), out, flags=re.UNICODE)
|
||||
self.assertTrue(m)
|
||||
|
||||
def test_tasteometer_sender(self):
|
||||
def mock_group(x):
|
||||
if x == 2:
|
||||
return self.user1
|
||||
else:
|
||||
return ''
|
||||
|
||||
input = Mock(group=mock_group)
|
||||
input.nick = self.user2
|
||||
tasteometer(self.phenny, input)
|
||||
|
||||
out = self.phenny.say.call_args[0][0]
|
||||
m = re.match("^{0}'s and {1}'s musical compatibility rating is .*"\
|
||||
" they don't have any artists in common.$".
|
||||
format(self.user1, self.user2), out, flags=re.UNICODE)
|
||||
self.assertTrue(m)
|
||||
|
|
Loading…
Reference in New Issue