from fastapi import FastAPI, HTTPException import base64 import os import sys import uvicorn from imagekitio import ImageKit from imagekitio.models.ListAndSearchFileRequestOptions import ListAndSearchFileRequestOptions from imagekitio.models.UploadFileRequestOptions import UploadFileRequestOptions from fastapi.middleware.cors import CORSMiddleware import base64 from pydantic import BaseModel app = FastAPI() # Configure CORS app.add_middleware( CORSMiddleware, allow_origins=["https://aiphotographer.github.io"], # Allows only this origin allow_credentials=True, allow_methods=["*"], # Allows all methods allow_headers=["*"], # Allows all headers ) imagekit = ImageKit( public_key=os.environ.get("public_key"), private_key=os.environ.get("private_key"), url_endpoint=os.environ.get("url_endpoint") ) @app.get("/") def read_root(): return { "introduction": "Welcome to the AI Photo Creator App! Here's how to use it: " "Step 1: 📸 Tell me what picture you want to take, and I will create one for you. " "Step 2: 🌍 If you feel satisfied with the photo created by me, you can copy and paste " "the photo address and share your photo on our crowd-sourced AI photography website." } class ImageData(BaseModel): url: str #title: str @app.post("/image_upload") async def upload_image(data: ImageData): try: upload = imagekit.upload( file=data.url, file_name="image.jpg", #options=options ) # Return the upload response return {"message": "Uploaded successfully, check https://aiphotographer.github.io/photographer.html for your work!"} except Exception as e: return {"error": str(e)} @app.get("/images_list") async def get_images(): list_files = imagekit.list_files(options=ListAndSearchFileRequestOptions(search_query='createdAt >= "7d"')) list_files_sorted=sorted(list_files.response_metadata.raw, key=lambda x: x['createdAt'],reverse=True) return list_files_sorted if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=7860)