reorder
This commit is contained in:
@@ -2227,6 +2227,63 @@
|
|||||||
|
|
||||||
// --- HYDRATION_START ---
|
// --- HYDRATION_START ---
|
||||||
const PRELOADED_IMAGES = [
|
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_019_285deg.png",
|
||||||
"_turntable/up_6ed4293c/views/view_018_270deg.png",
|
"_turntable/up_6ed4293c/views/view_018_270deg.png",
|
||||||
"_turntable/up_6ed4293c/views/view_017_255deg.png",
|
"_turntable/up_6ed4293c/views/view_017_255deg.png",
|
||||||
@@ -2285,9 +2342,6 @@
|
|||||||
"_turntable/cg_7c7b22c9/views/view_022_330deg.png",
|
"_turntable/cg_7c7b22c9/views/view_022_330deg.png",
|
||||||
"20260618_015124_20260618_010617_20260615_153426_img_12.nobg.png",
|
"20260618_015124_20260618_010617_20260615_153426_img_12.nobg.png",
|
||||||
"_turntable/cg_5991f3f2/views/view_002_030deg.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_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_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",
|
"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_001_015deg.png",
|
||||||
"_turntable/cg_75340e8e/views/view_000_000deg.png",
|
"_turntable/cg_75340e8e/views/view_000_000deg.png",
|
||||||
"20260627_203706_11_20260627_200330_image.png",
|
"20260627_203706_11_20260627_200330_image.png",
|
||||||
"up_7b6eaabb_face.png",
|
|
||||||
"20260627_203654_11_20260627_200330_image.png",
|
"20260627_203654_11_20260627_200330_image.png",
|
||||||
"20260627_203642_11_20260627_200330_image.png",
|
"20260627_203642_11_20260627_200330_image.png",
|
||||||
"20260627_203626_image.png",
|
|
||||||
"20260627_203607_image.png",
|
"20260627_203607_image.png",
|
||||||
"20260627_203549_image.png",
|
"20260627_203549_image.png",
|
||||||
"20260627_203531_Screenshot_From_2026-06-27_20-04-11.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_004_060deg.png",
|
||||||
"_turntable/up_c8be3aa7/views/view_001_015deg.png",
|
"_turntable/up_c8be3aa7/views/view_001_015deg.png",
|
||||||
"20260627_200711_11_20260627_200330_image.png",
|
"20260627_200711_11_20260627_200330_image.png",
|
||||||
"20260627_200632_9_20260627_200330_image.png",
|
|
||||||
"20260627_200506_image.png",
|
"20260627_200506_image.png",
|
||||||
"20260627_200422_2_20260627_200330_image.png",
|
"20260627_200422_2_20260627_200330_image.png",
|
||||||
"20260627_200414_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_017_255deg.png",
|
||||||
"_turntable/img_87.png/views/view_016_240deg.png",
|
"_turntable/img_87.png/views/view_016_240deg.png",
|
||||||
"_turntable/img_87.png/views/view_015_225deg.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_022_330deg.png",
|
||||||
"_turntable/up_aa1add4d/views/view_021_315deg.png",
|
"_turntable/up_aa1add4d/views/view_021_315deg.png",
|
||||||
"_turntable/up_aa1add4d/views/view_020_300deg.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_006_090deg.png",
|
||||||
"_turntable/up_aa1add4d/views/view_005_075deg.png",
|
"_turntable/up_aa1add4d/views/view_005_075deg.png",
|
||||||
"_turntable/up_aa1add4d/views/view_004_060deg.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_002_030deg.png",
|
||||||
"_turntable/up_aa1add4d/views/view_001_015deg.png",
|
|
||||||
"_turntable/up_aa1add4d/views/view_000_000deg.png",
|
"_turntable/up_aa1add4d/views/view_000_000deg.png",
|
||||||
"_turntable/up_ae825fce/views/view_023_345deg.png",
|
"_turntable/up_ae825fce/views/view_023_345deg.png",
|
||||||
"_turntable/up_ae825fce/views/view_022_330deg.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_002_030deg.png",
|
||||||
"_turntable/cg_f0049873/views/view_001_015deg.png",
|
"_turntable/cg_f0049873/views/view_001_015deg.png",
|
||||||
"_turntable/cg_f0049873/views/view_000_000deg.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_023_345deg.png",
|
||||||
"_turntable/cg_08203e88/views/view_022_330deg.png",
|
"_turntable/cg_08203e88/views/view_022_330deg.png",
|
||||||
"_turntable/cg_08203e88/views/view_021_315deg.png",
|
"_turntable/cg_08203e88/views/view_021_315deg.png",
|
||||||
@@ -4633,7 +4680,6 @@
|
|||||||
"20260626_021942_pad_20260625_205913_8_20260625_205722_image.png",
|
"20260626_021942_pad_20260625_205913_8_20260625_205722_image.png",
|
||||||
"20260626_021533_pad_20260625_205828_4_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",
|
"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_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||||
"20260626_005504_Pasted image (9).nobg.png",
|
"20260626_005504_Pasted image (9).nobg.png",
|
||||||
"20260626_005504_Pasted image (9).png",
|
"20260626_005504_Pasted image (9).png",
|
||||||
@@ -5002,7 +5048,6 @@
|
|||||||
"20260624_154453_img_72.png",
|
"20260624_154453_img_72.png",
|
||||||
"20260624_154442_img_72.png",
|
"20260624_154442_img_72.png",
|
||||||
"20260624_154318_img_72.png",
|
"20260624_154318_img_72.png",
|
||||||
"cg_b7e71d34_face.png",
|
|
||||||
"20260624_154236_img_72.png",
|
"20260624_154236_img_72.png",
|
||||||
"20260624_154125_img_72.png",
|
"20260624_154125_img_72.png",
|
||||||
"20260624_153940_img_72.png",
|
"20260624_153940_img_72.png",
|
||||||
@@ -5010,7 +5055,6 @@
|
|||||||
"20260624_153614_Screenshot_From_2026-06-17_07-41-27.png",
|
"20260624_153614_Screenshot_From_2026-06-17_07-41-27.png",
|
||||||
"20260624_153417_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_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_153102_Screenshot_From_2026-06-17_07-41-27.png",
|
||||||
"20260624_153051_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",
|
"20260624_153040_Screenshot_From_2026-06-17_07-41-27.png",
|
||||||
@@ -6623,7 +6667,6 @@
|
|||||||
"20260616_004250_img_18.png",
|
"20260616_004250_img_18.png",
|
||||||
"20260616_003916_img_15.png",
|
"20260616_003916_img_15.png",
|
||||||
"20260616_003803_img_14.png",
|
"20260616_003803_img_14.png",
|
||||||
"20260615_153426_img_12.png",
|
|
||||||
"20260615_152252_imgxxx.png",
|
"20260615_152252_imgxxx.png",
|
||||||
"20260615_151829_img_92.png",
|
"20260615_151829_img_92.png",
|
||||||
"20260615_151614_img_93.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]
|
fname, group_id, sort_order = row[0], row[2], row[6]
|
||||||
if not group_id:
|
if not group_id:
|
||||||
continue
|
continue
|
||||||
|
if fname.startswith("_turntable/"):
|
||||||
|
continue
|
||||||
if group_id not in groups:
|
if group_id not in groups:
|
||||||
groups[group_id] = (fname, sort_order)
|
groups[group_id] = (fname, sort_order)
|
||||||
else:
|
else:
|
||||||
@@ -1378,24 +1380,73 @@ def _write_turntable_static() -> None:
|
|||||||
except Exception:
|
except Exception:
|
||||||
group_names = {}
|
group_names = {}
|
||||||
|
|
||||||
# Preferred filename per group (sort_order=0)
|
# Fetch active and existing group IDs and filenames from the database (excluding turntable assets)
|
||||||
preferred: dict = {}
|
all_db_gids = set()
|
||||||
|
active_db_gids = set()
|
||||||
|
all_db_filenames = set()
|
||||||
|
active_db_filenames = set()
|
||||||
try:
|
try:
|
||||||
for row in database.list_persons():
|
conn = database.get_db_connection()
|
||||||
fname, gid, sort_order = row[0], row[2], row[6]
|
cur = conn.cursor()
|
||||||
if not gid:
|
cur.execute("""
|
||||||
continue
|
SELECT filename, group_id, archived, hidden
|
||||||
if gid not in preferred:
|
FROM person
|
||||||
preferred[gid] = (fname, sort_order)
|
WHERE NOT (filename LIKE '_turntable/%')
|
||||||
else:
|
""")
|
||||||
cur = preferred[gid][1]
|
for fname, gid, archived, hidden in cur.fetchall():
|
||||||
if sort_order is not None and (cur is None or sort_order < cur):
|
is_archived = bool(archived) if archived is not None else False
|
||||||
preferred[gid] = (fname, sort_order)
|
is_hidden = bool(hidden) if hidden is not None else False
|
||||||
except Exception:
|
|
||||||
pass
|
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 = []
|
turntables = []
|
||||||
for gid in tc.list_cached_group_ids(output_dir):
|
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)
|
state = tc.load_state(output_dir, gid)
|
||||||
if not state:
|
if not state:
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user