32 أسطر
987 B
Python
32 أسطر
987 B
Python
from fastapi import FastAPI, Query
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
import json
|
|
from pathlib import Path
|
|
|
|
app = FastAPI(title='Quran API', version='1.0.0')
|
|
app.add_middleware(CORSMiddleware, allow_origins=['*'], allow_methods=['*'], allow_headers=['*'])
|
|
|
|
with open(Path(__file__).parent / 'surahs.json', 'r', encoding='utf-8') as f:
|
|
SURAHS = json.load(f)
|
|
|
|
@app.get('/')
|
|
def root():
|
|
return {'name':'Quran API','total':len(SURAHS)}
|
|
|
|
@app.get('/surahs')
|
|
def surahs():
|
|
return [{'id':s['id'],'name_ar':s['name_ar'],'verses':s['verses_count'],'type':s['type']} for s in SURAHS]
|
|
|
|
@app.get('/surahs/{sid}')
|
|
def one(sid:int):
|
|
if sid<1 or sid>114: return {'error':'1-114'}
|
|
return SURAHS[sid-1]
|
|
|
|
@app.get('/search')
|
|
def search(q:str=Query(...)):
|
|
r=[s for s in SURAHS if q in s['name_ar'] or q.lower() in s['name_en'].lower()]
|
|
return {'q':q,'n':len(r),'results':r}
|
|
|
|
if __name__=='__main__':
|
|
import uvicorn; uvicorn.run(app,host='0.0.0.0',port=8000)
|