Merge branch 'main' into Barabanov_TEST
This commit is contained in:
302
PlayTypeID.json
302
PlayTypeID.json
@@ -1,302 +0,0 @@
|
|||||||
[
|
|
||||||
{
|
|
||||||
"PlayTypeID": 0,
|
|
||||||
"PlayInfoSite": "-",
|
|
||||||
"PlayInfo": "Пустое событие"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 1,
|
|
||||||
"PlayInfoSite": "1 очко",
|
|
||||||
"PlayInfo": "Штрафной бросок - попадание"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 2,
|
|
||||||
"PlayInfoSite": "2 очка",
|
|
||||||
"PlayInfo": "2х очковый бросок - попадание"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 3,
|
|
||||||
"PlayInfoSite": "3 очка",
|
|
||||||
"PlayInfo": "3х очковый бросок - попадание"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 4,
|
|
||||||
"PlayInfoSite": "Мимо 1 очко",
|
|
||||||
"PlayInfo": "Штрафной бросок - промах"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 5,
|
|
||||||
"PlayInfoSite": "Мимо 2 очка",
|
|
||||||
"PlayInfo": "2х очковый бросок - промах"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 6,
|
|
||||||
"PlayInfoSite": "Мимо 3 очка",
|
|
||||||
"PlayInfo": "3х очковый бросок - промах"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 7,
|
|
||||||
"PlayInfoSite": "Замена",
|
|
||||||
"PlayInfo": "Замена игроков"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 8,
|
|
||||||
"PlayInfoSite": "Выход",
|
|
||||||
"PlayInfo": "Выход на площадку"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 9,
|
|
||||||
"PlayInfoSite": "Уход",
|
|
||||||
"PlayInfo": "Ушел с площадки"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 10,
|
|
||||||
"PlayInfoSite": "Потеря",
|
|
||||||
"PlayInfo": "Потеря"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 11,
|
|
||||||
"PlayInfoSite": "Пас-потеря",
|
|
||||||
"PlayInfo": "Потеря мяча при передаче"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 12,
|
|
||||||
"PlayInfoSite": "Пробежка",
|
|
||||||
"PlayInfo": "Пробежка"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 13,
|
|
||||||
"PlayInfoSite": "Заступ в аут",
|
|
||||||
"PlayInfo": "Заступ в аут"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 14,
|
|
||||||
"PlayInfoSite": "Зона",
|
|
||||||
"PlayInfo": "Зона"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 15,
|
|
||||||
"PlayInfoSite": "Двойное ведение",
|
|
||||||
"PlayInfo": "Двойное ведение"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 16,
|
|
||||||
"PlayInfoSite": "3 секунды",
|
|
||||||
"PlayInfo": "3 секунды"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 17,
|
|
||||||
"PlayInfoSite": "5 секунд",
|
|
||||||
"PlayInfo": "5 секунд"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 18,
|
|
||||||
"PlayInfoSite": "8 секунд",
|
|
||||||
"PlayInfo": "8 секунд"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 19,
|
|
||||||
"PlayInfoSite": "24 секунды",
|
|
||||||
"PlayInfo": "24 секунды"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 20,
|
|
||||||
"PlayInfoSite": "Потеря мяча",
|
|
||||||
"PlayInfo": "Потеря мяча"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 21,
|
|
||||||
"PlayInfoSite": "Начало четверти",
|
|
||||||
"PlayInfo": "Начало четверти?"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 22,
|
|
||||||
"PlayInfoSite": "",
|
|
||||||
"PlayInfo": "Окончание четверти?"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 23,
|
|
||||||
"PlayInfoSite": "Тайм-аут",
|
|
||||||
"PlayInfo": "Тайм-аут"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 24,
|
|
||||||
"PlayInfoSite": "",
|
|
||||||
"PlayInfo": "неизвестно"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 25,
|
|
||||||
"PlayInfoSite": "Пас",
|
|
||||||
"PlayInfo": "Передача"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 26,
|
|
||||||
"PlayInfoSite": "Перехват",
|
|
||||||
"PlayInfo": "Перехват"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 27,
|
|
||||||
"PlayInfoSite": "Блокшот",
|
|
||||||
"PlayInfo": "Блокшот"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 28,
|
|
||||||
"PlayInfoSite": "Подбор",
|
|
||||||
"PlayInfo": "Подбор"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 29,
|
|
||||||
"PlayInfoSite": "Быстрый отрыв",
|
|
||||||
"PlayInfo": "Быстрый отрыв"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 30,
|
|
||||||
"PlayInfoSite": "Бросок сверху",
|
|
||||||
"PlayInfo": "Тип броска"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 31,
|
|
||||||
"PlayInfoSite": "В прыжке",
|
|
||||||
"PlayInfo": "Тип броска"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 32,
|
|
||||||
"PlayInfoSite": "В проходе",
|
|
||||||
"PlayInfo": "Тип броска"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 33,
|
|
||||||
"PlayInfoSite": "Добивание",
|
|
||||||
"PlayInfo": "Тип броска"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 34,
|
|
||||||
"PlayInfoSite": "Навес",
|
|
||||||
"PlayInfo": "Тип броска"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 35,
|
|
||||||
"PlayInfoSite": "Бросок крюком",
|
|
||||||
"PlayInfo": "Тип броска"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 40,
|
|
||||||
"PlayInfoSite": "Фол P",
|
|
||||||
"PlayInfo": "Фол персональный"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 41,
|
|
||||||
"PlayInfoSite": "Фол U",
|
|
||||||
"PlayInfo": "Фол неспортивный"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 42,
|
|
||||||
"PlayInfoSite": "Фол T",
|
|
||||||
"PlayInfo": "Фол технический"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 43,
|
|
||||||
"PlayInfoSite": "Фол D",
|
|
||||||
"PlayInfo": "Фол дисквалифицирующий"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 44,
|
|
||||||
"PlayInfoSite": "Фол C",
|
|
||||||
"PlayInfo": "Фол технический главному тренеру за его личное неспортивное поведение"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 45,
|
|
||||||
"PlayInfoSite": "Фол В",
|
|
||||||
"PlayInfo": "Фол технический главному тренеру по любой другой причине"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 47,
|
|
||||||
"PlayInfoSite": "В нападении",
|
|
||||||
"PlayInfo": "Тип фола"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 50,
|
|
||||||
"PlayInfoSite": "Вбрасывание",
|
|
||||||
"PlayInfo": "Тип фола"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 51,
|
|
||||||
"PlayInfoSite": "1 бросок",
|
|
||||||
"PlayInfo": "Назначение 1го штрафного броска"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 52,
|
|
||||||
"PlayInfoSite": "2 броска",
|
|
||||||
"PlayInfo": "Назначение 2х штрафных бросков"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 53,
|
|
||||||
"PlayInfoSite": "3 броска",
|
|
||||||
"PlayInfo": "Назначение 3х штрафных бросков"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 54,
|
|
||||||
"PlayInfoSite": "Компенсация",
|
|
||||||
"PlayInfo": "Обоюдное пробивание штрафных"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 59,
|
|
||||||
"PlayInfoSite": "",
|
|
||||||
"PlayInfo": "пробел для сайта"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 60,
|
|
||||||
"PlayInfoSite": "Разминка команд",
|
|
||||||
"PlayInfo": "Разминка команд"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 61,
|
|
||||||
"PlayInfoSite": "Представление команд",
|
|
||||||
"PlayInfo": "Представление команд"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 62,
|
|
||||||
"PlayInfoSite": "Менее 3 минут до начала игры",
|
|
||||||
"PlayInfo": "Менее 3 минут до начала игры"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 63,
|
|
||||||
"PlayInfoSite": "Игра сейчас начнется",
|
|
||||||
"PlayInfo": "Игра сейчас начнется"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 69,
|
|
||||||
"PlayInfoSite": "Видеопросмотр",
|
|
||||||
"PlayInfo": "Видеопросмотр?"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 70,
|
|
||||||
"PlayInfoSite": "",
|
|
||||||
"PlayInfo": "Возможно остановка игры?"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 71,
|
|
||||||
"PlayInfoSite": "",
|
|
||||||
"PlayInfo": "Возможно возобновление игры?"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 72,
|
|
||||||
"PlayInfoSite": "Видеопросмотр",
|
|
||||||
"PlayInfo": "Видеопросмотр?"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 73,
|
|
||||||
"PlayInfoSite": "Старт видеотрансляции",
|
|
||||||
"PlayInfo": "Старт видеотрансляции"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 74,
|
|
||||||
"PlayInfoSite": "Конец видеотрансляции",
|
|
||||||
"PlayInfo": "Конец видеотрансляции"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"PlayTypeID": 100,
|
|
||||||
"PlayInfoSite": "Матч завершен",
|
|
||||||
"PlayInfo": "Матч завершен"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
@echo off
|
|
||||||
REM 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vmix_url_replace.exe <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
"%~dp0vmix_url_replace.exe" --file "D:\extGFX\VTB.vmix" --url "https://per.tvstart.ru/app/static/per_"
|
|
||||||
|
|
||||||
REM 2. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> vMix
|
|
||||||
start "" "D:\extGFX\VTB.vmix"
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
@echo off
|
|
||||||
REM 1. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> vmix_url_replace.exe <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
"%~dp0vmix_url_replace.exe" --file "D:\extGFX\VTB.vmix" --url "https://kaz.tvstart.ru/app/static/kaz_"
|
|
||||||
|
|
||||||
REM 2. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> vMix
|
|
||||||
start "" "D:\extGFX\VTB.vmix"
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"10.10.1.180": {"host": "", "tag": "vtb", "root": 1, "team": "cska"},
|
|
||||||
"10.10.35.21": {"host": "gfx", "tag": "vtb", "root": 1, "team": "Lokomotiv Kuban"},
|
|
||||||
"10.10.35.22": {"host": "krd", "tag": "vtb", "root": 1, "team": "Lokomotiv Kuban1"},
|
|
||||||
"10.10.35.23": {"host": "ekb", "tag": "vtb", "root": 1, "team": "uralmash1"},
|
|
||||||
"10.10.35.24": {"host": "per", "tag": "vtb", "root": 1, "team": "betcity parma1"},
|
|
||||||
"10.10.35.25": {"host": "sar", "tag": "vtb", "root": 1, "team": "avtodor1"},
|
|
||||||
"10.10.35.26": {"host": "spb", "tag": "vtb", "root": 1, "team": "zenit1"},
|
|
||||||
"10.10.35.27": {"host": "sam", "tag": "vtb", "root": 1, "team": "samara1"},
|
|
||||||
"10.10.35.28": {"host": "msk1", "tag": "vtb", "root": 1, "team": "mba-mai1"},
|
|
||||||
"10.10.35.29": {"host": "msk2", "tag": "vtb", "root": 1, "team": "Pari Nizhny Novgorod1"},
|
|
||||||
"10.10.35.30": {"host": "kaz", "tag": "vtb", "root": 1, "team": "unics1"}
|
|
||||||
}
|
|
||||||
7
run.bat
7
run.bat
@@ -1,7 +0,0 @@
|
|||||||
::Скрипт запуска отображения данных в RFB
|
|
||||||
|
|
||||||
chcp 65001
|
|
||||||
@echo off >nul
|
|
||||||
|
|
||||||
echo запускаю софт
|
|
||||||
streamlit run visual.py
|
|
||||||
1106
visual_GPT1.py
1106
visual_GPT1.py
File diff suppressed because it is too large
Load Diff
1601
visual_back1.py
1601
visual_back1.py
File diff suppressed because it is too large
Load Diff
@@ -1,79 +0,0 @@
|
|||||||
import os
|
|
||||||
import shutil
|
|
||||||
import argparse
|
|
||||||
import xml.etree.ElementTree as ET
|
|
||||||
from urllib.parse import urlparse, unquote
|
|
||||||
|
|
||||||
def localname(tag: str) -> str:
|
|
||||||
return tag.split('}', 1)[-1].lower()
|
|
||||||
|
|
||||||
def extract_filename(u: str) -> str:
|
|
||||||
s = (u or "").strip()
|
|
||||||
if not s:
|
|
||||||
return ""
|
|
||||||
p = urlparse(s)
|
|
||||||
path = p.path if p.scheme else s
|
|
||||||
path = path.replace("\\", "/")
|
|
||||||
name = path.split("/")[-1]
|
|
||||||
return unquote(name)
|
|
||||||
|
|
||||||
def replace_urls_in_vmix(xml_path: str, prefix_url: str) -> int:
|
|
||||||
if not os.path.isfile(xml_path):
|
|
||||||
raise FileNotFoundError(f"Файл не найден: {xml_path}")
|
|
||||||
|
|
||||||
backup_path = xml_path + ".bak"
|
|
||||||
shutil.copy2(xml_path, backup_path)
|
|
||||||
|
|
||||||
tree = ET.parse(xml_path)
|
|
||||||
root = tree.getroot()
|
|
||||||
|
|
||||||
replaced = 0
|
|
||||||
for node in root.iter():
|
|
||||||
if localname(node.tag).startswith("datasource") and node.get("friendlyName") == "JSON":
|
|
||||||
for sub in node.iter():
|
|
||||||
if localname(sub.tag) == "url":
|
|
||||||
old = (sub.text or "").strip()
|
|
||||||
# ✅ проверка: если уже новый URL — пропускаем
|
|
||||||
if old.startswith(prefix_url):
|
|
||||||
print(f"Пропускаем — уже новый URL: {old}")
|
|
||||||
continue
|
|
||||||
tail = extract_filename(old)
|
|
||||||
if not tail:
|
|
||||||
continue
|
|
||||||
new_full = prefix_url + tail
|
|
||||||
if old != new_full:
|
|
||||||
print(f"{old} -> {new_full}")
|
|
||||||
sub.text = new_full
|
|
||||||
replaced += 1
|
|
||||||
|
|
||||||
# сохраняем без XML декларации
|
|
||||||
tree.write(xml_path, encoding="utf-8", xml_declaration=False)
|
|
||||||
return replaced
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser(
|
|
||||||
description="Заменяет <url> в datasource[friendlyName=JSON] на PREFIX + имя файла."
|
|
||||||
)
|
|
||||||
parser.add_argument("--file", "-f", required=True, help="Путь к .vmix файлу")
|
|
||||||
parser.add_argument("--url", "-u", required=False, help="Префикс нового URL (например, https://gfx.tvstart.ru/app/static/gfx_)")
|
|
||||||
parser.add_argument("--pause", action="store_true", help="Ожидать Enter в конце (удобно при запуске двойным кликом)")
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
prefix = args.url or input("Введите префикс нового URL (например, https://gfx.tvstart.ru/app/static/gfx_): ").strip()
|
|
||||||
if not prefix:
|
|
||||||
print("Префикс пустой — ничего не сделано.")
|
|
||||||
return
|
|
||||||
|
|
||||||
try:
|
|
||||||
count = replace_urls_in_vmix(args.file, prefix)
|
|
||||||
print(f"Готово. Заменено тегов <url>: {count}")
|
|
||||||
print(f"Резервная копия: {args.file}.bak")
|
|
||||||
except Exception as e:
|
|
||||||
print("Ошибка:", e)
|
|
||||||
|
|
||||||
if args.pause:
|
|
||||||
input("Нажмите Enter для выхода...")
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
Reference in New Issue
Block a user