- Update ASR, face, OCR, pose processors - Add release pre-flight check script - Add synonym generation, chunk processing scripts - Add face recognition, stamp search utilities
49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
#!/opt/homebrew/bin/python3.11
|
|
"""
|
|
Backfill Frame Data
|
|
Calculates start_frame and end_frame based on time and FPS.
|
|
"""
|
|
|
|
import psycopg2
|
|
|
|
DB_URL = "postgresql://accusys@localhost:5432/momentry"
|
|
FPS = 24.0
|
|
|
|
|
|
def backfill(table, time_col_start, time_col_end):
|
|
print(f"🔄 Backfilling {table}...")
|
|
conn = psycopg2.connect(DB_URL)
|
|
cur = conn.cursor()
|
|
|
|
# Get all rows
|
|
cur.execute(f"SELECT id, {time_col_start}, {time_col_end} FROM {table}")
|
|
rows = cur.fetchall()
|
|
|
|
updates = []
|
|
for id, start, end in rows:
|
|
if start is not None:
|
|
s_frame = int(round(start * FPS))
|
|
e_frame = int(round(end * FPS)) if end is not None else s_frame
|
|
updates.append((s_frame, e_frame, id))
|
|
|
|
# Batch update
|
|
for s_frame, e_frame, id in updates:
|
|
cur.execute(
|
|
f"""
|
|
UPDATE {table}
|
|
SET start_frame = %s, end_frame = %s, fps = %s
|
|
WHERE id = %s
|
|
""",
|
|
(s_frame, e_frame, FPS, id),
|
|
)
|
|
|
|
conn.commit()
|
|
print(f"✅ Updated {len(updates)} rows in {table}.")
|
|
cur.close()
|
|
conn.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
backfill("parent_chunks", "start_time", "end_time")
|
|
backfill("child_chunks", "start_time", "end_time")
|