from __future__ import annotations from abc import ABC, abstractmethod from auto_media_publisher.utils.logger import get_logger import tempfile import os import glob class MediaGenerator(ABC): def __init__(self): self.logger = get_logger(self.__class__.__name__,"admin") @abstractmethod def generate(self): """所有子类都必须实现的主方法""" pass @classmethod def create_by_name(cls, name: str, *args, **kwargs): for subclass in cls.__subclasses__(): if subclass.__name__.lower() == name.lower(): return subclass(*args, **kwargs) raise ValueError(f"未找到名为 '{name}' 的子类") def cleanup_old_temp_files(self): temp_dir = tempfile.gettempdir() for temp_file in glob.glob(os.path.join(temp_dir, "*.ts")): try: os.unlink(temp_file) self.logger.info(f"Deleted old temp file: {temp_file}") except (PermissionError, FileNotFoundError): self.logger.error(f"Could not delete old temp file: {temp_file}")