diff --git a/plugins/fact.py b/plugins/fact.py index 91d40ff..6ca9a64 100755 --- a/plugins/fact.py +++ b/plugins/fact.py @@ -32,4 +32,9 @@ def fact(inp, say=False, nick=False): attempts += 1 continue - return "%s - %s" % (fact, web.isgd(link)) + try: + url = web.isgd(link) + except (web.ShortenError, http.HTTPError): + url = link + + return "%s - %s" % (fact, url) diff --git a/plugins/lmgtfy.py b/plugins/lmgtfy.py index a15bf4c..fa4e763 100644 --- a/plugins/lmgtfy.py +++ b/plugins/lmgtfy.py @@ -6,5 +6,9 @@ from util import hook, web, http def lmgtfy(inp, bot=None): "lmgtfy [phrase] - Posts a google link for the specified phrase" - url = "http://lmgtfy.com/?q=%s" % http.quote_plus(inp) - return web.isgd(url) + link = "http://lmgtfy.com/?q=%s" % http.quote_plus(inp) + + try: + return web.isgd(link) + except (web.ShortenError, http.HTTPError): + return link diff --git a/plugins/shorten.py b/plugins/shorten.py index 93493a9..3cdb43c 100755 --- a/plugins/shorten.py +++ b/plugins/shorten.py @@ -1,8 +1,6 @@ # Plugin by Lukeroge -from util import hook -from urllib2 import HTTPError -from util.web import isgd +from util import hook, http, web @hook.command @@ -10,6 +8,6 @@ def shorten(inp): "shorten - Makes an is.gd shortlink to the url provided." try: - return isgd(inp) - except (HTTPError): - return "Could not shorten '%s'!" % inp + return web.isgd(inp) + except (web.ShortenError, http.HTTPError) as error: + return error diff --git a/plugins/util/web.py b/plugins/util/web.py index 5535c68..834af69 100755 --- a/plugins/util/web.py +++ b/plugins/util/web.py @@ -11,16 +11,25 @@ yql_env = "http://datatables.org/alltables.env" YQL = yql.Public() -def query(query, params={}): - """ runs a YQL query and returns the results """ - return YQL.execute(query, params, env=yql_env) +class ShortenError(Exception): + def __init__(self, code, text): + self.code = code + self.text = text + + def __str__(self): + return self.text def isgd(url): """ shortens a URL with the is.gd PAI """ url = urlnorm.normalize(url.encode('utf-8'), assume_scheme='http') - params = urllib.urlencode({'format': 'simple', 'url': url}) - return http.get("http://is.gd/create.php?%s" % params) + params = urllib.urlencode({'format': 'json', 'url': url}) + request = http.get_json("http://is.gd/create.php?%s" % params) + + if "errorcode" in request: + raise ShortenError(request["errorcode"], request["errormessage"]) + else: + return request["shorturl"] def haste(text): @@ -28,3 +37,8 @@ def haste(text): page = http.get(paste_url + "/documents", post_data=text) data = json.loads(page) return("%s/%s.txt" % (paste_url, data['key'])) + + +def query(query, params={}): + """ runs a YQL query and returns the results """ + return YQL.execute(query, params, env=yql_env) diff --git a/plugins/wolframalpha.py b/plugins/wolframalpha.py index d15d7a4..0040817 100755 --- a/plugins/wolframalpha.py +++ b/plugins/wolframalpha.py @@ -22,7 +22,7 @@ def wolframalpha(inp, bot=None): http.quote_plus(inp.encode('utf-8')) try: short_url = web.isgd(query_url) - except (http.HTTPError): + except (web.ShortenError, http.HTTPError): short_url = query_url pod_texts = []