63 lines
1.8 KiB
Python
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 = [os.path.basename(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()
|