import gradio as gr
def predict_bus_status(distance, traffic_str, weather_str, hour):
traffic_map = {"কম (Low)": 1.0, "মাঝারি (Medium)": 1.4, "বেশি (Heavy)": 2.0}
weather_map = {"ভালো (Clear)": 1.0, "বৃষ্টি/খারাপ (Rain/Bad)": 1.3}
base_time = distance * 3.5
estimated_time = base_time * traffic_map[traffic_str] * weather_map[weather_str]
if hour in [8, 9, 10, 17, 18, 19] or traffic_str == "বেশি (Heavy)":
density_label = "অত্যধিক 🔴 (High)"
elif hour in [11, 12, 13, 14, 15, 16]:
density_label = "মাঝারি 🟡 (Medium)"
else:
density_label = "কম 🟢 (Low)"
return f"{estimated_time:.1f} মিনিট", density_label
interface = gr.Interface(
fn=predict_bus_status,
inputs=[
gr.Slider(minimum=1, maximum=50, value=10, step=0.5, label="দূরত্ব (Distance in KM)"),
gr.Radio(["কম (Low)", "মাঝারি (Medium)", "বেশি (Heavy)"], value="মাঝারি (Medium)", label="ট্রাফিক অবস্থা (Traffic Level)"),
gr.Dropdown(["ভালো (Clear)", "বৃষ্টি/খারাপ (Rain/Bad)"], value="ভালো (Clear)", label="আবহাওয়া (Weather)"),
gr.Slider(minimum=0, maximum=23, value=9, step=1, label="দিনের সময় (Hour of Day - 24H Format)")
],
outputs=[
gr.Textbox(label="আনুমানিক সময় (Estimated Arrival Time)"),
gr.Textbox(label="যাত্রী ঘনত্ব (Expected Passenger Density)")
],
title="🚌 Smart Bus Arrival & Passenger Density Predictor"
)
interface.launch()