You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.2 KiB
Python

import time
from helpers.db import db_get_videos
# from helpers.thumbnails import generate_thumbnails_for_videos # optional
# ───────── CACHE BUILDER ───────── #
def build_cache():
videos = db_get_videos()
grouped = {}
for v in videos:
key = (v["username"], v["platform"])
grouped.setdefault(key, []).append(v)
storage_usage, avg_sizes, video_map = {}, {}, {}
for (username, platform), vids in grouped.items():
key = f"{username}::{platform}"
total_gb = 0
for v in vids:
try:
total_gb += float(v.get("size", 0) or 0) / 1024
except ValueError:
print(f"⚠️ Invalid size for video {v.get('video_id')}: {v.get('size')}")
storage_usage[key] = {
"total_size": total_gb,
"video_count": len(vids)
}
avg_sizes[key] = total_gb / len(vids) if vids else 0
video_map[key] = vids
# Thumbnail generation is optional, uncomment if you want it auto-built:
# generate_thumbnails_for_videos(videos)
return {
"timestamp": time.time(),
"videos": video_map,
"storage_usage": storage_usage,
"avg_sizes": avg_sizes
}