Added Duck Duck Go search functionality (only supports zero-click API right now)

master
mutantmonkey 2010-12-31 19:08:42 -05:00
parent c4ce3320fc
commit bfb26c32d6
1 changed files with 45 additions and 0 deletions

45
modules/ddg.py Executable file
View File

@ -0,0 +1,45 @@
#!/usr/bin/python2
"""
ddg.py - duck duck go module
author: mutantmonkey <mutantmonkey@gmail.com>
portions based on search.py by sean b palmer
"""
import random
from urllib import quote as urlquote
from urllib2 import urlopen, HTTPError
import lxml.html
import web
def search(query):
uri = 'https://api.duckduckgo.com/'
args = '?q=%s&o=json' % web.urllib.quote(query.encode('utf-8'))
bytes = web.get(uri + args)
return web.json(bytes)
def result(query):
results = search(query)
try:
return results['Results'][0]['FirstURL']
except IndexError:
return None
def ddg(phenny, input, celsius=False):
""".tfw <query> - Search Duck Duck Go for the specified query."""
query = input.group(2)
if not query:
return phenny.reply(".ddg what?")
uri = result(query)
if uri:
phenny.reply("%s - Results from https://duckduckgo.com/" % uri)
else:
phenny.reply("No results found for '%s'." % query)
ddg.rule = (['ddg'], r'(.*)')
if __name__ == '__main__':
print __doc__.strip()