import sys, json, urllib.request, urllib.parse
from collections import defaultdict
sys.path.insert(0,'.')
from repliz_client import HEADERS, BASE
docs,page=[],1
while True:
    q=urllib.parse.urlencode({'page':page,'limit':100})
    req=urllib.request.Request(f'{BASE}/public/schedule?{q}',headers=HEADERS)
    with urllib.request.urlopen(req,timeout=60) as r: d=json.load(r)
    docs+=d.get('docs',d.get('data',[]))
    if not d.get('hasNextPage') or not docs: break
    page+=1
agg=defaultdict(lambda: defaultdict(lambda: [0,0]))
for s in docs:
    if s.get('type')!='video': continue
    aid=s.get('accountId'); st=(s.get('state') or s.get('status') or '?')
    agg[aid][st][0]+=1
    if st=='success': agg[aid][st][1]+=1
print('akun dengan jadwal VIDEO (total, success):')
for aid,v in sorted(agg.items(), key=lambda kv:-sum(x[0] for x in kv[1].values())):
    print(' ',aid, {k:v2[0] for k,v2 in v.items()})
for name,aid in [('TSLAW_THREADS','6a35f8b7c5ff4ce3a322b2ed'),('TSLAW_FB','6a3b41d1c5ff4ce3a32753e8'),('TSLAW_IG','6a76a54d62caae1e04f30968')]:
    rows=[s for s in docs if s.get('accountId')==aid]
    types=defaultdict(int)
    for s in rows: types[s.get('type')]+=1
    print(f'{name}:',dict(types))
