main.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. from fastapi import FastAPI, HTTPException
  2. from pydantic import BaseModel, Field
  3. import uvicorn
  4. import sys
  5. import os
  6. # Add liblibai_controlnet to path so we can reuse its OSS infrastructure
  7. liblib_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../liblibai_controlnet"))
  8. if liblib_dir not in sys.path:
  9. sys.path.insert(0, liblib_dir)
  10. try:
  11. from liblibai_client import LibLibAIClient
  12. except ImportError:
  13. LibLibAIClient = None
  14. app = FastAPI(title="LibLib Image Uploader Proxy")
  15. class UploadRequest(BaseModel):
  16. image_base64: str = Field(..., description="Base64 encoded image data (e.g. data:image/png;base64,iVBORw0...)")
  17. filename: str = Field("image.png", description="Optional filename for extension detection")
  18. @app.post("/upload")
  19. async def upload_image(req: UploadRequest):
  20. if not LibLibAIClient:
  21. raise HTTPException(status_code=500, detail="LibLibAIClient module not found")
  22. try:
  23. client = LibLibAIClient()
  24. # Ensure it has basic prefix logic if omitted, though upload_base64_image handles 'data:image...' natively
  25. raw_b64 = req.image_base64
  26. url = client.upload_base64_image(raw_b64)
  27. return {"url": url, "status": "success"}
  28. except Exception as e:
  29. raise HTTPException(status_code=500, detail=str(e))
  30. @app.get("/health")
  31. async def health():
  32. return {"status": "ok"}
  33. if __name__ == "__main__":
  34. port = int(sys.argv[sys.argv.index("--port") + 1]) if "--port" in sys.argv else 8004
  35. uvicorn.run(app, host="0.0.0.0", port=port)