33 lines
898 B
Python
33 lines
898 B
Python
"""Download-Fortschrittsdialog für den ersten Whisper-Modell-Download (Windows)."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import queue
|
|
import sys
|
|
import threading
|
|
from typing import Any
|
|
|
|
import tqdm as tqdm_module
|
|
|
|
|
|
class TkProgressTqdm(tqdm_module.tqdm):
|
|
"""tqdm-Ersatz, der Fortschritts-Updates thread-safe in eine Queue schreibt."""
|
|
|
|
_queue: queue.Queue | None = None
|
|
|
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
|
self._desc = kwargs.get("desc", "")
|
|
self._accumulated_n = 0
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def update(self, n: int = 1) -> bool | None:
|
|
self._accumulated_n += n
|
|
result = super().update(n)
|
|
if self._queue is not None:
|
|
self._queue.put({
|
|
"file": self._desc,
|
|
"n": self._accumulated_n,
|
|
"total": self.total or 0,
|
|
})
|
|
return result
|