refactor: Implement common base module and model for anime downloader plugins and refactor existing modules to use them.

This commit is contained in:
2026-01-01 22:58:25 +09:00
parent 5dab969580
commit 88aeb888b3
20 changed files with 555 additions and 409 deletions

76
model_base.py Normal file
View File

@@ -0,0 +1,76 @@
from .lib.ffmpeg_queue_v1 import FfmpegQueueEntity
from framework import db
import os, shutil, re
from datetime import datetime
class AnimeQueueEntity(FfmpegQueueEntity):
def __init__(self, P, module_logic, info):
super(AnimeQueueEntity, self).__init__(P, module_logic, info)
self.P = P
def refresh_status(self):
"""Common status refresh logic"""
if self.ffmpeg_status == -1:
self.ffmpeg_status_kor = "대기"
elif self.ffmpeg_status == 0:
self.ffmpeg_status_kor = "대기" # Waiting in queue
elif self.ffmpeg_status == 1:
self.ffmpeg_status_kor = "분석 중"
elif self.ffmpeg_status == 2:
self.ffmpeg_status_kor = "다운로드 중"
elif self.ffmpeg_status == 3:
self.ffmpeg_status_kor = "변환 중" # post-processing
elif self.ffmpeg_status == 4:
self.ffmpeg_status_kor = "실패"
elif self.ffmpeg_status == 5:
self.ffmpeg_status_kor = "다운로드 중" # downloading
elif self.ffmpeg_status == 6:
self.ffmpeg_status_kor = "취소"
elif self.ffmpeg_status == 7:
self.ffmpeg_status_kor = "완료"
elif self.ffmpeg_status == 8:
self.ffmpeg_status_kor = "완료(이미 있음)"
elif self.ffmpeg_status == 9:
self.ffmpeg_status_kor = "실패(파일 없음)"
def download_completed(self):
"""Common file move logic"""
try:
# LogicCommon to move file
# Specific implementation might vary but usually:
# 1. Check self.savepath
# 2. Check self.filename
# 3. Move self.filepath to dest
if not self.savepath or not self.filename:
return
if not os.path.exists(self.savepath):
os.makedirs(self.savepath)
# Clean filename
# self.filename = Util.change_text_for_use_filename(self.filename)
# (Assuming Util available or do basic replace)
self.filename = re.sub(r'[\\/:*?"<>|]', '', self.filename)
dest_path = os.path.join(self.savepath, self.filename)
if self.filepath and os.path.exists(self.filepath):
if os.path.exists(dest_path):
self.P.logger.info(f"File exists, removing source: {dest_path}")
# policy: overwrite or skip? usually overwrite or skip
# Here assume overwrite or just move
os.remove(dest_path) # overwrite
shutil.move(self.filepath, dest_path)
self.filepath = dest_path # Update filepath to new location
self.ffmpeg_status = 7
self.ffmpeg_status_kor = "완료"
self.end_time = datetime.now()
except Exception as e:
self.P.logger.error(f"Download completed error: {e}")
self.ffmpeg_status = 4
self.ffmpeg_status_kor = "이동 실패"
def info_dict(self, tmp):
"""Default valid implementation"""
return tmp