загружаю
This commit is contained in:
+105
@@ -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()
|
||||
Reference in New Issue
Block a user