IMYUZURE / app.py
VIATEUR-AI's picture
Update app.py
46529d5 verified
import gradio as gr
def disaster_warning(wind_speed, rain_level, temperature, water_speed, air_pressure):
alerts = []
color = "green"
# Umuyaga
if wind_speed > 80:
alerts.append("⚠️ Umuyaga ukabije! Ishyirwa mu bikorwa rya evacuation rirakenewe.")
color = "red"
elif wind_speed > 50:
alerts.append("⚠️ Umuyaga urimo gukaza, jya witegura.")
if color != "red":
color = "orange"
else:
alerts.append("✅ Umuyaga uri ku rugero rwiza.")
# Imvura
if rain_level > 100:
alerts.append("⚠️ Imvura nyinshi cyane! Hari ibyago byo kunyura mu mazi (Flood).")
color = "red"
elif rain_level > 50:
alerts.append("⚠️ Imvura iragwa, jya witegura gucunga neza umutekano.")
if color != "red":
color = "orange"
else:
alerts.append("✅ Imvura iri ku rugero rusanzwe.")
# Ubushyuhe
if temperature > 35:
alerts.append("⚠️ Ubushyuhe burenze! Hari ibyago byo gufatwa na heat stroke.")
color = "red"
elif temperature < 0:
alerts.append("⚠️ Ubushyuhe buke cyane! Hari ibyago byo gufatwa na hypothermia.")
if color != "red":
color = "orange"
else:
alerts.append("✅ Ubushyuhe buri ku rugero rwiza.")
# Umuvuduko w’amazi
if water_speed > 10:
alerts.append("⚠️ Umuvuduko w’amazi uri hejuru cyane, hari ibyago by’imyuzure.")
color = "red"
elif water_speed > 5:
alerts.append("⚠️ Umuvuduko w’amazi uri hejuru, witegure.")
if color != "red":
color = "orange"
else:
alerts.append("✅ Umuvuduko w’amazi uri ku rugero rwiza.")
# Uburemere bw’umwuka
if air_pressure < 980:
alerts.append("⚠️ Uburemere bw’umwuka buri hasi cyane, bishobora gutera ibiza.")
color = "red"
elif air_pressure < 1000:
alerts.append("⚠️ Uburemere bw’umwuka buri hasi, jya witegura.")
if color != "red":
color = "orange"
else:
alerts.append("✅ Uburemere bw’umwuka buri ku rugero rwiza.")
return "\n".join(alerts), color
def send_alert(email, message):
# Simulation yo kohereza email
if email and "@" in email:
return f"✅ Alert yoherejwe kuri {email}"
else:
return "❌ Email yinjijwe si nziza."
with gr.Blocks() as demo:
gr.Markdown("## Disaster Warning System (Version ifite Ibipimo byinshi, Alerts, na Colors)")
wind = gr.Slider(0, 150, step=1, label="Umuyaga (km/h)", value=20)
rain = gr.Slider(0, 200, step=1, label="Imvura (mm)", value=10)
temp = gr.Slider(-20, 50, step=1, label="Ubushyuhe (°C)", value=25)
water = gr.Slider(0, 20, step=0.1, label="Umuvuduko w’amazi (m/s)", value=2)
pressure = gr.Slider(950, 1050, step=1, label="Uburemere bw’umwuka (hPa)", value=1013)
output = gr.Textbox(label="Amakuru y'Ikibazo", lines=12)
email = gr.Textbox(label="Andika Email woherezaho Alert")
send_btn = gr.Button("📧 Ohereza Alert")
alert_status = gr.Textbox(label="Status yo kohereza Alert")
def update_output(*args):
alerts, color = disaster_warning(*args)
return alerts, f"background-color:{color}; padding:10px; border-radius:5px; color: white;"
wind.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output])
rain.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output])
temp.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output])
water.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output])
pressure.change(fn=update_output, inputs=[wind, rain, temp, water, pressure], outputs=[output, output])
send_btn.click(fn=send_alert, inputs=[email, output], outputs=alert_status)
# Kubanza kwerekana amakuru ya default
alerts, color = disaster_warning(20, 10, 25, 2, 1013)
output.value = alerts
# Styling ya default
output.style = {"background-color": color, "padding": "10px", "border-radius": "5px", "color": "white"}
demo.launch()