Files
Jason f78e985e1c 使用PySide6-Fluent-Widgets重构整套UI
添加任务列表组件并优化视频加载逻辑
支持可视化显示字幕区域
整理所有模型, 分别为STTN智能擦除, STTN字幕检测, LAMA, ProPainter, OpenCV
提高处理性能
新增CPU运行模式并优化多语言支持
修复Propainter模式部分视频报错

本次提交新增了CPU运行模式,适用于无GPU加速的场景。同时,优化了多语言支持,新增了日语、韩语、越南语等语言配置文件,并更新了README文档以反映新的运行模式和多语言支持。此外,修复了部分代码逻辑,提升了系统的稳定性和兼容性。
2025-05-22 08:41:59 +08:00

48 lines
1.3 KiB
Python

import functools
from typing import Optional
from PySide6.QtCore import QObject, Signal, QRunnable
from .future import Future
class WorkerSignal(QObject):
finished = Signal(object)
class BaseTask(QRunnable):
def __init__(self, _id: int, future: Future):
super().__init__()
self._signal = WorkerSignal() # Signal(object)
self._future = future
self._id = _id
self._exception: Optional[BaseException] = None
self._semaphore = future.semaphore
@property
def finished(self):
return self._signal.finished
@property
def signal(self):
return self._signal
def _taskDone(self, **data):
for d in data.items():
self._future.setExtra(*d)
self._signal.finished.emit(self._future)
self._semaphore.release(1)
class Task(BaseTask):
def __init__(self, _id: int, future: Future, target: functools.partial, args, kwargs):
super().__init__(_id=_id, future=future)
self._target = target
self._kwargs = kwargs
self._args = args
def run(self) -> None:
try:
self._taskDone(result=self._target(*self._args, **self._kwargs))
except Exception as exception:
self._taskDone(exception=exception)