fix: show only live torrent transfers

This commit is contained in:
Developer
2026-07-14 21:46:20 +00:00
parent 17976eab80
commit 3871f24724
2 changed files with 15 additions and 16 deletions
@@ -462,9 +462,13 @@ def _qbit_torrent_direction(torrent: dict[str, Any]) -> str | None:
return None
def _qbit_torrent_is_active(torrent: dict[str, Any]) -> bool:
state = str(torrent.get("state") or "").lower()
return bool(_qbit_torrent_direction(torrent)) or state in _QBITTORRENT_OTHER_ACTIVE_STATES
def _qbit_torrent_transfer_direction(torrent: dict[str, Any]) -> str | None:
"""Return a direction only while qBittorrent reports nonzero throughput."""
if _safe_int(torrent.get("dlspeed")) > 0:
return "downloading"
if _safe_int(torrent.get("upspeed")) > 0:
return "uploading"
return None
class QbittorrentWidgetSource:
@@ -529,9 +533,9 @@ class QbittorrentWidgetSource:
if widget_kind == "active":
active = []
for torrent in torrents.values():
if not _qbit_torrent_is_active(torrent):
direction = _qbit_torrent_transfer_direction(torrent)
if not direction:
continue
direction = _qbit_torrent_direction(torrent)
active.append(
{
"name": torrent.get("name"),
+6 -11
View File
@@ -1158,8 +1158,8 @@ async def test_qbittorrent_totals_counts_all_torrents():
@pytest.mark.asyncio
async def test_qbittorrent_active_filters_dl_ul_only():
"""Active kind returns all active download/upload states, including queued work."""
async def test_qbittorrent_active_filters_current_transfers_only():
"""Active kind returns only torrents with current download or upload throughput."""
from media_library_viewer_api.widgets.sources import QbittorrentWidgetSource
adapter = QbittorrentWidgetSource()
@@ -1175,15 +1175,10 @@ async def test_qbittorrent_active_filters_dl_ul_only():
result = await adapter.fetch(service, "active", {})
active = result["torrents"]
assert len(active) == 5
names = [t["name"] for t in active]
assert "Movie.mkv" in names
assert "Show.mkv" in names
assert "Forced download" in names
assert "Stalled upload" in names
assert "Queued" in names
# Paused torrents remain excluded, but queued transfer work is visible.
assert "Paused" not in names
assert len(active) == 2
names = [torrent["name"] for torrent in active]
assert names == ["Movie.mkv", "Show.mkv"]
assert all((torrent["dl_speed"] or 0) > 0 or (torrent["up_speed"] or 0) > 0 for torrent in active)
@pytest.mark.asyncio