videocut/zhconv.py

63 lines
1.8 KiB
Python

import os
import sys
import glob
try:
from opencc import OpenCC
except ImportError:
print("Error: 'opencc' package not found. Installing...")
import subprocess
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'opencc'])
from opencc import OpenCC
def convert_filename(filename, cc):
name, ext = os.path.splitext(filename)
simplified_name = cc.convert(name)
if simplified_name != name:
return simplified_name + ext
return None
def main():
if len(sys.argv) < 2:
print("Usage: python zhconv.py <path_to_file_or_folder>")
return
raw_input = sys.argv[1].strip(' "\'')
input_arg = os.path.abspath(raw_input)
print(f"Target: {input_arg}")
cc = OpenCC('t2s')
if os.path.isfile(input_arg):
target_dir = os.path.dirname(input_arg)
target_files = [input_arg]
elif os.path.isdir(input_arg):
target_dir = input_arg
target_files = None
else:
print(f"Error: Path '{input_arg}' does not exist.")
return
if target_files is None:
target_files = glob.glob(os.path.join(target_dir, '*'))
converted_count = 0
for file_path in target_files:
if not os.path.isfile(file_path):
continue
filename = os.path.basename(file_path)
new_filename = convert_filename(filename, cc)
if new_filename:
new_path = os.path.join(target_dir, new_filename)
if os.path.exists(new_path):
print(f"Skipped (already exists): {new_filename}")
else:
os.rename(file_path, new_path)
print(f"Converted: {filename} -> {new_filename}")
converted_count += 1
print(f"\nConverted {converted_count} file(s).")
if __name__ == "__main__":
main()