Face-Aging / s3.py
Robys01's picture
Test commit
5beb35a
raw
history blame
1.89 kB
# s3_utils.py
import os
import datetime
import pathlib
import boto3
from pathlib import Path
# ─── GLOBAL STATE ───────────────────────────────────────
uploaded_files = set()
last_reset = datetime.datetime.now()
# boto3 picks up AWS_* from env
s3 = boto3.client("s3", region_name=os.environ["AWS_DEFAULT_REGION"])
BUCKET_NAME = os.environ["AWS_BUCKET_NAME"]
# ──────────────────────────────────────────────────────────
def imagine(local_path: str, age: int) -> str:
global last_reset, uploaded_files
try:
now = datetime.datetime.now()
# 1) reset once per hour
if now - last_reset >= datetime.timedelta(hours=1):
print("Resetting uploaded files set")
uploaded_files.clear()
last_reset = now
# 2) skip the three built-in examples by name
if Path(local_path).name in ("girl.jpg", "man.jpg", "trump.jpg"):
print(f"Skipping upload for built-in example: {local_path}")
return None
basename = pathlib.Path(local_path).name
if basename in uploaded_files:
print(f"Skipping upload for already seen file: {basename}")
return None
today = now.strftime("%Y-%m-%d")
ts = now.strftime("%H%M%S")
stem = pathlib.Path(local_path).stem
ext = pathlib.Path(local_path).suffix
key = f"{today}/{age}_{ts}_{stem}{ext}"
s3.upload_file(Filename=local_path, Bucket=BUCKET_NAME, Key=key)
uploaded_files.add(basename)
print(f"Uploaded {local_path} to s3://{BUCKET_NAME}/{key}")
return key
except Exception as e:
print(f"Error uploading: {e}")
return None