Files
hcie-rust-v3.05/_tools/export_all_kra_to_png.py
T
2026-07-09 02:59:53 +03:00

74 lines
3.2 KiB
Python

#!/usr/bin/env python3
import os
import subprocess
import glob
TASKS = [
("_tmp/kra_tunes_simple_black/drop_shadow_kra_set", "_tmp/kra_tunes_simple_black/drop_shadow_png_kra_set"),
("_tmp/kra_tunes_simple_red/drop_shadow_kra_set", "_tmp/kra_tunes_simple_red/drop_shadow_png_kra_set"),
("_tmp/kra_tunes_simple_black/outer_glow_kra_set", "_tmp/kra_tunes_simple_black/outer_glow_png_kra_set"),
("_tmp/kra_tunes_simple_red/outer_glow_kra_set", "_tmp/kra_tunes_simple_red/outer_glow_png_kra_set"),
("_tmp/kra_tunes_simple_black/inner_glow_kra_set", "_tmp/kra_tunes_simple_black/inner_glow_png_kra_set"),
("_tmp/kra_tunes_simple_red/inner_glow_kra_set", "_tmp/kra_tunes_simple_red/inner_glow_png_kra_set"),
("_tmp/kra_tunes_simple_black/bevel_emboss_kra_set", "_tmp/kra_tunes_simple_black/bevel_emboss_png_kra_set"),
("_tmp/kra_tunes_simple_red/bevel_emboss_kra_set", "_tmp/kra_tunes_simple_red/bevel_emboss_png_kra_set"),
]
def main():
# Check if Krita exists
try:
subprocess.run(["krita", "--version"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
except FileNotFoundError:
print("Error: 'krita' executable not found in your PATH.")
print("Please install Krita or run this script in an environment where Krita is available.")
return
for kra_dir, png_dir in TASKS:
if not os.path.exists(kra_dir):
print(f"Directory {kra_dir} does not exist. Skipping.")
continue
kra_files = glob.glob(os.path.join(kra_dir, "*.kra"))
if not kra_files:
print(f"No .kra files found in {kra_dir}. Skipping.")
continue
os.makedirs(png_dir, exist_ok=True)
print(f"Found {len(kra_files)} KRA files in {kra_dir}. Exporting to {png_dir}...")
count = 0
for kra_path in kra_files:
filename = os.path.basename(kra_path)
png_name = filename.replace(".kra", ".png")
png_path = os.path.join(png_dir, png_name)
if os.path.exists(png_path):
continue
print(f" Exporting {filename} -> {png_name}...")
cmd = ["krita", kra_path, "--export", "--export-filename", png_path]
success = False
for attempt in range(2):
try:
res = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=10)
if res.returncode == 0:
count += 1
success = True
break
else:
print(f" FAILED to export {filename}: {res.stderr.decode('utf-8', 'ignore')}")
break
except subprocess.TimeoutExpired:
print(f" TIMEOUT on {filename} (attempt {attempt+1}), retrying...")
# Kill any lingering krita processes just in case
os.system("killall -9 krita 2>/dev/null")
if not success:
print(f" Skipping {filename} after failure/timeout.")
print(f"Done with {kra_dir}. Exported {count} new files.")
if __name__ == "__main__":
main()