mirror of
https://github.com/YaoFANGUK/video-subtitle-remover.git
synced 2026-05-06 09:17:30 +08:00
使用PySide6-Fluent-Widgets重构整套UI
添加任务列表组件并优化视频加载逻辑 支持可视化显示字幕区域 整理所有模型, 分别为STTN智能擦除, STTN字幕检测, LAMA, ProPainter, OpenCV 提高处理性能 新增CPU运行模式并优化多语言支持 修复Propainter模式部分视频报错 本次提交新增了CPU运行模式,适用于无GPU加速的场景。同时,优化了多语言支持,新增了日语、韩语、越南语等语言配置文件,并更新了README文档以反映新的运行模式和多语言支持。此外,修复了部分代码逻辑,提升了系统的稳定性和兼容性。
This commit is contained in:
48
backend/tools/concurrent/task.py
Normal file
48
backend/tools/concurrent/task.py
Normal file
@@ -0,0 +1,48 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user