| import os | |
| import json | |
| import time | |
| from config import TEMP_DIR | |
| def meta_path(file_id): | |
| return os.path.join(TEMP_DIR, f"{file_id}.json") | |
| def video_path(file_id): | |
| return os.path.join(TEMP_DIR, f"{file_id}.mp4") | |
| def save_meta(file_id, filename, expires_at): | |
| """Simpan metadata file ke disk.""" | |
| with open(meta_path(file_id), "w") as f: | |
| json.dump({"filename": filename, "expires_at": expires_at}, f) | |
| def load_meta(file_id): | |
| """Baca metadata file dari disk. Return None jika tidak ada.""" | |
| p = meta_path(file_id) | |
| if not os.path.exists(p): | |
| return None | |
| try: | |
| with open(p) as f: | |
| return json.load(f) | |
| except Exception: | |
| return None | |
| def cleanup_expired(): | |
| """Hapus file temp (video + meta) yang sudah expired.""" | |
| now = time.time() | |
| for fname in os.listdir(TEMP_DIR): | |
| if not fname.endswith(".json"): | |
| continue | |
| fid = fname[:-5] | |
| meta = load_meta(fid) | |
| if meta and meta["expires_at"] < now: | |
| try: | |
| vp = video_path(fid) | |
| if os.path.exists(vp): | |
| os.remove(vp) | |
| os.remove(meta_path(fid)) | |
| except Exception: | |
| pass | |