updates UI

This commit is contained in:
mike
2026-06-29 14:10:58 +02:00
parent 139785d108
commit 61268de34b
4 changed files with 394 additions and 65 deletions

View File

@@ -2444,6 +2444,57 @@ def _get_grouped_wireframes(wireframe_dir: str) -> dict:
"frames": data["frames"]
})
# Find last used wireframe filenames from DB
last_used = []
try:
conn = database.get_db_connection()
cur = conn.cursor()
try:
cur.execute("""
SELECT source_refs
FROM person
WHERE archived IS NOT TRUE
AND filename LIKE '%_sc_%'
AND source_refs IS NOT NULL
ORDER BY filename DESC
""")
rows = cur.fetchall()
seen_refs = set()
for (source_refs_raw,) in rows:
try:
refs = json.loads(source_refs_raw) if source_refs_raw else []
except Exception:
refs = []
for r in refs:
if r.startswith("wireframe:"):
wf_name = r[len("wireframe:"):]
if wf_name and wf_name not in seen_refs:
seen_refs.add(wf_name)
last_used.append(wf_name)
finally:
cur.close()
database._put_db_connection(conn)
except Exception as db_err:
print(f"[wireframe] Failed to query last used scenes: {db_err}")
last_used_map = {name: idx for idx, name in enumerate(last_used)}
def standalone_sort_key(img):
fpath = os.path.join(wireframe_dir, img)
mtime = 0.0
try:
if os.path.exists(fpath):
mtime = os.path.getmtime(fpath)
except Exception:
pass
if img in last_used_map:
return (0, last_used_map[img], -mtime)
else:
return (1, 0, -mtime)
standalone_images.sort(key=standalone_sort_key)
standalone_images = standalone_images[:60]
return {
"videos": videos,
"groups": groups,
@@ -4071,6 +4122,7 @@ def _scenery_worker(job_id: str, model_filename: str, scene_pil: Image.Image,
sort_order=next_order,
source_refs=json.dumps(refs))
_update_cached_file_meta(out_name, exists=True)
_metadata_executor.submit(_process_image_for_metadata, out_name)
except Exception as db_err:
print(f"[scenery] DB error: {db_err}")
jobs[job_id]["latest_output"] = out_name
@@ -4149,6 +4201,7 @@ def generate_scenery(req: SceneryRequest):
@app.get("/scenery/library")
def scenery_library():
"""Return all scenery images grouped by source video reference."""
output_dir = _load_output_dir()
conn = database.get_db_connection()
cur = conn.cursor()
try:
@@ -4168,6 +4221,11 @@ def scenery_library():
by_video: dict[str, list] = {}
ungrouped: list = []
for filename, group_id, source_refs_raw in rows:
# Filter out files that don't exist on disk (avoid broken links)
exists, _ = _get_cached_file_meta(filename, output_dir)
if not exists:
continue
try:
refs = json.loads(source_refs_raw) if source_refs_raw else []
except Exception: