diff --git a/plugins/spotify.py b/plugins/spotify.py index 8b35586..68543c8 100644 --- a/plugins/spotify.py +++ b/plugins/spotify.py @@ -1,6 +1,7 @@ import re from util import hook, http +from urllib import urlencode gateway = 'http://open.spotify.com/{}/{}' # http spotify gw address spuri = 'spotify:{}:{}' @@ -9,13 +10,30 @@ spotify_re = (r'(spotify:(track|album|artist|user):([a-zA-Z0-9]+))', re.I) http_re = (r'(open\.spotify\.com\/(track|album|artist|user)\/' '([a-zA-Z0-9]+))', re.I) +def sptfy(inp): +# try: +# login = http.get("http://sptfy.com/login.php", post_data=urlencode({'loginUsername': 'xDCloudBot', 'loginPassword': 'rjgw67kf', 'submit': '', 'submitme': '1'}), cookies=True) +# except Exception as e: +# return inp + shortenurl = "http://sptfy.com/index.php" + data = urlencode({'longUrl': inp, 'shortUrlDomain': 1, 'submitted': 1, "shortUrlFolder": 6, "customUrl": "", "shortUrlPassword": "", "shortUrlExpiryDate": "", "shortUrlUses": 0, "shortUrlType": 0}) + try: + soup = http.get_soup(shortenurl, post_data=data, cookies=True) + except: + return inp + try: + link = soup.find('div', {'class': 'resultLink'}).text.strip() + return link + except: + message = "Unable to shorten URL: %s" % soup.find('div', {'class': 'messagebox_text'}).find('p').text.split("
")[0] + return message @hook.command('sptrack') @hook.command def spotify(inp): "spotify -- Search Spotify for " try: - data = http.get_json("http://ws.spotify.com/search/1/track.json", q=inp.strip()) + data = http.get_json("http://ws.spotify.com/search/1/track.json", q=inp.strip()) except Exception as e: return "Could not get track information: {}".format(e) @@ -23,15 +41,14 @@ def spotify(inp): type, id = data["tracks"][0]["href"].split(":")[1:] except IndexError: return "Could not find track." - url = gateway.format(type, id) - return u"{} by {} - {}".format(data["tracks"][0]["name"], data["tracks"][0]["artists"][0]["name"], url) - + url = sptfy(gateway.format(type, id)) + return u"\x02{}\x02 by \x02{}\x02 - \x02{}\x02".format(data["tracks"][0]["name"], data["tracks"][0]["artists"][0]["name"], url) @hook.command def spalbum(inp): "spalbum -- Search Spotify for " try: - data = http.get_json("http://ws.spotify.com/search/1/album.json", q=inp.strip()) + data = http.get_json("http://ws.spotify.com/search/1/album.json", q=inp.strip()) except Exception as e: return "Could not get album information: {}".format(e) @@ -39,15 +56,14 @@ def spalbum(inp): type, id = data["albums"][0]["href"].split(":")[1:] except IndexError: return "Could not find album." - url = gateway.format(type, id) - return u"{} by {} - {}".format(data["albums"][0]["name"], data["albums"][0]["artists"][0]["name"], url) - + url = sptfy(gateway.format(type, id)) + return u"\x02{}\x02 by \x02{}\x02 - \x02{}\x02".format(data["albums"][0]["name"], data["albums"][0]["artists"][0]["name"], url) @hook.command def spartist(inp): "spartist -- Search Spotify for " try: - data = http.get_json("http://ws.spotify.com/search/1/artist.json", q=inp.strip()) + data = http.get_json("http://ws.spotify.com/search/1/artist.json", q=inp.strip()) except Exception as e: return "Could not get artist information: {}".format(e) @@ -55,9 +71,8 @@ def spartist(inp): type, id = data["artists"][0]["href"].split(":")[1:] except IndexError: return "Could not find artist." - url = gateway.format(type, id) - return u"{} - {}".format(data["artists"][0]["name"], url) - + url = sptfy(gateway.format(type, id)) + return u"\x02{}\x02 - \x02{}\x02".format(data["artists"][0]["name"], url) @hook.regex(*http_re) @hook.regex(*spotify_re) @@ -71,8 +86,8 @@ def spotify_url(match): name = data["track"]["name"] artist = data["track"]["artists"][0]["name"] album = data["track"]["album"]["name"] - return u"Spotify Track: {} by {} from the album {}".format(name, artist, album) + return u"Spotify Track: \x02{}\x02 by \x02{}\x02 from the album \x02{}\x02 - \x02{}\x02".format(name, artist, album, sptfy(gateway.format(type, spotify_id))) elif type == "artist": - return u"Spotify Artist: {}".format(data["artist"]["name"]) + return u"Spotify Artist: \x02{}\x02 - \x02{}\x02".format(data["artist"]["name"], sptfy(gateway.format(type, spotify_id))) elif type == "album": - return u"Spotify Album: {} - {}".format(data["album"]["artist"], data["album"]["name"]) + return u"Spotify Album: \x02{}\x02 - \x02{}\x02 - \x02{}\x02".format(data["album"]["artist"], data["album"]["name"], sptfy(gateway.format(type, spotify_id)))