Spaces:
Sleeping
Sleeping
import streamlit as st | |
from dotenv import load_dotenv | |
from googleapiclient.discovery import build | |
from functools import cache | |
from slugify import slugify | |
from os import getenv | |
from os.path import exists | |
import json | |
from beautiful_soup.app import extract_content | |
def google_search( query ): | |
api_key = getenv('GOOGLE_SEARCH_API_KEY') | |
# cx = os.getenv('GOOGLE_SEARCH_ENGIN_ID') | |
service = build( | |
"customsearch", | |
"v1", | |
developerKey=api_key, | |
cache_discovery=False | |
) | |
return service.cse().list( | |
q=query, | |
cx='05048cc2df6134a06', | |
).execute() | |
def main(): | |
load_dotenv() | |
st.title('Google Search') | |
query = st.text_input('Search query') | |
if ( query ): | |
file_path = 'search-urls/' + slugify( query ) + '.json' | |
if ( exists( file_path ) ): | |
with open( file_path, 'r' ) as results_file: | |
results = json.load(results_file) | |
else: | |
search_result = google_search( query ) | |
if( int( search_result['searchInformation']['totalResults'] ) > 0 ): | |
results = search_result['items'] | |
with open( file_path, 'w' ) as results_file: | |
json.dump( results, results_file ) | |
else: | |
results = [] | |
if ( len( results ) == 0 ) : | |
st.write( 'No results found.' ) | |
try: | |
for item in results: | |
st.write(item['link']) | |
st.write(extract_content( item['link'] )) | |
except Exception as e: | |
st.exception(e) | |
if __name__ == '__main__': | |
main() | |