Пример #1
0
    def execute(self, message):
        """
        @type message: IRCMessage
        """
        if message.User.Name != message.ReplyTo:
            return IRCResponse(ResponseType.Say, "GPS Lookup must be done via PM", message.ReplyTo)
        
        if len(message.ParameterList) > 0:
            if self.api_key is None:
                return IRCResponse(ResponseType.Say, "[Bing Maps API key not found]", message.ReplyTo)

            url = "http://dev.virtualearth.net/REST/v1/Locations?q={0}&key={1}".format(urllib.quote_plus(message.Parameters), self.api_key)

            j = WebUtils.sendToServer(url)
            result = json.loads(j)

            if result['resourceSets'][0]['estimatedTotal'] == 0:
                print result
                return IRCResponse(ResponseType.Say,
                                   "Couldn't find GPS coords for '{0}', sorry!".format(message.Parameters),
                                   message.ReplyTo)

            coords = result['resourceSets'][0]['resources'][0]['point']['coordinates']

            return IRCResponse(ResponseType.Say,
                               "GPS coords for '{0}' are: {1},{2}".format(message.Parameters, coords[0], coords[1]),
                               message.ReplyTo)

        else:
            return IRCResponse(ResponseType.Say,
                               "You didn't give an address to look up",
                               message.ReplyTo)
Пример #2
0
 def execute(self, message):
     """
     @type message: IRCMessage
     """
     if len(message.ParameterList) == 0:
         return IRCResponse(ResponseType.Say,
                            "You didn't give an expression to calculate! {0}".format(self.help),
                            message.ReplyTo)
     
     query = urllib.quote(message.Parameters.encode('utf8'))
     j = WebUtils.sendToServer('http://www.google.com/ig/calculator?hl=en&q=' + query)
     j = re.sub(r"{\s*'?(\w)", r'{"\1', j)
     j = re.sub(r",\s*'?(\w)", r',"\1', j)
     j = re.sub(r"(\w)'?\s*:", r'\1":', j)
     j = re.sub(r":\s*'(\w)'\s*([,}])", r':"\1"\2', j)
     j = self.htmlParser.unescape(j)
     j = j.replace('\xa0', ',')
     j = j.replace('\\x3c', '<')
     j = j.replace('\\x3e', '>')
     j = j.replace('<sup>', '^(')
     j = j.replace('</sup>', ')')
     print j
     result = json.loads(j)
     
     if len(result['rhs']) > 0:
         return IRCResponse(ResponseType.Say,
                            "{1}'s Result: {0}".format(result['rhs'], message.User.Name),
                            message.ReplyTo)
     if len(result['error']) > 0:
         return IRCResponse(ResponseType.Say,
                            'Calculation Error or Unsupported Operations',
                            message.ReplyTo)
Пример #3
0
    def execute(self, message):
        """
        @type message: IRCMessage
        """
        if len(message.ParameterList) == 0:
            return IRCResponse(ResponseType.Say, 'Define what?',
                               message.ReplyTo)

        query = urllib.quote(message.Parameters.encode('utf8'))
        url = 'http://www.google.com/dictionary/json?callback=a&sl=en&tl=en&q={0}'.format(
            query)
        j = WebUtils.sendToServer(url)
        j = j[2:]
        j = j[:-10]
        j = j.decode('string_escape')
        j = re.sub(r'</?[^>]+?>', '', j)
        defs = json.loads(j)

        numDefs = 0
        defsToDisp = 3
        responses = [
            IRCResponse(ResponseType.Say,
                        'Definitions for {0}:'.format(message.Parameters),
                        message.ReplyTo)
        ]
        defToDispIf = None
        for wordType in defs['primaries']:
            for definition in wordType['entries']:
                if definition['type'] == 'meaning':
                    numDefs += 1
                    if numDefs <= defsToDisp:
                        responses.append(
                            IRCResponse(
                                ResponseType.Say, '{0}. {1}'.format(
                                    numDefs, definition['terms'][0]['text']),
                                message.ReplyTo))
                    if numDefs == defsToDisp + 1:
                        defToDispIf = IRCResponse(
                            ResponseType.Say,
                            '{0}. {1}'.format(numDefs,
                                              definition['terms'][0]['text']),
                            message.ReplyTo)
        if numDefs > defsToDisp + 1:
            responses.append(
                IRCResponse(
                    ResponseType.Say,
                    'And {1} more here: www.google.com/#tbs=dfn:1&q={0}'.
                    format(query, numDefs - defsToDisp), message.ReplyTo))
        elif numDefs == defsToDisp + 1:
            responses.append(defToDispIf)

        if numDefs == 0:
            return IRCResponse(
                ResponseType.Say,
                'No definitions found for {0}'.format(message.Parameters),
                message.ReplyTo)

        return responses
Пример #4
0
 def execute(self, message):
     """
     @type message: IRCMessage
     """
     if len(message.ParameterList) == 0:
         return IRCResponse(ResponseType.Say, 'Define what?', message.ReplyTo)
     
     query = urllib.quote(message.Parameters.encode('utf8'))
     url = 'http://www.google.com/dictionary/json?callback=a&sl=en&tl=en&q={0}'.format(query)
     j = WebUtils.sendToServer(url)
     j = j[2:]
     j = j[:-10]
     j = j.decode('string_escape')
     j = re.sub(r'</?[^>]+?>', '', j)
     defs = json.loads(j)
     
     numDefs = 0
     defsToDisp = 3
     responses = [IRCResponse(ResponseType.Say, 'Definitions for {0}:'.format(message.Parameters), message.ReplyTo)]
     defToDispIf = None
     for wordType in defs['primaries']:
         for definition in wordType['entries']:
             if definition['type'] == 'meaning':
                 numDefs += 1
                 if numDefs <= defsToDisp:
                     responses.append(IRCResponse(ResponseType.Say, '{0}. {1}'.format(numDefs, definition['terms'][0]['text']), message.ReplyTo))
                 if numDefs == defsToDisp+1:
                     defToDispIf = IRCResponse(ResponseType.Say, '{0}. {1}'.format(numDefs, definition['terms'][0]['text']), message.ReplyTo)
     if numDefs > defsToDisp+1:
         responses.append(IRCResponse(ResponseType.Say, 'And {1} more here: www.google.com/#tbs=dfn:1&q={0}'.format(query, numDefs-defsToDisp), message.ReplyTo))
     elif numDefs == defsToDisp+1:
         responses.append(defToDispIf)
                 
     if numDefs == 0:
         return IRCResponse(ResponseType.Say, 'No definitions found for {0}'.format(message.Parameters), message.ReplyTo)
     
     return responses