img / main.py
JairoDanielMT's picture
Update main.py
e9f0545 verified
from fastapi import FastAPI, File, UploadFile, HTTPException
from fastapi.responses import FileResponse, JSONResponse
from datetime import datetime, timedelta
import shutil
import os
app = FastAPI()
# Carpeta para almacenar las imágenes
UPLOAD_FOLDER = "uploaded_images"
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
# Diccionario para almacenar las horas de carga de las imágenes
image_upload_times = {}
@app.get("/uploaded_images/{image_name}")
async def get_image(image_name: str):
"""
Devuelve la imagen solicitada desde el directorio de imágenes subidas.
Si ha pasado más de 1 hora desde su carga, la imagen será eliminada.
"""
image_path = os.path.join(UPLOAD_FOLDER, image_name)
if not os.path.exists(image_path):
raise HTTPException(status_code=404, detail="Imagen no encontrada")
# Verificar si ha pasado 1 hora desde la carga
if image_name in image_upload_times:
upload_time = image_upload_times[image_name]
if datetime.now() - upload_time > timedelta(hours=1):
# Eliminar la imagen después de 1 hora
os.remove(image_path)
del image_upload_times[image_name]
raise HTTPException(status_code=404, detail="Imagen eliminada después de 1 hora")
return FileResponse(image_path)
@app.post("/upload/")
async def upload_image(file: UploadFile = File(...)):
"""
Sube una imagen y devuelve una URL pública accesible desde Hugging Face.
Registra el tiempo de carga y elimina la imagen después de 1 hora.
"""
file_path = os.path.join(UPLOAD_FOLDER, file.filename)
with open(file_path, "wb") as buffer:
shutil.copyfileobj(file.file, buffer)
# Registrar la hora de carga
image_upload_times[file.filename] = datetime.now()
space_name = "img"
base_url = f"https://jairodanielmt-{space_name}.hf.space"
image_url = f"{base_url}/uploaded_images/{file.filename}"
return JSONResponse(content={"url": image_url})