Upload 2 files
Browse files- app.py +52 -0
- requirements.txt +7 -0
app.py
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import time
|
2 |
+
import gradio as gr
|
3 |
+
import requests
|
4 |
+
import pandas as pd
|
5 |
+
|
6 |
+
|
7 |
+
api_key = 'AIzaSyB3o8PzB6JgCDqBdNfbyofIycOJURGyn_I'
|
8 |
+
|
9 |
+
def get_json_places(query_param,key_param):
|
10 |
+
url = f'https://maps.googleapis.com/maps/api/place/textsearch/json?query={query_param}&key={key_param}'
|
11 |
+
req = requests.get(url)
|
12 |
+
json_res = req.json()
|
13 |
+
return json_res
|
14 |
+
|
15 |
+
def get_all_results(json_file, key_param=api_key):
|
16 |
+
places_results = json_file['results']
|
17 |
+
is_next = 'next_page_token' in json_file
|
18 |
+
while is_next is True:
|
19 |
+
token = json_file['next_page_token']
|
20 |
+
url = f'https://maps.googleapis.com/maps/api/place/textsearch/json?pagetoken={token}&key={key_param}'
|
21 |
+
time.sleep(2)
|
22 |
+
new_req = requests.get(url)
|
23 |
+
json_file = new_req.json()
|
24 |
+
places_results += json_file['results']
|
25 |
+
is_next = 'next_page_token' in json_file
|
26 |
+
return places_results
|
27 |
+
|
28 |
+
|
29 |
+
def main_execution(text_search, key_param=api_key):
|
30 |
+
text_search = text_search.replace(" ", "%20")
|
31 |
+
json_obj = get_json_places(text_search,key_param)
|
32 |
+
res = get_all_results(json_obj,key_param)
|
33 |
+
data = pd.DataFrame.from_records(res)
|
34 |
+
data = data.loc[data.business_status=='OPERATIONAL', ['name','price_level', 'rating','user_ratings_total','formatted_address','types']]
|
35 |
+
data.columns = ['Όνομα καταστήματος','Επίπεδο τιμών', 'βαθμολογία','αριθμός αξιολογήσεων','διεύθυνση','τύπους']
|
36 |
+
return gr.DataFrame(data.sort_values(by='αριθμός αξιολογήσεων',ascending=False))
|
37 |
+
|
38 |
+
if __name__ == "__main__":
|
39 |
+
desc = ("## Αυτή η εφαρμογή σας βοηθά να βρείτε όλες τις καφετέριες που αναφέρονται στο google σε μια γειτονιά.")
|
40 |
+
long_desc = ("""Στο πεδίο αναζήτησης, μπορείτε να πληκτρολογήσετε το όνομα της γειτονιάς καθώς και το είδος των καταστημάτων που θέλετε να αναζητήσετε. \n
|
41 |
+
π.χ. "Φουρνοι στη Γλυφάδα, Αττική\n
|
42 |
+
Τα αποτελέσματα εμφανίζονται από τον υψηλότερο καταγεγραμμένο αριθμό αξιολογήσεων χρηστών έως τον χαμηλότερο.""")
|
43 |
+
with gr.Blocks() as demo:
|
44 |
+
gr.Markdown("# TS Platinum, εφαρμογή για κυνήγι")
|
45 |
+
gr.Markdown(desc)
|
46 |
+
gr.Markdown(long_desc)
|
47 |
+
region = gr.Textbox(label="Πεδίο αναζήτησης", info="π.χ. Φουρνοι στη Γλυφάδα, Αττική")
|
48 |
+
output_file = gr.DataFrame()
|
49 |
+
download_button = gr.Button("Βρείτε τα θηράματα!")
|
50 |
+
download_button.click(main_execution,inputs=[region], outputs=[output_file])
|
51 |
+
|
52 |
+
demo.launch(share=True)
|
requirements.txt
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
gradio==4.37.2
|
2 |
+
gradio_client==1.0.2
|
3 |
+
huggingface-hub==0.23.4
|
4 |
+
matplotlib==3.9.0
|
5 |
+
numpy==2.0.0
|
6 |
+
pandas==2.2.2
|
7 |
+
requests==2.32.3
|