#!/usr/bin/env python3
from pathlib import Path
import os,json,urllib.request,urllib.parse,datetime as dt
R=Path('/data/video-pipeline/HaTramAudio/project/030-Nguoi-Khong-Co-Ten-Trong-Danh-Sach-So-Tan')
S=json.loads((R/'log/postiz-schedule.json').read_text())
e=os.environ.copy();ep=Path.home()/'.config/ha-tram-audio/postiz.env';assert ep.exists()
for line in ep.read_text().splitlines():
 if '=' in line and not line.lstrip().startswith('#'):
  k,v=line.split('=',1);e.setdefault(k.strip(),v.strip().strip('"').strip("'"))
base=e['POSTIZ_BASE_URL'].rstrip('/');key=e['POSTIZ_API_KEY']
def get(path):
 req=urllib.request.Request(base+path,headers={'Authorization':key})
 return json.loads(urllib.request.urlopen(req,timeout=60).read())
def posts(x): return x.get('posts',x.get('data',[])) if isinstance(x,dict) else x
slot=S['slot_utc'];t=dt.datetime.fromisoformat(slot.replace('Z','+00:00'));q=posts(get('/posts?'+urllib.parse.urlencode({'startDate':(t-dt.timedelta(minutes=2)).isoformat().replace('+00:00','Z'),'endDate':(t+dt.timedelta(minutes=2)).isoformat().replace('+00:00','Z')})))
expected={iid:v['post_id'] for iid,v in S['posts'].items()};found={}
for iid,pid in expected.items():
 m=[x for x in q if x.get('id')==pid and str(x.get('integration',x.get('integrationId',x.get('integration_id',''))))==iid]
 assert len(m)==1,(iid,pid,len(m)); assert m[0].get('status',m[0].get('state','QUEUE')) in ('QUEUE','queued','scheduled','PUBLISHED')
 found[iid]={'post_id':pid,'state':m[0].get('status',m[0].get('state','QUEUE'))}
assert len([x for x in q if x.get('id') in expected.values()])==2
out={'schema_version':1,'project_id':'030','run_id':S['run_id'],'status':'calendar_verified','verified':True,'independent_get':True,'slot_utc':slot,'expected':expected,'found':found,'duplicate_count':0,'verified_at':dt.datetime.now(dt.timezone.utc).isoformat()}
(R/'script/calendar-readback.json').write_text(json.dumps(out,ensure_ascii=False,indent=2)+'\n');print(json.dumps(out,ensure_ascii=False))
if __name__=='__main__': pass
