File size: 2,934 Bytes
69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 89dd025 69b2f98 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
from fastapi import FastAPI, Query, HTTPException
from pydantic import BaseModel
from webscout import WEBS
app = FastAPI()
class SearchQuery(BaseModel):
q: str
max_results: int = 10
timelimit: Optional[int] = None
safesearch: str = 'moderate'
region: str = 'wt-wt'
class ImageSearchQuery(BaseModel):
q: str
max_results: int = 10
safesearch: str = 'moderate'
region: str = 'wt-wt'
class VideoSearchQuery(BaseModel):
q: str
max_results: int = 10
safesearch: str = 'moderate'
region: str = 'wt-wt'
timelimit: Optional[int] = None
resolution: Optional[str] = None
duration: Optional[str] = None
class NewsSearchQuery(BaseModel):
q: str
max_results: int = 10
safesearch: str = 'moderate'
region: str = 'wt-wt'
timelimit: Optional[int] = None
class MapSearchQuery(BaseModel):
q: str
place: Optional[str] = None
max_results: int = 10
class TranslateQuery(BaseModel):
q: str
to: str = 'en'
class SuggestionQuery(BaseModel):
q: str
@app.get("/api/search", response_model=List[dict])
async def search_text(query: SearchQuery):
results = []
with WEBS() as webs:
for result in webs.text(**query.dict()):
results.append(result)
return results
@app.get("/api/images", response_model=List[dict])
async def search_images(query: ImageSearchQuery):
results = []
with WEBS() as webs:
for result in webs.images(**query.dict()):
results.append(result)
return results
@app.get("/api/videos", response_model=List[dict])
async def search_videos(query: VideoSearchQuery):
results = []
with WEBS() as webs:
for result in webs.videos(**query.dict()):
results.append(result)
return results
@app.get("/api/news", response_model=List[dict])
async def search_news(query: NewsSearchQuery):
results = []
with WEBS() as webs:
for result in webs.news(**query.dict()):
results.append(result)
return results
@app.get("/api/maps", response_model=List[dict])
async def search_maps(query: MapSearchQuery):
results = []
with WEBS() as webs:
for result in webs.maps(**query.dict()):
results.append(result)
return results
@app.get("/api/translate", response_model=dict)
async def translate_text(query: TranslateQuery):
with WEBS() as webs:
translation = webs.translate(**query.dict())
return {'translation': translation}
@app.get("/api/suggestions", response_model=List[str])
async def search_suggestions(query: SuggestionQuery):
if not query.q:
raise HTTPException(status_code=400, detail="Query parameter missing")
results = []
with WEBS() as webs:
for result in webs.suggestions(query.q):
results.append(result)
return results
@app.get("/api/health", response_model=dict)
async def health_check():
return {'status': 'working'} |