mirror of
https://github.com/YaoFANGUK/video-subtitle-remover.git
synced 2026-04-24 17:47:31 +08:00
添加任务列表组件并优化视频加载逻辑 支持可视化显示字幕区域 整理所有模型, 分别为STTN智能擦除, STTN字幕检测, LAMA, ProPainter, OpenCV 提高处理性能 新增CPU运行模式并优化多语言支持 修复Propainter模式部分视频报错 本次提交新增了CPU运行模式,适用于无GPU加速的场景。同时,优化了多语言支持,新增了日语、韩语、越南语等语言配置文件,并更新了README文档以反映新的运行模式和多语言支持。此外,修复了部分代码逻辑,提升了系统的稳定性和兼容性。
48 lines
1.3 KiB
Python
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) |