|
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) |
|
|