50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
import irc3
|
||
|
import os
|
||
|
import re
|
||
|
import requests
|
||
|
|
||
|
from docopt import Dict as DocOptDict
|
||
|
from irc3.plugins.command import command
|
||
|
from irc3.utils import IrcString
|
||
|
|
||
|
from . import Plugin
|
||
|
from ..utils import date_from_iso
|
||
|
|
||
|
|
||
|
@irc3.plugin
|
||
|
class Urban(Plugin):
|
||
|
requires = ['irc3.plugins.command']
|
||
|
|
||
|
URL = 'https://api.urbandictionary.com/v0/define'
|
||
|
|
||
|
@command
|
||
|
def ud(self, mask: IrcString, channel: IrcString, args: DocOptDict):
|
||
|
"""Searches for query on YouTube and returns first result.
|
||
|
|
||
|
%%ud <query>...
|
||
|
"""
|
||
|
query = ' '.join(args.get('<query>')).lower().strip().split()
|
||
|
|
||
|
if query[-1].isdigit():
|
||
|
idx = int(query[-1]) - 1
|
||
|
query = ' '.join(query[:-1])
|
||
|
else:
|
||
|
idx = 0
|
||
|
|
||
|
data = requests.get(self.URL, params=dict(term=query)).json()
|
||
|
|
||
|
if data['result_type'] == 'no_results':
|
||
|
return '[UrbanDictionary] Query not found'
|
||
|
res = data['list'][idx]
|
||
|
|
||
|
try:
|
||
|
return '[{idx}/{len}] \x02{word}\x02: {definition} - {example}' \
|
||
|
.format(idx=idx + 1,
|
||
|
len=len(data['list']),
|
||
|
word=res['word'],
|
||
|
definition=res['definition'].replace('\r\n', ' '),
|
||
|
example=res['example'].replace('\r\n', ' '))
|
||
|
except IndexError:
|
||
|
return '[UrbanDictionary] Error getting result'
|