From a4f9c2d0706dde792de8ab4d9543667740e524fc Mon Sep 17 00:00:00 2001 From: Luke Rogers Date: Fri, 24 Feb 2012 02:41:13 +1300 Subject: [PATCH] Greatly improved plugins/fmylife.py :) --- plugins/fmylife.py | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/plugins/fmylife.py b/plugins/fmylife.py index fbc88af..881abe6 100644 --- a/plugins/fmylife.py +++ b/plugins/fmylife.py @@ -1,24 +1,39 @@ +# Plugin by Lukeroge +# + import re from util import hook, http, misc from urllib2 import HTTPError +from urlparse import urljoin from BeautifulSoup import BeautifulSoup -url = 'http://www.fmylife.com/random' +base_url = 'http://www.fmylife.com/' @hook.command(autohelp=False) def fml(inp): - ".fml -- gets a random quote from fmyfife.com" + ".fml [id] -- gets a random quote from fmyfife.com" - try: - page = http.get(url) - except (HTTPError, IOError): - return "I tried to use .fml, but it was broken. FML" + if inp: + if not inp.isdigit(): + return "Invalid ID!" + try: + page = http.get(urljoin(base_url, inp)) + except (HTTPError, IOError): + return "Could not fetch #%s. FML" % inp + else: + try: + page = http.get(urljoin(base_url, 'random')) + except (HTTPError, IOError): + return "I tried to use .fml, but it was broken. FML" soup = BeautifulSoup(page) soup.find('div', id='submit').extract() post = soup.body.find('div', 'post') - id = int(post.find('a', 'fmllink')['href'].split('/')[-1]) + try: + id = int(post.find('a', 'fmllink')['href'].split('/')[-1]) + except TypeError: + return "Could not fetch #%s. FML" % inp body = misc.strip_html(' '.join(link.renderContents() for link in post('a', 'fmllink'))) return '(#%d) %s' % (id, body)