هذا الالتزام موجود في:
2026-08-05 10:29:54 +00:00
الأصل 786c3d88a8
التزام 3a03a9cca2

45
main.py
عرض الملف

@@ -1,40 +1,31 @@
"""Quran API - FastAPI Application"""
from fastapi import FastAPI, Query from fastapi import FastAPI, Query
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
import json import json
from pathlib import Path from pathlib import Path
app = FastAPI(title="Quran API", description="واجهة برمجية للقرآن الكريم", version="1.0.0") app = FastAPI(title='Quran API', version='1.0.0')
app.add_middleware(CORSMiddleware, allow_origins=["*"], allow_methods=["*"], allow_headers=["*"]) app.add_middleware(CORSMiddleware, allow_origins=['*'], allow_methods=['*'], allow_headers=['*'])
# Load surahs data with open(Path(__file__).parent / 'surahs.json', 'r', encoding='utf-8') as f:
surahs_path = Path(__file__).parent / "surahs.json"
with open(surahs_path, "r", encoding="utf-8") as f:
SURAHS = json.load(f) SURAHS = json.load(f)
@app.get("/") @app.get('/')
def root(): def root():
return {"name": "Quran API", "version": "1.0.0", "endpoints": ["/surahs", "/surahs/{id}", "/search"]} return {'name':'Quran API','total':len(SURAHS)}
@app.get("/surahs") @app.get('/surahs')
def list_surahs(): def surahs():
return [{"id": s["id"], "name_ar": s["name_ar"], "name_en": s["name_en"], "verses_count": s["verses_count"], "type": s["type"]} for s in SURAHS] return [{'id':s['id'],'name_ar':s['name_ar'],'verses':s['verses_count'],'type':s['type']} for s in SURAHS]
@app.get("/surahs/{surah_id}") @app.get('/surahs/{sid}')
def get_surah(surah_id: int): def one(sid:int):
if surah_id < 1 or surah_id > 114: if sid<1 or sid>114: return {'error':'1-114'}
return {"error": "رقم السورة يجب أن يكون بين 1 و 114"} return SURAHS[sid-1]
surah = SURAHS[surah_id - 1]
return surah
@app.get("/search") @app.get('/search')
def search(q: str = Query(..., description="بحث في أسماء السور")): def search(q:str=Query(...)):
results = [] r=[s for s in SURAHS if q in s['name_ar'] or q.lower() in s['name_en'].lower()]
for s in SURAHS: return {'q':q,'n':len(r),'results':r}
if q in s["name_ar"] or q.lower() in s["name_en"].lower():
results.append(s)
return {"query": q, "count": len(results), "results": results}
if __name__ == "__main__": if __name__=='__main__':
import uvicorn import uvicorn; uvicorn.run(app,host='0.0.0.0',port=8000)
uvicorn.run(app, host="0.0.0.0", port=8000)