mirror of
https://github.com/Yuvi9587/Kemono-Downloader.git
synced 2025-12-29 16:14:44 +00:00
51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
import threading
|
|
import time
|
|
from PyQt5.QtCore import QThread, pyqtSignal
|
|
|
|
from ...core.Hentai2read_client import run_hentai2read_download as h2r_run_download
|
|
|
|
|
|
class Hentai2readDownloadThread(QThread):
|
|
"""
|
|
A dedicated QThread that calls the self-contained Hentai2Read client to
|
|
perform scraping and downloading.
|
|
"""
|
|
progress_signal = pyqtSignal(str)
|
|
file_progress_signal = pyqtSignal(str, object)
|
|
finished_signal = pyqtSignal(int, int, bool)
|
|
overall_progress_signal = pyqtSignal(int, int)
|
|
|
|
def __init__(self, url, output_dir, parent=None):
|
|
super().__init__(parent)
|
|
self.start_url = url
|
|
self.output_dir = output_dir
|
|
self.is_cancelled = False
|
|
self.pause_event = parent.pause_event if hasattr(parent, 'pause_event') else threading.Event()
|
|
|
|
def _check_pause(self):
|
|
"""Helper to handle pausing and cancellation events."""
|
|
if self.is_cancelled: return True
|
|
if self.pause_event and self.pause_event.is_set():
|
|
self.progress_signal.emit(" Download paused...")
|
|
while self.pause_event.is_set():
|
|
if self.is_cancelled: return True
|
|
time.sleep(0.5)
|
|
self.progress_signal.emit(" Download resumed.")
|
|
return self.is_cancelled
|
|
|
|
def run(self):
|
|
"""
|
|
Executes the main download logic by calling the dedicated client function.
|
|
"""
|
|
downloaded, skipped = h2r_run_download(
|
|
start_url=self.start_url,
|
|
output_dir=self.output_dir,
|
|
progress_callback=self.progress_signal.emit,
|
|
overall_progress_callback=self.overall_progress_signal.emit,
|
|
check_pause_func=self._check_pause
|
|
)
|
|
|
|
self.finished_signal.emit(downloaded, skipped, self.is_cancelled)
|
|
|
|
def cancel(self):
|
|
self.is_cancelled = True |