Spaces:
Sleeping
Sleeping
| from typing import Annotated | |
| from fastapi import FastAPI | |
| from pydantic import BaseModel | |
| from api.scraping import scrapePage | |
| from api.analysis import analyseSite, parseImgLis | |
| from api.searchImages import performQueries, incrementPages | |
| from fastapi.encoders import jsonable_encoder | |
| from fastapi.responses import JSONResponse | |
| from starlette.middleware.cors import CORSMiddleware | |
| origins = [ | |
| "http://localhost", | |
| "http://localhost:3000/" | |
| ] | |
| class extract_request(BaseModel): | |
| url: str | |
| use_images: bool = False | |
| use_text:bool = True | |
| num_images:int=3 | |
| page: int = 0 | |
| result_images:int = 24 | |
| num_keywords_text:int = 10 | |
| num_keywords_images:int = 10 | |
| num_query_keywords:int=5 | |
| class increment_request(BaseModel): | |
| queries:dict | |
| num_images:int=3 | |
| page: int = 0 | |
| app = FastAPI() | |
| async def returnMethods(): | |
| json_compatible_item_data = jsonable_encoder({"Methods":["Post"]}) | |
| return JSONResponse(content=json_compatible_item_data) | |
| async def create_item(item: extract_request): | |
| req = item.model_dump() | |
| scrapedData = scrapePage(req) | |
| if("error" in scrapedData): | |
| json_compatible_item_data = jsonable_encoder(scrapedData) | |
| return JSONResponse(content=json_compatible_item_data) | |
| queries = analyseSite(scrapedData,req) | |
| if("error") in queries: | |
| json_compatible_item_data = jsonable_encoder(queries) | |
| return JSONResponse(content=json_compatible_item_data) | |
| res = performQueries(queries) | |
| resp = {"images":res,"queries":queries} | |
| json_compatible_item_data = jsonable_encoder(resp) | |
| return JSONResponse(content=json_compatible_item_data) | |
| async def returnMethods(): | |
| json_compatible_item_data = jsonable_encoder({"Methods":["Post"]}) | |
| return JSONResponse(content=json_compatible_item_data) | |
| async def increment_page(item: increment_request): | |
| req = item.model_dump() | |
| queries=incrementPages(req,req['page']) | |
| print("queries to execute",queries) | |
| res = performQueries(queries['queries']) | |
| resp = {"images":res,"queries":queries["queries"]} | |
| json_compatible_item_data = jsonable_encoder(resp) | |
| return JSONResponse(content=json_compatible_item_data) | |
| app.add_middleware( | |
| CORSMiddleware, | |
| allow_origins=["http://localhost:3000", "http://0.0.0.0:3000"], | |
| allow_credentials=True, | |
| allow_methods=["*"], | |
| allow_headers=["*"], | |
| ) | |