server-personification/lib/openai/google.py

56 lines
1.9 KiB
Python

import json
import serpapi
from config import SERPAPI_API_KEY
from lib.jsonify import jsonify_anything
client = serpapi.Client(api_key=SERPAPI_API_KEY)
def search_google(query: str):
if not SERPAPI_API_KEY:
return {'error': True, 'message': 'The SerpAPI key has not been provided, so this function is disabled.'}
results = client.search(q=query, engine="google", hl="en", gl="us")
del results['serpapi_pagination']
del results['search_metadata']
del results['pagination']
del results['search_parameters']
del results['search_information']
if results.get('inline_videos'):
del results['inline_videos']
# Need to dump and reparse the JSON so that it is actually formatted correctly.
return json.loads(jsonify_anything(results))
def search_google_maps(query: str, latitude: float, longitude: float, zoom: float = None):
"""
https://serpapi.com/google-maps-api#api-parameters-geographic-location-ll
"""
if not SERPAPI_API_KEY:
return {'error': True, 'message': 'The SerpAPI key has not been provided, so this function is disabled.'}
if zoom:
z_str = f',{zoom}z'
else:
z_str = ''
results = client.search(q=query,
engine="google_maps",
ll=f'@{latitude},{longitude}{z_str}',
type='search',
)
del results['search_parameters']
del results['search_metadata']
del results['serpapi_pagination']
return json.loads(jsonify_anything(results))
def search_google_news(query: str):
if not SERPAPI_API_KEY:
return {'error': True, 'message': 'The SerpAPI key has not been provided, so this function is disabled.'}
results = client.search(q=query, engine="google_news", hl="en", gl="us")
del results['menu_links']
del results['search_metadata']
del results['search_parameters']
return json.loads(jsonify_anything(results))