#!/usr/bin/env python3

"""
adinterval
generates SCTE-35 cues for sidecar files
"""

import os,sys,time
from threefive import Cue
from threefive.encode import mk_splice_insert

ROLLOVER =95443.717678

class Args:
    def __init__(self,pts):
        self.event_id = 1
        self.duration = 120
        self.pts = pts
        self.ival = 300

    def iter_args(self):
        self.pts +=self.ival
        self.pts % ROLLOVER
        self.event_id +=1
        time.sleep(self.ival -4)

        

def show_cue(new_cue):
    """
    show_cue displays cue data
    """
    cue = Cue(new_cue)
    cue.decode()
    cue.show()


def cue_out(event_id, pts, duration, sidecar):
    """
    cue_out generates a SCTE-35 cue with out of network set to True
    """
    cue = mk_splice_insert(event_id, pts=pts, duration=duration, out=True).encode()
    write_line(pts, cue, sidecar,'CUE-OUT')


def cue_in(event_id, pts, sidecar):
    """
    cue_in generates a SCTE-35 cue with out of network set to False
    """
    cue = mk_splice_insert(event_id, pts=pts,duration =None, out=False).encode()
    write_line(pts, cue, sidecar, 'CUE-IN')


def write_line(pts, cue, sidecar,cue_state):
    """
    write_line writes pts,cue to sidecar file
    """
    print(f'{cue_state} @ {pts}')
    line = f"{pts},{cue}\n"
    sidecar.write(line)


def mk_cues(args):
    """
    mk_cues generates cues for the sidecar
    based on the values in args
    """
    with open("sidecar.txt", "a") as sidecar:

        while True:
            cue_out(args.event_id, args.pts, args.duration, sidecar)
            cue_in(args.event_id, args.pts+args.duration, sidecar)
            args.iter_args()
        return


if __name__ == "__main__":
    if  len(sys.argv) <2:
        print( '\nPass in start PTS like\n adinterval 123.456789\n')
        sys.exit()
 
    args=Args(float(sys.argv[1]))
    mk_cues(args)

