загружаю

This commit is contained in:
2026-09-07 19:07:40 +03:00
commit 1485819556
16 changed files with 1526 additions and 0 deletions
+105
View File
@@ -0,0 +1,105 @@
#!/usr/bin/env python3
"""
Скрипт компиляции .txt файлов обратно в .cst.
Запускать из папки translate_util.
Спрашивает, из какой папки брать .txt файлы (по умолчанию txt_translated)
и в какую папку положить итоговые .cst (по умолчанию update01).
mc.exe запускается из папки txt и кладёт результат (.cst) туда же,
рядом с .txt. Скрипт копирует .txt файлы из исходной папки в txt,
компилирует их, а затем переносит получившиеся .cst в целевую папку
(перезаписывая существующие без вопросов).
"""
import shutil
import subprocess
import sys
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent
TOOL_EXE = BASE_DIR / "tool" / "mc.exe"
TXT_DIR = BASE_DIR / "txt"
def main():
if not TOOL_EXE.exists():
print(f"Ошибка: не найден {TOOL_EXE}")
sys.exit(1)
src_input = input("Из какой папки брать .txt файлы? [txt_translated]: ").strip()
src_dir_name = src_input if src_input else "txt_translated"
src_dir = BASE_DIR / src_dir_name
dst_input = input("В какую папку положить скомпилированные .cst? [update01]: ").strip()
dst_dir_name = dst_input if dst_input else "update01"
dst_dir = BASE_DIR / dst_dir_name
if not src_dir.is_dir():
print(f"Ошибка: папка не найдена: {src_dir}")
sys.exit(1)
TXT_DIR.mkdir(exist_ok=True)
dst_dir.mkdir(exist_ok=True)
txt_files = sorted(src_dir.glob("*.txt"))
if not txt_files:
print(f"В папке {src_dir} не найдено .txt файлов.")
sys.exit(0)
print(f"Найдено файлов: {len(txt_files)}")
print(f"Источник .txt: {src_dir}")
print(f"Рабочая папка компиляции: {TXT_DIR}")
print(f"Итоговая папка .cst: {dst_dir}\n")
ok_count = 0
fail_count = 0
same_dir = src_dir.resolve().samefile(TXT_DIR.resolve()) if src_dir.exists() and TXT_DIR.exists() else False
for txt_file in txt_files:
working_txt = TXT_DIR / txt_file.name
# Копируем исходный .txt в рабочую папку txt (перезаписываем, если есть),
# если источник и есть txt — копировать не нужно
if not same_dir:
shutil.copy2(txt_file, working_txt)
print(f"-> {txt_file.name}")
try:
result = subprocess.run(
[str(TOOL_EXE), working_txt.name],
cwd=str(TXT_DIR),
capture_output=True,
text=True,
)
if result.stdout:
print(result.stdout.strip())
if result.stderr:
print(result.stderr.strip())
if result.returncode != 0:
fail_count += 1
print(f" [!] Код возврата: {result.returncode}")
continue
compiled_cst = TXT_DIR / (working_txt.stem + ".cst")
if not compiled_cst.exists():
fail_count += 1
print(f" [!] Ожидаемый файл не найден: {compiled_cst}")
continue
# Переносим результат в целевую папку, перезаписывая без вопросов
dst_cst = dst_dir / compiled_cst.name
shutil.move(str(compiled_cst), str(dst_cst))
ok_count += 1
except Exception as e:
fail_count += 1
print(f" [!] Ошибка запуска: {e}")
print(f"\nГотово. Успешно: {ok_count}, с ошибками: {fail_count}")
if __name__ == "__main__":
main()