25 lines
1.7 KiB
Python
25 lines
1.7 KiB
Python
"""Read-only verification of isolated real-model storyboard results."""
|
|
from pathlib import Path
|
|
import hashlib,json,sqlite3,sys
|
|
ROOT=Path(__file__).resolve().parent.parent
|
|
reports=[]
|
|
for argument in sys.argv[1:]:
|
|
folder=Path(argument).resolve()
|
|
assert folder.is_relative_to(ROOT/'integration-work')
|
|
with sqlite3.connect((folder/'huobao.sqlite3').as_uri()+'?mode=ro',uri=True) as db:
|
|
db.row_factory=sqlite3.Row
|
|
assert db.execute('pragma integrity_check').fetchone()[0]=='ok'
|
|
job=json.loads(db.execute("select value from app_settings where key='storyboard_job:8'").fetchone()[0])
|
|
assert job['status']=='done',job['status']
|
|
shots=[dict(r) for r in db.execute('select * from storyboards where episode_id=8 and deleted_at is null order by storyboard_number')]
|
|
assert len(shots)==job['completed'] and shots[-1]['storyboard_number']==job['narrativeEndShot']
|
|
assert [s['storyboard_number'] for s in shots]==list(range(1,len(shots)+1))
|
|
for shot in shots:
|
|
assert shot['video_prompt_en'] and shot['video_prompt_en_source_hash']==hashlib.sha256(('english-v1-speech-cues\n'+shot['video_prompt'].strip()).encode()).hexdigest()
|
|
assert db.execute('select count(*) from sys_task').fetchone()[0]==0,'No media jobs should be submitted'
|
|
from datetime import datetime
|
|
elapsed=(datetime.fromisoformat(job['finishedAt'])-datetime.fromisoformat(job['startedAt'])).total_seconds()
|
|
reports.append({'fixture':str(folder),'status':'done','shots':len(shots),'video_seconds':job['seconds'],'elapsed_seconds':round(elapsed,1),'bilingual_hashes_valid':True,'stopped_at_script_ending':True,'media_jobs_started':0})
|
|
(ROOT/'integration-work/storyboard-real-model-audit.json').write_text(json.dumps(reports,indent=2),'utf-8')
|
|
print(json.dumps(reports))
|