| @@ -0,0 +1,36 @@ | |||||
| # -*- coding: utf-8 -*- | |||||
| # | |||||
| # Public domain, 2013 Legoktm | |||||
| # | |||||
| from json import loads | |||||
| from urllib import quote | |||||
| from urllib2 import urlopen | |||||
| from earwigbot.commands import Command | |||||
| class UrbanDictionary(Command): | |||||
| """Get the real definition of a word.""" | |||||
| name = "urban" | |||||
| commands = ["dictt", "definee", "defne", "dct", "ud"] | |||||
| def process(self, data): | |||||
| if not data.args: | |||||
| return | |||||
| q = ' '.join(data.args) | |||||
| url = "http://api.urbandictionary.com/v0/define?term={0}" | |||||
| q = quote(q, safe="") | |||||
| query = urlopen(url.format(q)).read() | |||||
| res = loads(query) | |||||
| if res['result_type'] == 'exact': | |||||
| defin = res['list'][0] | |||||
| msg = 'Definition: {definition}; example: {example}'.format(**defin) | |||||
| self.reply(data, msg) | |||||
| elif res['result_type'] == 'fulltext': | |||||
| l = [i['word'] for i in res['list']] | |||||
| msg = 'Here are some close matches...: {0}'.format(', '.join(l)) | |||||
| self.reply(data, msg) | |||||
| else: | |||||
| self.reply(data, 'Sorry, no results found :(') | |||||