first commit
This commit is contained in:
160
timer_saratovCW.py
Normal file
160
timer_saratovCW.py
Normal file
@@ -0,0 +1,160 @@
|
||||
import sys
|
||||
import json
|
||||
from socket import *
|
||||
import logging
|
||||
import os
|
||||
import time
|
||||
import binascii
|
||||
import requests
|
||||
|
||||
|
||||
HOST = "192.168.127.254"
|
||||
PORT = 1993
|
||||
|
||||
def hexspace(string, length):
|
||||
return " ".join(string[i : i + length] for i in range(0, len(string), length))
|
||||
|
||||
|
||||
session = requests.Session()
|
||||
session.headers.update({"Connection": "keep-alive"})
|
||||
|
||||
|
||||
def send_data(name, value):
|
||||
url = "http://127.0.0.1:8088/API/"
|
||||
par = "SetText" if name.split(".")[1] == "Text" else "SetImage"
|
||||
params = {
|
||||
"Function": par,
|
||||
"Input": 51,
|
||||
"SelectedName": name,
|
||||
"Value": value,
|
||||
}
|
||||
session.get(url, params=params)
|
||||
|
||||
|
||||
def send_data_CW(name, value):
|
||||
try:
|
||||
with socket(AF_INET, SOCK_STREAM) as tcp_socket:
|
||||
tcp_socket.connect(('localhost', 5115))
|
||||
data = f"{name}={value}\n".encode()
|
||||
# print(f"Sending: {data}") # Отладка
|
||||
tcp_socket.sendall(data)
|
||||
# print("Data sent!") # Подтверждение отправки
|
||||
except Exception as e:
|
||||
print(f"Error sending TCP data: {e}")
|
||||
|
||||
|
||||
|
||||
|
||||
def parse_new(line):
|
||||
if line == b"\xff":
|
||||
return
|
||||
|
||||
cdata = binascii.hexlify(line)
|
||||
ddata = cdata.decode("utf-8").upper()
|
||||
edata = hexspace(ddata, 2)
|
||||
temp = edata.split("FF 52")
|
||||
for i in temp:
|
||||
minutes = int(i.split()[5], 16)
|
||||
seconds = int(i.split()[6], 16)
|
||||
if seconds < 60:
|
||||
timer_str = f"{minutes}:{seconds:02d}"
|
||||
else:
|
||||
timer_str = f"{minutes}.{seconds-128}"
|
||||
seconds_24 = int(i.split()[7], 16)
|
||||
timer_attack = ""
|
||||
timer_pic = "D:\YandexDisk\Графика\БАСКЕТБОЛ\ЕДИНАЯ ЛИГА ВТБ 2022-2023\Scorebug Indicators\\24Sec_Orange.png"
|
||||
if seconds_24 == 255:
|
||||
timer_attack = ""
|
||||
else:
|
||||
if seconds_24 > 127:
|
||||
seconds_24 = seconds_24 - 128
|
||||
timer_attack = f"{seconds_24//10}.{seconds_24%10}"
|
||||
timer_pic = "D:\YandexDisk\Графика\БАСКЕТБОЛ\ЕДИНАЯ ЛИГА ВТБ 2022-2023\Scorebug Indicators\\24Sec_Red.png"
|
||||
else:
|
||||
timer_attack = seconds_24
|
||||
|
||||
quarter = int(i.split()[14][1], 16)
|
||||
timeout1 = int(i.split()[10], 16)
|
||||
timeout2 = int(i.split()[11], 16)
|
||||
score1 = int(i.split()[8], 16)
|
||||
score2 = int(i.split()[9], 16)
|
||||
foul1 = int(i.split()[12], 16)
|
||||
foul2 = int(i.split()[13], 16)
|
||||
data = {
|
||||
"TIMER": timer_str,
|
||||
"ATTACK": timer_attack,
|
||||
"Score_Home": score1,
|
||||
"Score_Away": score2,
|
||||
"fouls1": foul1,
|
||||
"fouls2": foul2,
|
||||
"quarter": quarter,
|
||||
}
|
||||
# with open("D:\FIBA CW\\timer.json", "w", encoding="utf-8") as file:
|
||||
# json.dump([data], file, ensure_ascii=False, indent=4)
|
||||
send_data_CW("TIMER", data["TIMER"])
|
||||
send_data_CW("ATTACK", data["ATTACK"])
|
||||
send_data_CW("Score_Home", data["Score_Home"])
|
||||
send_data_CW("Score_Away", data["Score_Away"])
|
||||
send_data_CW("fouls1", data["fouls1"])
|
||||
send_data_CW("fouls2", data["fouls2"])
|
||||
send_data_CW("quarter", data["quarter"])
|
||||
# send_data("Score_Home", data["Score_Home"])
|
||||
# send_data("Score_Away", data["Score_Away"])
|
||||
# send_data("fouls1", data["fouls1"])
|
||||
# send_data("fouls2", data["fouls2"])
|
||||
# send_data("24SECBACKGROUND.Source", data["24SECBACKGROUND.Source"])
|
||||
# x = [int(x, 16) for x in i.split()]
|
||||
print(f"{i}, {data}")
|
||||
|
||||
|
||||
def read_logs():
|
||||
with open(
|
||||
r"C:\Code\timer\LOGS\timer_SARATOV copy 2.log",
|
||||
"r",
|
||||
) as file:
|
||||
for line in file:
|
||||
parts = line.strip().split(" DEBUG ")
|
||||
if len(parts) == 2:
|
||||
timestamp = parts[0]
|
||||
data = eval(parts[1])
|
||||
parse_new(data)
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
def main():
|
||||
if not os.path.isdir("LOGS"):
|
||||
os.mkdir("LOGS")
|
||||
|
||||
LogFileName = f"LOGS/timer_SARATOV copy.log"
|
||||
logging.basicConfig(
|
||||
level=logging.DEBUG,
|
||||
format="%(asctime)s %(levelname)s %(message)s",
|
||||
filename=LogFileName,
|
||||
filemode="w",
|
||||
)
|
||||
|
||||
try:
|
||||
tcp_socket = socket(AF_INET, SOCK_STREAM)
|
||||
tcp_socket.connect((HOST, PORT))
|
||||
data = str.encode("hello")
|
||||
tcp_socket.send(data)
|
||||
data = bytes.decode(data)
|
||||
while True:
|
||||
data = tcp_socket.recv(1024)
|
||||
print(data)
|
||||
logging.debug(data)
|
||||
try:
|
||||
parse_new(data)
|
||||
except Exception as ex:
|
||||
print(f"\n{ex}\n")
|
||||
except KeyboardInterrupt:
|
||||
tcp_socket.close()
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
try:
|
||||
# main()
|
||||
read_logs()
|
||||
except KeyboardInterrupt:
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user