Upload folder using huggingface_hub
Browse files
app.py
CHANGED
|
@@ -90,8 +90,7 @@ if not check_password():
|
|
| 90 |
st.stop()
|
| 91 |
|
| 92 |
|
| 93 |
-
|
| 94 |
-
def configure_api():
|
| 95 |
config_dir = os.path.join(os.path.dirname(__file__), "csv_config")
|
| 96 |
csv_files = glob.glob(os.path.join(config_dir, "*.csv"))
|
| 97 |
|
|
@@ -130,6 +129,10 @@ def configure_api():
|
|
| 130 |
except Exception as e:
|
| 131 |
return {"status": "error", "message": f"Impossibile configurare l'API: {e}"}
|
| 132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 133 |
# Inizializza la configurazione silenziosamente
|
| 134 |
with st.spinner("Inizializzazione configurazione API..."):
|
| 135 |
config_status = configure_api()
|
|
@@ -193,6 +196,17 @@ if uploaded_img is not None or image_to_analyze_path is not None:
|
|
| 193 |
data = {"client_id": CLIENT_ID}
|
| 194 |
try:
|
| 195 |
resp = requests.post(f"{API_BASE_URL}/predict", files=files, data=data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
if resp.status_code == 200:
|
| 197 |
predictions = resp.json().get("predictions", [])
|
| 198 |
if not predictions:
|
|
|
|
| 90 |
st.stop()
|
| 91 |
|
| 92 |
|
| 93 |
+
def _do_configure_api():
|
|
|
|
| 94 |
config_dir = os.path.join(os.path.dirname(__file__), "csv_config")
|
| 95 |
csv_files = glob.glob(os.path.join(config_dir, "*.csv"))
|
| 96 |
|
|
|
|
| 129 |
except Exception as e:
|
| 130 |
return {"status": "error", "message": f"Impossibile configurare l'API: {e}"}
|
| 131 |
|
| 132 |
+
@st.cache_resource(show_spinner=False)
|
| 133 |
+
def configure_api():
|
| 134 |
+
return _do_configure_api()
|
| 135 |
+
|
| 136 |
# Inizializza la configurazione silenziosamente
|
| 137 |
with st.spinner("Inizializzazione configurazione API..."):
|
| 138 |
config_status = configure_api()
|
|
|
|
| 196 |
data = {"client_id": CLIENT_ID}
|
| 197 |
try:
|
| 198 |
resp = requests.post(f"{API_BASE_URL}/predict", files=files, data=data)
|
| 199 |
+
|
| 200 |
+
if resp.status_code == 409:
|
| 201 |
+
st.info("Configurazione assente in questa istanza. Sincronizzazione in corso... riprova la predizione in automatico.")
|
| 202 |
+
conf_resp = _do_configure_api()
|
| 203 |
+
if conf_resp.get("status") == "success":
|
| 204 |
+
# Ripopolare i file consumati da request.post e riprovare
|
| 205 |
+
files = {"image": (img_name, img_bytes, img_type)}
|
| 206 |
+
resp = requests.post(f"{API_BASE_URL}/predict", files=files, data=data)
|
| 207 |
+
else:
|
| 208 |
+
st.error(f"Errore durante l'auto-configurazione: {conf_resp.get('message')}")
|
| 209 |
+
|
| 210 |
if resp.status_code == 200:
|
| 211 |
predictions = resp.json().get("predictions", [])
|
| 212 |
if not predictions:
|