import os import re import shutil from app.services import FolderService from app.constants import IMAGE_EXTENSIONS, IGNORE_DIRS class ImageService: def __init__(self): self.prefix_pattern = re.compile(r'(?i)[A-Z]+\.') self.paths = ["C:\\Users\\Localhost\\Desktop\\images"] self.image_root_folder = "C:\\Users\\Localhost\\Desktop\\images" self.done_image = "C:\\Users\\Localhost\\Desktop\\BT\\done_images" def export_callback(self, entry: os.DirEntry[str]) -> None: name, ext = os.path.splitext(entry.name) ext = ext.lower() if ext in IMAGE_EXTENSIONS: file_parent_dir = os.path.basename(os.path.dirname(entry.path)) dest_dir = os.path.join(self.image_root_folder, file_parent_dir) os.makedirs(dest_dir, exist_ok=True) dest_file = os.path.join(dest_dir, entry.name) if os.path.exists(dest_file): yield f"data: {entry.name} 已存在\n\n" return try: shutil.move(entry.path, dest_file) except shutil.Error as e: yield f"data: 移动失败: {e}\n\n" def export(self): FolderService(self.paths, ignore_dirs=IGNORE_DIRS, file_callback=self.export_callback).process_folder() # 去结尾字母,已使用过了 def remove_last_letter(self, entry: os.DirEntry[str]): without_modifier_file_name = self.prefix_pattern.sub('.', entry.name) os.rename(entry.path, os.path.join(os.path.dirname(entry.path), without_modifier_file_name))