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