diff --git a/main.py b/main.py new file mode 100644 index 0000000..e97635b --- /dev/null +++ b/main.py @@ -0,0 +1,53 @@ +"""Wudhu API - Prayer Times & Qibla""" +from fastapi import FastAPI, Query +from fastapi.middleware.cors import CORSMiddleware +import math +from datetime import date + +app = FastAPI(title="Wudhu API", description="مواقيت الصلاة واتجاه القبلة", version="1.0.0") +app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"]) + +# Prayer times (sample data - simplified) +PRAYER_TIMES = { + "makkah": {"fajr": "04:15", "sunrise": "05:45", "dhuhr": "12:20", "asr": "15:45", "maghrib": "18:55", "isha": "20:25"}, + "madinah": {"fajr": "04:20", "sunrise": "05:50", "dhuhr": "12:25", "asr": "15:50", "maghrib": "19:00", "isha": "20:30"}, + "riyadh": {"fajr": "03:55", "sunrise": "05:25", "dhuhr": "12:00", "asr": "15:25", "maghrib": "18:35", "isha": "20:05"}, + "jeddah": {"fajr": "04:25", "sunrise": "05:55", "dhuhr": "12:30", "asr": "15:55", "maghrib": "19:05", "isha": "20:35"}, + "dubai": {"fajr": "04:10", "sunrise": "05:40", "dhuhr": "12:25", "asr": "15:50", "maghrib": "19:10", "isha": "20:40"}, + "cairo": {"fajr": "03:40", "sunrise": "05:10", "dhuhr": "11:55", "asr": "15:20", "maghrib": "18:40", "isha": "20:10"}, +} + +@app.get("/") +def root(): + return {"name": "Wudhu API", "endpoints": ["/times", "/qibla", "/cities"]} + +@app.get("/times") +def prayer_times(city: str = Query("makkah", description="اسم المدينة بالإنجليزية")): + city = city.lower() + if city not in PRAYER_TIMES: + return {"error": f"المدينة غير موجودة. المدن: {list(PRAYER_TIMES.keys())}"} + return {"city": city, "date": str(date.today()), "times": PRAYER_TIMES[city]} + +@app.get("/cities") +def cities(): + return {"cities": list(PRAYER_TIMES.keys())} + +@app.get("/qibla") +def qibla_direction(lat: float, lng: float): + """Calculate Qibla direction from given coordinates""" + # Kaaba coordinates + kaaba_lat, kaaba_lng = 21.4225, 39.8262 + lat_rad, lng_rad = math.radians(lat), math.radians(lng) + kaaba_lat_rad, kaaba_lng_rad = math.radians(kaaba_lat), math.radians(kaaba_lng) + + delta_lng = kaaba_lng_rad - lng_rad + y = math.sin(delta_lng) * math.cos(kaaba_lat_rad) + x = math.cos(lat_rad) * math.sin(kaaba_lat_rad) - math.sin(lat_rad) * math.cos(kaaba_lat_rad) * math.cos(delta_lng) + bearing = math.degrees(math.atan2(y, x)) + bearing = (bearing + 360) % 360 + + return {"latitude": lat, "longitude": lng, "qibla_bearing": round(bearing, 2), "unit": "degrees_from_north"} + +if __name__ == "__main__": + import uvicorn + uvicorn.run(app, host="0.0.0.0", port=8000)