Exemple #1
0
    def google(self, message):
        '''
google <string> [results <number>]:
    google <string> in google.
    results - number of printed search results.'''
        try: (text, numresults) = message.ctext.rsplit(' results ', 1)
        except ValueError:
            text = message.ctext
            numresults = 1
        
        try: numresults = int(numresults)
        except Exception: numresults = 1        
        
        response = json.loads(goUrl('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&', {'q' : text}))
        
        if response and response.has_key('responseData') and response['responseData'] and response['responseData'].has_key('results'):
            num = 0
            for result in response['responseData']['results']:
                if numresults > 0 and num >= numresults:
                    break
                result['content'] = result['content'].replace('<b>', '').replace('</b>', '')                
                message.reply(' '.join([result['titleNoFormatting'], result['content'], result['url']]))
                num += 1
        else:
            message.reply('NO WAI!')
Exemple #2
0
    def translate(self, message):
        '''
translate <string> [lang <language>|<language>]:
    translate <string> using google api.
    lang option specifies the direction of translation. <language> it is 2-character code of language.
    Default direction: en|ru'''
        try: (text, lang) = message.ctext.rsplit(' lang ', 1)
        except ValueError:
            text = message.ctext
            lang = 'en|ru'
        
        if lang.find('jp') >= 0:
            message.reply('Use ja, Luke.')
            return
        
        langs = lang.split('|')
        response = ''
        for i in range(0, len(langs)-1):
            response = json.loads(goUrl('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&',
                                   {'q' : text,'langpair':langs[i]+'|'+langs[i+1]}))
            if response and response.has_key('responseData') and response['responseData'] and response['responseData'].has_key('translatedText'):
                text = response['responseData']['translatedText']
            else:
                message.reply('Translate from ' + langs[i] + ' to ' + langs[i+1] + ' fail. Last: ' + text)
                return
        if response and response.has_key('responseData') and response['responseData'] and response['responseData'].has_key('translatedText'):
            message.reply(response['responseData']['translatedText'])
        else:
            message.reply('NO WAI!')
Exemple #3
0
    def anime(self, message):
        """
anime <string> [results <number>] [page <number>]:
    Search <string> as record name in catalog database and display matches.
    result - number of results to display. Default: 1. Maximum: 20.
    page - number of results page to display
    sort - not realised yet
    field - not supported by api yet."""
        if not self.csrf:
            self.csrf = self.getcsrf()
        try:
            (text, page) = message.ctext.rsplit(" page ", 0)
        except ValueError:
            text = message.ctext
            page = 0
        try:
            (text, numresults) = text.rsplit(" results ", 1)
            numresults = int(numresults)
        except ValueError:
            numresults = 3
        ret = goUrl(
            "http://anicat.net/ajax/search/",
            {"string": text, "page": page, "limit": numresults, "csrfmiddlewaretoken": self.csrf},
            True,
            {"csrftoken": self.csrf},
        )
        ret = json.loads(ret)
        if not ret:
            message.reply("No!")
            return
        if ret["response"] == "error":
            message.reply(ret["text"])
        else:

            if not ret["text"]["count"]:
                message.reply("Nothing found.")
            else:
                response = str(ret["text"]["count"]) + " results total. "
                response += "Page %i of %i \n" % (ret["text"]["page"] + 1, int(ret["text"]["count"]) / numresults + 1)
                rescount = 0
                for elem in ret["text"]["items"]:
                    rescount += 1
                    if rescount > numresults:
                        break
                    response += "%s (%s), Translation: %s\n" % (
                        self.encd(elem["name"]),
                        elem["type"],
                        elem["translation"],
                    )
                    response += "Catalog id: %d http://anicat.net/card/%d/\n" % (elem["id"], elem["id"])
                message.reply(response)
Exemple #4
0
    def aniget(self, message):
        """
aniget <number> <string>:
    Return <string> parameter of record with id <number>.
    Multiple fields supported with comma separator between."""
        if not self.csrf:
            self.csrf = self.getcsrf()
        try:
            cid, text = message.ctext.split(" ", 1)
            int(cid)
        except Exception:
            message.reply('NO WAI!\nTry "aniget help"')
            return
        ret = json.loads(
            goUrl(
                "http://anicat.net/ajax/get/",
                {"id": cid, "field": text, "csrfmiddlewaretoken": self.csrf},
                True,
                {"csrftoken": self.csrf},
            )
        )
        if not ret:
            message.reply("No!")
            return
        if ret["response"] == "error":
            message.reply(ret["text"])
        else:
            resp = ""
            r = ret["text"]
            print r
            for o in r["order"]:
                elem = r[o]
                if elem:
                    resp += "\n %s: " % o.capitalize()
                    if type(elem).__name__ == "list":
                        for el in elem:
                            resp += "\n"
                            if type(el).__name__ == "dict" and el.has_key("name") and el["name"]:
                                resp += self.encd(el["name"])
                                if el.has_key("comm") and el["comm"]:
                                    resp += "(%s)" % self.encd(el["comm"])
                                if el.has_key("role") and el["role"]:
                                    resp += " as " + self.encd(el["role"])
                            else:
                                resp += self.encd(el)
                    else:
                        resp += self.encd(elem)
                message.reply(resp)