- 移除 services/__init__.py 中的所有服务导入导出 - 将各个蓝图中的通配符导入改为具体服务模块导入 - 将 files_rename 函数重命名为 file_rename 并更新相关引用 - 更新前端 API 调用中的函数名映射 - 修复视频蓝图中的多余空行问题 - 移除种子蓝图中的未使用路由代码
41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
import os
|
|
import re
|
|
import shutil
|
|
|
|
from app.services.folder_service 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))
|