| | from fastapi import FastAPI, Query |
| | from scrape import scrape, sanitize, convert |
| | from search import search, format as format_results, extract_urls, images, videos |
| | import asyncio |
| | from fastapi.responses import JSONResponse |
| |
|
| | app = FastAPI() |
| |
|
| | @app.get("/scrape") |
| | async def scrape_endpoint(url: str = Query('https://example.com')): |
| | html = await sanitize(await scrape(url)) |
| | md = await convert(html) |
| | return JSONResponse(content={"markdown": md}) |
| |
|
| | @app.post("/sanitize") |
| | async def sanitize_endpoint(content: str): |
| | sanitized = await sanitize(content) |
| | return {"sanitized": sanitized} |
| |
|
| | @app.post("/convert") |
| | async def convert_endpoint(content: str): |
| | markdown = await convert(content) |
| | return {"markdown": markdown} |
| |
|
| | @app.get("/search") |
| | def search_endpoint(prompt: str, page: int = 1, region: str = 'us-en', safesearch: str = 'off', timelimit: str = 'y'): |
| | results = search(prompt, page, region, safesearch, timelimit) |
| | return {"results": list(results)} |
| |
|
| | @app.get("/images") |
| | def images_endpoint(prompt: str, page: int = 1, region: str = 'us-en', safesearch: str = 'off', timelimit: str = 'y'): |
| | results = images(prompt, page, region, safesearch, timelimit) |
| | return {"results": list(results)} |
| |
|
| | @app.get("/videos") |
| | def videos_endpoint(prompt: str, page: int = 1, region: str = 'us-en', safesearch: str = 'off', timelimit: str = 'y'): |
| | results = videos(prompt, page, region, safesearch, timelimit) |
| | return {"results": list(results)} |
| |
|
| | @app.post("/format") |
| | def format_endpoint(results: list, prompt: str): |
| | formatted = format_results(results, prompt) |
| | return {"formatted": formatted} |
| |
|
| | @app.post("/extract_urls") |
| | def extract_urls_endpoint(results: list): |
| | urls = extract_urls(results) |
| | return {"urls": urls} |
| |
|
| | def run(): |
| | import uvicorn |
| | uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True) |
| |
|
| | if __name__ == "__main__": |
| | run() |