diff --git a/plugins/soundc.py b/plugins/soundc.py index 36b6607..4805b91 100644 --- a/plugins/soundc.py +++ b/plugins/soundc.py @@ -1,18 +1,39 @@ from util import hook, http, web -import soundcloud +from urllib import urlencode import re sc_re = (r'(.*:)//(www.)?(soundcloud.com)(.*)', re.I) +def truncate(msg): + nmsg = msg.split(" ") + out = None + x = 0 + for i in nmsg: + if x <= 7: + if out: + out = out + " " + nmsg[x] + else: + out = nmsg[x] + x = x + 1 + if x <= 7: + return out + else: + return out + "..." + @hook.regex(*sc_re) def soundcloud_url(match, bot=None): api_key = bot.config.get("api_keys", {}).get("soundcloud") if not api_key: return "Error: no api key set" url = match.group(1).split(' ')[-1] + "//" + (match.group(2) if match.group(2) else "") + match.group(3) + match.group(4).split(' ')[0] - client = soundcloud.Client(client_id=api_key) - track = client.get('/resolve', url=url) - try: - return "SoundCloud track: \x02%s\x02 by \x02%s\x02 - \x02%s\x02" % (track.title, track.user['username'], web.isgd(track.permalink_url)) - except: - return "SoundCloud user: \x02%s\x02 - \x02%s\x02" % (track.username, web.isgd(track.permalink_url)) + apiurl = "http://api.soundcloud.com" + track = http.get_json(apiurl + '/resolve.json?' + urlencode({'url': url, 'client_id': api_key})) + if track['description']: + desc = ": %s " % truncate(track['description']) + else: + desc = "" + if track['genre'] != "": + genre = "- Genre: \x02%s\x02 " % track['genre'] + else: + genre = "" + return "SoundCloud track: \x02%s\x02 by \x02%s\x02 %s%s- %s plays, %s downloads, %s comments - \x02%s\x02" % (track['title'], track['user']['username'], desc, genre, track['playback_count'], track['download_count'], track['comment_count'], web.isgd(track['permalink_url'])) diff --git a/requirements.txt b/requirements.txt index 67fd59c..ae3c175 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,4 +3,3 @@ lxml==3.1beta1 pyenchant==1.6.5 pydns>=2.3.6 BeautifulSoup4 -soundcloud==0.3.6