import json import random import time try: from googleapi import google except ImportError: print("GoogleAPI not installed. Command : pip install git+https://github.com/abenassi/Google-Search-API") misperrors = {'error': 'Error'} mispattributes = {'input': ['url'], 'output': ['text']} moduleinfo = { 'author': 'Oun & Gindt', 'module-type': ['hover'], 'name': 'Google Search', 'description': 'An expansion hover module to expand google search information about an URL', 'version': '1.0', 'logo': 'google.png', 'requirements': ['The python Google Search API library'], 'features': 'The module takes an url as input to query the Google search API. The result of the query is then return as raw text.', 'references': ['https://github.com/abenassi/Google-Search-API'], 'input': 'An url attribute.', 'output': 'Text containing the result of a Google search on the input url.', } def sleep(retry): time.sleep(random.uniform(0, min(40, 0.01 * 2 ** retry))) def handler(q=False): if q is False: return False request = json.loads(q) if not request.get('url'): return {'error': "Unsupported attributes type"} num_page = 1 res = "" # The googleapi module sets a random useragent. The output depends on the useragent. # It's better to retry 3 times. for retry in range(3): search_results = google.search(request['url'], num_page) if len(search_results) > 0: break sleep(retry) for i, search_result in enumerate(search_results): res += "("+str(i+1)+")" + '\t' res += json.dumps(search_result.description, ensure_ascii=False) res += '\n\n' return {'results': [{'types': mispattributes['output'], 'values':res}]} def introspection(): return mispattributes def version(): return moduleinfo