"""本主题专属离线算法，仅读取同目录合成JSON，不联网、不控制设备。"""
import csv, json, math, re, struct
from pathlib import Path
from fractions import Fraction
BASE=Path(__file__).resolve().parent
data=json.loads((BASE/'input.json').read_text(encoding='utf-8'))['data']
interval=Fraction(60000,data['bpm']*data['clocks_per_quarter'])
times=[interval*n for n in range(data['clock_intervals']+1)]
clocks=data['song_position_pointer']*6;quarters=Fraction(clocks,data['clocks_per_quarter']);song_ms=quarters*Fraction(60000,data['bpm'])
assert interval==Fraction(125,6) and times[-1]==500 and song_ms==1000
result={'clock_interval_ms_exact':str(interval),'pulse_times_ms':[float(t) for t in times],'spp_clocks':clocks,'spp_quarters_exact':str(quarters),'song_time_fixed_tempo_ms':float(song_ms),'absolute_video_position':None,'missing_information':'影片时间原点或绝对时码未提供'}
(BASE/'result.json').write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
print(json.dumps(result,ensure_ascii=False))
