Getting to the way it's supposed to be!
This commit is contained in:
53
modules/ufbx/misc/execute_per_fbx.py
Normal file
53
modules/ufbx/misc/execute_per_fbx.py
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
import argparse
|
||||
import os
|
||||
import time
|
||||
import subprocess
|
||||
|
||||
parser = argparse.ArgumentParser(usage="execute_per_fbx.py --exe loader --root .")
|
||||
parser.add_argument("--exe", help="Executable to run")
|
||||
parser.add_argument("--root", default=".", help="Root path to search from")
|
||||
parser.add_argument("--start", default="", help="Top-level file to start from")
|
||||
parser.add_argument("--verbose", action="store_true", help="Verbose information")
|
||||
parser.add_argument('remainder', nargs="...")
|
||||
argv = parser.parse_args()
|
||||
|
||||
begin = time.time()
|
||||
|
||||
num_tested = 0
|
||||
num_fail = 0
|
||||
total_size = 0
|
||||
|
||||
for root, dirs, files in os.walk(argv.root):
|
||||
for file in files:
|
||||
if not file.lower().endswith(".fbx"): continue
|
||||
if file.lower().endswith(".ufbx-fail.fbx"):
|
||||
num_fail += 1
|
||||
continue
|
||||
path = os.path.join(root, file)
|
||||
size = os.stat(path).st_size
|
||||
display = os.path.relpath(path, argv.root)
|
||||
|
||||
if argv.start and display < argv.start:
|
||||
continue
|
||||
|
||||
print(f"-- {display}", flush=True)
|
||||
|
||||
total_size += size
|
||||
if argv.exe:
|
||||
args = [argv.exe, path.encode("utf-8")] + argv.remainder[1:]
|
||||
|
||||
if argv.verbose:
|
||||
cmdline = subprocess.list2cmdline(args)
|
||||
print(f"$ {cmdline}")
|
||||
|
||||
subprocess.check_call(args)
|
||||
num_tested += 1
|
||||
|
||||
end = time.time()
|
||||
dur = end - begin
|
||||
print()
|
||||
print("Success!")
|
||||
print(f"Loaded {num_tested} files in {int(dur//60)}min {int(dur%60)}s.")
|
||||
print(f"Processed {total_size/1e9:.2f}GB at {total_size/1e6/dur:.2f}MB/s.")
|
||||
print(f"Ignored {num_fail} invalid files.")
|
||||
Reference in New Issue
Block a user