Spaces:
Sleeping
Sleeping
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 = {} | |
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) | |
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}) | |