imagegpt / app.py
zliang's picture
Update app.py
0890c5d verified
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."
}
@app.post("/image_upload")
async def upload_image(url):
try:
upload = imagekit.upload(
file=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.post("/palette_upload")
async def upload_image(url):
try:
options = UploadFileRequestOptions(
folder='/palette/',
overwrite_tags=False,
overwrite_custom_metadata=True,
# custom_metadata={'testss': 12},
)
upload = imagekit.upload(
file=url,
file_name="palette.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)