import socket
import json
import argparse
parser=argparse.ArgumentParser()
group=parser.add_mutually_exclusive_group(required=True)
group.add_argument('-e', '--execute', action='store_true', help="Execute lua script in TTS")
group.add_argument('-g', '--get', action='store_true', help="Get all lua scripts in TTS")
args=parser.parse_args()
localhost="127.0.0.1"
dataPort=39999
listeningPort=39998
def sendJSONToTTS(jsonData):
    with socket.socket(socket.AF_INET,socket.SOCK_STREAM) as s:
        s.connect((localhost,dataPort))
        s.sendall(json.dumps(jsonData).encode('utf-8'))
def executeLua(luaScript):
    jsonExecute={
        "messageID": 3,
        "guid":"-1",
        "script":luaScript
    }
    sendJSONToTTS(jsonExecute)
def getLuaScripts():
    jsonGet={
        "messageID": 0
    }
    sendJSONToTTS(jsonGet)
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((localhost,listeningPort))
        s.listen()
        while True:
            conn,addr=s.accept()
            with conn:
                data=b''
                while True:
                    packet = conn.recv(1024)
                    if not packet:break
                    data+=packet
                if data:
                    json_data = json.loads(data.decode('utf-8'))
                    print(json_data)
                    break
if __name__=="__main__":
    if args.execute:
        luaScript=input("lua script to execute: ")
        executeLua(luaScript)
    if args.get:
        getLuaScripts()