api / main.py
oopshnik's picture
Upload 9 files
ffce262 verified
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()