Files
2026-09-07 19:07:40 +03:00

106 lines
3.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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()