import time import gradio as gr import requests import pandas as pd api_key = 'AIzaSyB3o8PzB6JgCDqBdNfbyofIycOJURGyn_I' def get_json_places(query_param,key_param): url = f'https://maps.googleapis.com/maps/api/place/textsearch/json?query={query_param}&key={key_param}' req = requests.get(url) json_res = req.json() return json_res def get_all_results(json_file, key_param=api_key): places_results = json_file['results'] is_next = 'next_page_token' in json_file while is_next is True: token = json_file['next_page_token'] url = f'https://maps.googleapis.com/maps/api/place/textsearch/json?pagetoken={token}&key={key_param}' time.sleep(2) new_req = requests.get(url) json_file = new_req.json() places_results += json_file['results'] is_next = 'next_page_token' in json_file return places_results def main_execution(text_search, key_param=api_key): text_search = text_search.replace(" ", "%20") json_obj = get_json_places(text_search,key_param) res = get_all_results(json_obj,key_param) data = pd.DataFrame.from_records(res) data = data.loc[data.business_status=='OPERATIONAL', ['name','price_level', 'rating','user_ratings_total','formatted_address','types']] data.columns = ['Όνομα καταστήματος','Επίπεδο τιμών', 'βαθμολογία','αριθμός αξιολογήσεων','διεύθυνση','τύπους'] return gr.DataFrame(data.sort_values(by='αριθμός αξιολογήσεων',ascending=False)) if __name__ == "__main__": desc = ("## Αυτή η εφαρμογή σας βοηθά να βρείτε όλες τις καφετέριες που αναφέρονται στο google σε μια γειτονιά.") long_desc = ("""Στο πεδίο αναζήτησης, μπορείτε να πληκτρολογήσετε το όνομα της γειτονιάς καθώς και το είδος των καταστημάτων που θέλετε να αναζητήσετε. \n π.χ. "Φουρνοι στη Γλυφάδα, Αττική\n Τα αποτελέσματα εμφανίζονται από τον υψηλότερο καταγεγραμμένο αριθμό αξιολογήσεων χρηστών έως τον χαμηλότερο.""") with gr.Blocks() as demo: gr.Markdown("# TS Platinum, εφαρμογή για κυνήγι") gr.Markdown(desc) gr.Markdown(long_desc) region = gr.Textbox(label="Πεδίο αναζήτησης", info="π.χ. Φουρνοι στη Γλυφάδα, Αττική") output_file = gr.DataFrame() download_button = gr.Button("Βρείτε τα θηράματα!") download_button.click(main_execution,inputs=[region], outputs=[output_file]) demo.launch(share=True)