Spaces:
Sleeping
Sleeping
| 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() | |