diff --git a/main.py b/main.py index e97635b..ade08a7 100644 --- a/main.py +++ b/main.py @@ -1,53 +1,35 @@ -"""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=["*"]) +app=FastAPI(title='Wudhu API') +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"}, -} +T={'makkah':{'fajr':'04:15','dhuhr':'12:20','asr':'15:45','maghrib':'18:55','isha':'20:25'}, +'madinah':{'fajr':'04:20','dhuhr':'12:25','asr':'15:50','maghrib':'19:00','isha':'20:30'}, +'riyadh':{'fajr':'03:55','dhuhr':'12:00','asr':'15:25','maghrib':'18:35','isha':'20:05'}, +'dubai':{'fajr':'04:10','dhuhr':'12:25','asr':'15:50','maghrib':'19:10','isha':'20:40'}, +'cairo':{'fajr':'03:40','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('/') +def root(): return {'name':'Wudhu API','cities':list(T.keys())} -@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('/times') +def times(city:str=Query('makkah')): + c=city.lower() + if c not in T: return {'error':f'Unknown: {list(T.keys())}'} + return {'city':c,'date':str(date.today()),'times':T[c]} -@app.get("/cities") -def cities(): - return {"cities": list(PRAYER_TIMES.keys())} +@app.get('/qibla') +def qibla(lat:float,lng:float): + KA=(21.4225,39.8262) + d=math.radians(KA[1]-lng) + lr,kr=math.radians(lat),math.radians(KA[0]) + y=math.sin(d)*math.cos(kr) + x=math.cos(lr)*math.sin(kr)-math.sin(lr)*math.cos(kr)*math.cos(d) + b=(math.degrees(math.atan2(y,x))+360)%360 + return {'bearing':round(b,2)} -@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) +if __name__=='__main__': + import uvicorn;uvicorn.run(app,host='0.0.0.0',port=8000)