Add queue download progress

This commit is contained in:
Codex
2026-08-09 12:55:06 +02:00
parent 499271c3b8
commit 11f43bba05
7 changed files with 271 additions and 14 deletions
+24
View File
@@ -403,6 +403,23 @@ class DownloadQueueCancelTests(unittest.TestCase):
)
self.assertEqual(job["log"], ["Downloading episode 1"])
def test_append_log_parses_kaizoku_progress_lines(self):
queue = object.__new__(APP.DownloadQueue)
queue.lock = threading.RLock()
queue._save_job_locked = lambda _job: None
job = {"id": "job-1", "download_backend": "kaizoku", "log": [], "updated_at": APP.now_iso()}
APP.DownloadQueue._append_log(
queue,
job,
'KAIZOKU_PROGRESS {"episode":1,"episode_index":1,"episode_total":12,"message":"Episode 1: downloaded segment 25/100 (25%).","percent":25,"segment":25,"segment_total":100}',
)
self.assertEqual(job["progress"]["percent"], 25)
self.assertEqual(job["progress"]["episode_total"], 12)
self.assertEqual(job["progress"]["segment_total"], 100)
self.assertEqual(job["log"], ["Episode 1: downloaded segment 25/100 (25%)."])
class QueueApiTests(unittest.TestCase):
def setUp(self):
@@ -4123,6 +4140,13 @@ class TemplateHelperTests(unittest.TestCase):
self.assertIn('const progress = `${job.completed || 0}/${job.total || 0} entries`;', APP.QUEUE_HTML)
self.assertIn('const moved = `${job.moved || 0} moved`;', APP.QUEUE_HTML)
def test_queue_page_renders_download_progress_bar(self):
self.assertIn('class="progress-wrap"', APP.QUEUE_HTML)
self.assertIn('class="progress-fill"', APP.QUEUE_HTML)
self.assertIn("function progressPercent(job)", APP.QUEUE_HTML)
self.assertIn('item.querySelector(".progress-fill").style.width = `${percent}%`;', APP.QUEUE_HTML)
self.assertIn("segment ${progress.segment}/${progress.segment_total}", APP.QUEUE_HTML)
def test_search_page_queues_selected_title_with_result_index(self):
self.assertIn('query: state.selected.title,', APP.INDEX_HTML)
self.assertIn('result_index: state.selected.index,', APP.INDEX_HTML)