# ddg module
# --gry

import urllib.request
from urllib.error import HTTPError,URLError
import socket
import json

@plugin
class ddg(object):
    def __init__(self, server):
        self.server = server
        self.commands = ["ddg"]
        self.server.handle("command", self.handle_command, self.commands)
    
    def handle_command(self, channel, user, cmd, args):
        if len(args) < 1:
            self.server.doMessage(channel, user+": DuckDuckGo.com Zero-Click infoboxes search. Syntax: ddg <query>.")
            return
        try:
            request = "+".join(args)
            sock = urllib.request.urlopen("http://api.duckduckgo.com/?q=%s&o=json" % request)
            data = sock.read()
            sock.close()
            data = data.decode('utf-8')
            if str(json.loads(data)["AbstractText"]) != "":
                self.server.doMessage(channel, user+": "+"%s %s)"%(str(json.loads(data)["AbstractURL"]),str(json.loads(data)["AbstractText"][0:200])))
            elif str(json.loads(data)["Definition"]) != "":
                self.server.doMessage(channel, user+": "+"%s %s"%(str(json.loads(data)["DefinitionURL"]),str(json.loads(data)["Definition"])))
        except Exception as e:
            self.server.doMessage(channel, user+": "+str(e))