Changed google.py around

This commit is contained in:
Luke Rogers 2012-02-19 15:01:22 +13:00
parent 0eb3775e61
commit 1810f0a0bd

55
plugins/google.py Normal file
View file

@ -0,0 +1,55 @@
import random
from util import hook, http
def api_get(kind, query):
url = 'http://ajax.googleapis.com/ajax/services/search/%s?' \
'v=1.0&safe=off'
return http.get_json(url % kind, q=query)
@hook.command
def gis(inp):
'''.gis <term> -- returns first google image result (safesearch off)'''
parsed = api_get('images', inp)
if not 200 <= parsed['responseStatus'] < 300:
raise IOError('error searching for images: %d: %s' % (
parsed['responseStatus'], ''))
if not parsed['responseData']['results']:
return 'no images found'
return random.choice(parsed['responseData']['results'][:10]) \
['unescapedUrl'] # squares is dumb
@hook.command('g')
@hook.command
def google(inp):
'''.g/.google <query> -- returns first google search result'''
parsed = api_get('web', inp)
if not 200 <= parsed['responseStatus'] < 300:
raise IOError('error searching for pages: %d: %s' % (
parsed['responseStatus'], ''))
if not parsed['responseData']['results']:
return 'no results found'
result = parsed['responseData']['results'][0]
title = http.unescape(result['titleNoFormatting'])
content = http.unescape(result['content'])
if len(content) == 0:
content = "No description available."
else:
content = http.html.fromstring(content).text_content()
out = '%s :: %s :: %s' % (title, content, result['unescapedUrl'])
out = ' '.join(out.split())
if len(out) > 300:
out = out[:out.rfind(' ')] + '..."'
return out