Explorer
/tmp/aa043_p29_r4_preflight.py
← Zurück ↓ Download
import sqlite3, json, datetime, subprocess, os
import requests
DB='/opt/struktur/youtube-research/knowledge.db'
KEY=None
for line in open('/opt/struktur/youtube-research/.env.supadata'):
    if line.startswith('SUPADATA_API_KEY='):
        KEY=line.rstrip().split('=',1)[1]
        break
if not KEY: raise SystemExit('missing key')
r=requests.get('https://api.supadata.ai/v1/me',headers={'x-api-key':KEY},timeout=30)
data=r.json() if r.headers.get('content-type','').startswith('application/json') else {}
data={k:data.get(k) for k in ['plan','usedCredits','maxCredits','availableCredits']}
con=sqlite3.connect('file:'+DB+'?mode=ro',uri=True); con.row_factory=sqlite3.Row
q="""SELECT e.job_id,e.video_id,v.youtube_id,e.status,v.transcript_status,length(trim(coalesce(v.transcript,''))) transcript_len
FROM e2e_jobs e JOIN videos v ON v.id=e.video_id
WHERE e.status='supadata_retry' AND v.transcript_status<>'done' AND length(trim(coalesce(v.transcript,'')))=0
AND v.youtube_id IS NOT NULL AND e.job_id NOT IN (198,245)
ORDER BY e.job_id LIMIT 10"""
rows=[dict(x) for x in con.execute(q)]
show=subprocess.run(['systemctl','show','youtube-research-e2e-worker.service','-p','ActiveState','-p','SubState','-p','MainPID','-p','NRestarts'],text=True,capture_output=True).stdout
print(json.dumps({'checked_at_utc':datetime.datetime.now(datetime.timezone.utc).isoformat(),'account_http':r.status_code,'account':data,'normal_candidates':rows,'worker':show},ensure_ascii=False))