Files
flaskProject/app/services/image_service.py
T
YanLongChangAn 63ef32f01e refactor(services): 重构服务模块导入和文件重命名功能
- 移除 services/__init__.py 中的所有服务导入导出
- 将各个蓝图中的通配符导入改为具体服务模块导入
- 将 files_rename 函数重命名为 file_rename 并更新相关引用
- 更新前端 API 调用中的函数名映射
- 修复视频蓝图中的多余空行问题
- 移除种子蓝图中的未使用路由代码
2026-04-28 21:26:34 +08:00

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))