"""Whole-frame offset from an explicit start label -> timecode. No Resolve required."""
import argparse
import json
from resolve_api_timecode import Clock, offset_to_timecode, timecode_to_offset


def main():
    p = argparse.ArgumentParser(description=__doc__)
    p.add_argument("offset", type=int, help="Whole frames from start, not absolute API coordinates")
    p.add_argument("--start", required=True, help="HH:MM:SS:FF or HH:MM:SS;FF")
    p.add_argument("--rate", required=True, help="24 or e.g. 30000/1001; no 29.97 alias")
    p.add_argument("--mode", choices=("ndf", "df"), required=True)
    a = p.parse_args()
    clock = Clock(a.rate, a.mode)
    tc = offset_to_timecode(a.offset, a.start, clock)
    print(json.dumps({"offset_frames": a.offset, "start_timecode": a.start, "timecode": tc,
                      "rate": str(clock.rate), "mode": clock.mode,
                      "round_trip_offset": timecode_to_offset(tc, a.start, clock)}, indent=2))


if __name__ == "__main__":
    main()
