reorder
This commit is contained in:
@@ -2227,6 +2227,63 @@
|
||||
|
||||
// --- HYDRATION_START ---
|
||||
const PRELOADED_IMAGES = [
|
||||
"20260628_020853_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020642_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020610_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020546_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020519_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020428_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020302_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020125_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_015815_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_015832_pad_20260628_015651_img_12.png",
|
||||
"20260628_015815_pad_20260628_015651_img_12.png",
|
||||
"20260628_015707_img_12.png",
|
||||
"20260628_015651_img_12.png",
|
||||
"20260615_153426_img_12.png",
|
||||
"20260628_015423_img_12.png",
|
||||
"cg_5991f3f2_face.png",
|
||||
"20260628_012806_pad_20260624_143523_Screenshot_From_2026-06-17_07-41-27.nobg.nobg.png",
|
||||
"20260628_014614_p10.nobg.png",
|
||||
"p10.png_face.png",
|
||||
"20260628_014614_p10.png",
|
||||
"20260628_014603_p10.png",
|
||||
"up_2687be75_face.png",
|
||||
"20260628_013521_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013511_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013459_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013429_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013429_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260628_013412_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260628_012832_pad_20260624_143523_Screenshot_From_2026-06-17_07-41-27.nobg.nobg.png",
|
||||
"_turntable/cg_5991f3f2/views/view_022_330deg.png",
|
||||
"20260628_011700_pad_20260624_154318_img_72.png",
|
||||
"20260628_012006_pad_20260624_154318_img_72.png",
|
||||
"20260628_011837_pad_20260624_154318_img_72.png",
|
||||
"20260628_012240_crop_20260628_011837_pad_20260624_154318_img_72.png",
|
||||
"20260628_011227_dup_Pasted image (9).png",
|
||||
"20260628_011118_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010957_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010947_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010858_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010858_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010841_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010630_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010408_image.png",
|
||||
"20260627_203626_image.png",
|
||||
"up_7b6eaabb_face.png",
|
||||
"cg_809653a0_face.png",
|
||||
"bb_01.png_face.png",
|
||||
"_turntable/up_aa1add4d/views/view_023_345deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_003_045deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_001_015deg.png",
|
||||
"_turntable/up_7b6eaabb/views/view_001_015deg.png",
|
||||
"_turntable/up_7b6eaabb/views/view_000_000deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_023_345deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_022_330deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_021_315deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_020_300deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_019_285deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_018_270deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_017_255deg.png",
|
||||
@@ -2285,9 +2342,6 @@
|
||||
"_turntable/cg_7c7b22c9/views/view_022_330deg.png",
|
||||
"20260618_015124_20260618_010617_20260615_153426_img_12.nobg.png",
|
||||
"_turntable/cg_5991f3f2/views/view_002_030deg.png",
|
||||
"_turntable/cg_5991f3f2/views/view_022_330deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_021_315deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_020_300deg.png",
|
||||
"20260627_213910_best_02_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260627_213840_best_02_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||
@@ -2368,10 +2422,8 @@
|
||||
"_turntable/cg_75340e8e/views/view_001_015deg.png",
|
||||
"_turntable/cg_75340e8e/views/view_000_000deg.png",
|
||||
"20260627_203706_11_20260627_200330_image.png",
|
||||
"up_7b6eaabb_face.png",
|
||||
"20260627_203654_11_20260627_200330_image.png",
|
||||
"20260627_203642_11_20260627_200330_image.png",
|
||||
"20260627_203626_image.png",
|
||||
"20260627_203607_image.png",
|
||||
"20260627_203549_image.png",
|
||||
"20260627_203531_Screenshot_From_2026-06-27_20-04-11.png",
|
||||
@@ -2416,7 +2468,6 @@
|
||||
"_turntable/up_c8be3aa7/views/view_004_060deg.png",
|
||||
"_turntable/up_c8be3aa7/views/view_001_015deg.png",
|
||||
"20260627_200711_11_20260627_200330_image.png",
|
||||
"20260627_200632_9_20260627_200330_image.png",
|
||||
"20260627_200506_image.png",
|
||||
"20260627_200422_2_20260627_200330_image.png",
|
||||
"20260627_200414_image.png",
|
||||
@@ -2447,7 +2498,6 @@
|
||||
"_turntable/img_87.png/views/view_017_255deg.png",
|
||||
"_turntable/img_87.png/views/view_016_240deg.png",
|
||||
"_turntable/img_87.png/views/view_015_225deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_023_345deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_022_330deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_021_315deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_020_300deg.png",
|
||||
@@ -2467,9 +2517,7 @@
|
||||
"_turntable/up_aa1add4d/views/view_006_090deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_005_075deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_004_060deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_003_045deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_002_030deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_001_015deg.png",
|
||||
"_turntable/up_aa1add4d/views/view_000_000deg.png",
|
||||
"_turntable/up_ae825fce/views/view_023_345deg.png",
|
||||
"_turntable/up_ae825fce/views/view_022_330deg.png",
|
||||
@@ -4335,7 +4383,6 @@
|
||||
"_turntable/cg_f0049873/views/view_002_030deg.png",
|
||||
"_turntable/cg_f0049873/views/view_001_015deg.png",
|
||||
"_turntable/cg_f0049873/views/view_000_000deg.png",
|
||||
"_turntable/cg_08203e88/turntable.mp4",
|
||||
"_turntable/cg_08203e88/views/view_023_345deg.png",
|
||||
"_turntable/cg_08203e88/views/view_022_330deg.png",
|
||||
"_turntable/cg_08203e88/views/view_021_315deg.png",
|
||||
@@ -4633,7 +4680,6 @@
|
||||
"20260626_021942_pad_20260625_205913_8_20260625_205722_image.png",
|
||||
"20260626_021533_pad_20260625_205828_4_20260625_205722_image.png",
|
||||
"20260626_014422_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"cg_809653a0_face.png",
|
||||
"20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260626_005504_Pasted image (9).png",
|
||||
@@ -5002,7 +5048,6 @@
|
||||
"20260624_154453_img_72.png",
|
||||
"20260624_154442_img_72.png",
|
||||
"20260624_154318_img_72.png",
|
||||
"cg_b7e71d34_face.png",
|
||||
"20260624_154236_img_72.png",
|
||||
"20260624_154125_img_72.png",
|
||||
"20260624_153940_img_72.png",
|
||||
@@ -5010,7 +5055,6 @@
|
||||
"20260624_153614_Screenshot_From_2026-06-17_07-41-27.png",
|
||||
"20260624_153417_Screenshot_From_2026-06-17_07-41-27.png",
|
||||
"20260624_153344_Screenshot_From_2026-06-17_07-41-27.png",
|
||||
"20260624_153311_Screenshot_From_2026-06-17_07-41-27.png",
|
||||
"20260624_153102_Screenshot_From_2026-06-17_07-41-27.png",
|
||||
"20260624_153051_Screenshot_From_2026-06-17_07-41-27.png",
|
||||
"20260624_153040_Screenshot_From_2026-06-17_07-41-27.png",
|
||||
@@ -6623,7 +6667,6 @@
|
||||
"20260616_004250_img_18.png",
|
||||
"20260616_003916_img_15.png",
|
||||
"20260616_003803_img_14.png",
|
||||
"20260615_153426_img_12.png",
|
||||
"20260615_152252_imgxxx.png",
|
||||
"20260615_151829_img_92.png",
|
||||
"20260615_151614_img_93.png",
|
||||
|
||||
@@ -307,6 +307,8 @@ def _idle_turntable_daemon():
|
||||
fname, group_id, sort_order = row[0], row[2], row[6]
|
||||
if not group_id:
|
||||
continue
|
||||
if fname.startswith("_turntable/"):
|
||||
continue
|
||||
if group_id not in groups:
|
||||
groups[group_id] = (fname, sort_order)
|
||||
else:
|
||||
@@ -1378,24 +1380,73 @@ def _write_turntable_static() -> None:
|
||||
except Exception:
|
||||
group_names = {}
|
||||
|
||||
# Preferred filename per group (sort_order=0)
|
||||
preferred: dict = {}
|
||||
# Fetch active and existing group IDs and filenames from the database (excluding turntable assets)
|
||||
all_db_gids = set()
|
||||
active_db_gids = set()
|
||||
all_db_filenames = set()
|
||||
active_db_filenames = set()
|
||||
try:
|
||||
for row in database.list_persons():
|
||||
fname, gid, sort_order = row[0], row[2], row[6]
|
||||
if not gid:
|
||||
continue
|
||||
if gid not in preferred:
|
||||
preferred[gid] = (fname, sort_order)
|
||||
else:
|
||||
cur = preferred[gid][1]
|
||||
if sort_order is not None and (cur is None or sort_order < cur):
|
||||
preferred[gid] = (fname, sort_order)
|
||||
except Exception:
|
||||
pass
|
||||
conn = database.get_db_connection()
|
||||
cur = conn.cursor()
|
||||
cur.execute("""
|
||||
SELECT filename, group_id, archived, hidden
|
||||
FROM person
|
||||
WHERE NOT (filename LIKE '_turntable/%')
|
||||
""")
|
||||
for fname, gid, archived, hidden in cur.fetchall():
|
||||
is_archived = bool(archived) if archived is not None else False
|
||||
is_hidden = bool(hidden) if hidden is not None else False
|
||||
|
||||
all_db_filenames.add(fname)
|
||||
if not is_archived and not is_hidden:
|
||||
active_db_filenames.add(fname)
|
||||
|
||||
if gid:
|
||||
all_db_gids.add(gid)
|
||||
if not is_archived and not is_hidden:
|
||||
active_db_gids.add(gid)
|
||||
cur.close()
|
||||
database._put_db_connection(conn)
|
||||
except Exception as db_err:
|
||||
print(f"[static] DB check error: {db_err}")
|
||||
|
||||
turntables = []
|
||||
for gid in tc.list_cached_group_ids(output_dir):
|
||||
is_orphaned = False
|
||||
is_active = False
|
||||
|
||||
if gid.startswith("file_"):
|
||||
fname = gid[5:]
|
||||
if all_db_filenames and fname not in all_db_filenames:
|
||||
is_orphaned = True
|
||||
elif active_db_filenames and fname in active_db_filenames:
|
||||
is_active = True
|
||||
else:
|
||||
if all_db_gids and gid not in all_db_gids:
|
||||
is_orphaned = True
|
||||
elif active_db_gids and gid in active_db_gids:
|
||||
is_active = True
|
||||
|
||||
# 1. Truly orphaned turntable caches (no associated base images or files in DB)
|
||||
if is_orphaned:
|
||||
print(f"[static] Deleting truly orphaned turntable cache and DB records for group/file {gid}")
|
||||
tc.delete_state(output_dir, gid)
|
||||
try:
|
||||
conn = database.get_db_connection()
|
||||
cur = conn.cursor()
|
||||
cur.execute("DELETE FROM person WHERE group_id = %s", (gid,))
|
||||
conn.commit()
|
||||
cur.close()
|
||||
database._put_db_connection(conn)
|
||||
except Exception as del_err:
|
||||
print(f"[static] Failed to clean DB records for orphaned group/file {gid}: {del_err}")
|
||||
continue
|
||||
|
||||
# 2. Inactive turntable caches (associated group/file is fully archived or hidden)
|
||||
if not is_active:
|
||||
# Keep cache on disk but do not write to turntables.json (hide from UI)
|
||||
continue
|
||||
|
||||
state = tc.load_state(output_dir, gid)
|
||||
if not state:
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user