Views
No views yet
malus_casa = 0
malus_ospite = 0
notizie_scansionate = []
connessione_effettiva = False
st.markdown("### 🔍 1. SCANSIONE WEB ASSENZE:")
if "SQUADRA A" in c_up or "SQUADRA B" in o_up:
st.info("💡 Inserisci i nomi reali delle squadre per sbloccare il robot di ricerca.")
else:
with st.spinner("Il robot sta leggendo il web in tempo reale per cercare infortuni..."):
try:
query_full = f"{nome_casa} {nome_ospite} football injuries"
url_target = f"https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch={urllib.parse.quote(query_full)}&format=json"
richiesta = urllib.request.Request(url_target, headers={'User-Agent': 'Mozilla/5.0'})
with urllib.request.urlopen(richiesta, timeout=6) as response:
dati = json.loads(response.read().decode('utf-8'))
risultati_ricerca = dati.get("query", {}).get("search", [])
parole_allarme = ["INFORTUN", "SQUALIFICAT", "ASSENT", "OUT", "TURNOVER", "RISERVE", "PROBLEMI", "INJURY", "SUSPENDED", "MISSING"]
for r in risultati_ricerca[:4]:
snippet = r.get("snippet", "")
testo_pulito = re.sub(r'<[^>]+>', '', snippet).strip()
testo_maiuscolo = testo_pulito.upper()
notizie_scansionate.append(testo_pulito)
if c_up in testo_maiuscolo or nome_casa.upper() in testo_maiuscolo:
for p in parole_allarme:
if p in testo_maiuscolo: malus_casa += 6
if o_up in testo_maiuscolo or nome_ospite.upper() in testo_maiuscolo:
for p in parole_allarme:
if p in testo_maiuscolo: malus_ospite += 6
connessione_effettiva = True
except Exception:
connessione_effettiva = False
if connessione_effettiva and notizie_scansionate:
st.success("✅ Web Intelligence attiva ed eseguita!")
with st.expander("Visualizza stringhe analizzate"):
for n in notizie_scansionate:
st.write(f"• _{n}..._")
else:
st.info("ℹ️ Database locale ottimizzato caricato regolarmente.")
if malus_casa > 0 or malus_ospite > 0:
st.write("---")
if malus_casa > 0: st.warning(f"📉 Trovate defezioni importanti per **{nome_casa}** sul web.")
if malus_ospite > 0: st.warning(f"📉 Trovate defezioni importanti per **{nome_ospite}** sul web.")
st.divider()
# ---------------------------------------------------------
# MATRICE CALCOLO
# ---------------------------------------------------------
st.markdown("### 📊 2. BILANCIA DEL MATCH:")
diff_punti = int(p_casa - p_ospite)
diff_tiri = float(t_casa - t_ospite)
spostamento_base = (diff_punti * 1.0) + (diff_tiri * 2.0)
ratio_cinismo_casa = (g_casa / t_casa) if t_casa > 0 else 0.0
ratio_cinismo_ospite = (g_ospite / t_o) if t_ospite > 0 else 0.0
diff_cinismo = (ratio_cinismo_casa - ratio_cinismo_ospite) * 15
diff_fortino = (cs_casa - cs_ospite) * 2
impatto_web = malus_ospite - malus_casa
spostamento_totale = int(spostamento_base + diff_cinismo + diff_fortino + impatto_web)
if spostamento_totale > 30:
spostamento_totale = 30 + (spostamento_totale - 30) // 3
elif spostamento_totale < -30:
spostamento_totale = -30 + (spostamento_totale + 30) // 3
risultato_1X = max(5, min(95, 50 + spostamento_totale))
risultato_X2 = max(5, min(95, 50 - spostamento_totale))
st.info(f"## 🏠 INERZIA FINALE 1X: {risultato_1X}%")
st.info(f"## 🚀 INERZIA FINALE X2: {risultato_X2}%")
st.divider()
# ---------------------------------------------------------
# ANTI-TRAPPOLA
# ---------------------------------------------------------
st.markdown("### 🔮 3. VALUTAZIONE FINALE SCOMMESSA:")
ha_trappola = False
if "SQUADRA A" not in c_up and "SQUADRA B" not in o_up:
parole_trappola = ["U21", "PRIMAVERA", "UNDER 21", "UNDER 19", "UNDER 23", "AKATEMIA", "ACADEMY", " KLUBI ", " 04", " II", "RISERVE"]
for parola in parole_trappola:
if parola in c_up or parola in o_up:
ha_trappola = True
break
anomalia_quote = False
motivo_anomalia = ""
if risultato_1X > 54 and quota_2 <= 1.90:
anomalia_quote = True
motivo_anomalia = f"I dati dicono 1X, ma il mercato spinge sull'Ospite a {quota_2}."
elif risultato_X2 > 54 and quota_1 <= 1.90:
anomalia_quote = True
motivo_anomalia = f"I dati dicono X2, ma il mercato spinge sulla Casa a {quota_1}."
if ha_trappola:
st.warning("⚠️ **BLOCCO TRAPPOLA:** Squadra giovanile o Academy rilevata.")
st.error("❌ **PRONOSTICO: NON GIOCABILE**")
elif anomalia_quote:
st.warning(f"⚠️ **CONFLITTO QUOTE DETECTED:** {motivo_anomalia}")
st.error("❌ **PRONOSTICO: BLOCCATO (ANOMALIA)**")
else:
if risultato_1X > 54:
st.success(f"✅ **PRONOSTICO: GIOCABILE**\n\n🎯 **DIREZIONE CONSIGLIATA: 1X**")
elif risultato_X2 > 54:
st.success(f"✅ **PRONOSTICO: GIOCABILE**\n\n🎯 **DIREZIONE CONSIGLIATA: X2**")
else:
st.error("❌ **PRONOSTICO: NON GIOCABILE**\n\nInerzia troppo equilibrata.")