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