From d25a3ed822a0b3b4b8c662a01c2c95eba5e927ed Mon Sep 17 00:00:00 2001 From: Alvaro Estrada Date: Sat, 16 May 2026 12:40:19 -0600 Subject: [PATCH 1/3] fix: pin qbittorrent-api>=2026.5.1 for qBittorrent 5.x auth compat qBittorrent 5.x changed the login API response from body "Ok." (HTTP 200) to empty body (HTTP 204) and renamed session cookie from SID to QBT_SID_. The unpinned qbittorrent-api dependency could resolve to versions (e.g. 2025.7.0) that fail on these changes, causing LoginFailed despite correct credentials. Pin to >=2026.5.1 which handles both qBittorrent 4.x and 5.x auth flows. Also improve the LoginFailed error message to hint at version compatibility. --- clients/qbittorrent.py | 6 +++++- requirements.txt | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/clients/qbittorrent.py b/clients/qbittorrent.py index 0068954..cf502b7 100644 --- a/clients/qbittorrent.py +++ b/clients/qbittorrent.py @@ -25,7 +25,11 @@ def __init__(self, config: SpeedrrConfig, config_client: ClientConfig) -> None: self._client.auth_log_in() except qbittorrentapi.LoginFailed: - raise Exception(f" Failed to login to qBittorrent, check your credentials") + raise Exception( + f" Failed to login to qBittorrent. " + f"Check your credentials and ensure qbittorrent-api>=2026.5.1 is installed " + f"for qBittorrent 5.x compatibility" + ) except qbittorrentapi.Forbidden403Error: raise Exception(f" Failed to login to qBittorrent, temporarily banned, try again later") diff --git a/requirements.txt b/requirements.txt index dd57eb1..ef8600d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ dataclass_wizard PyYAML -qbittorrent-api +qbittorrent-api>=2026.5.1 transmission-rpc httpx colorama \ No newline at end of file From 17effe4d9ffd7aa4883ffb50573e10d437af21de Mon Sep 17 00:00:00 2001 From: Alvaro Estrada <34721024+AlvaroEstradaDev@users.noreply.github.com> Date: Sat, 16 May 2026 18:55:32 +0000 Subject: [PATCH 2/3] Pin qbittorrent-api version to 2026.5.1 --- requirements.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements.txt b/requirements.txt index ef8600d..bd830ab 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ dataclass_wizard PyYAML -qbittorrent-api>=2026.5.1 +qbittorrent-api==2026.5.1 transmission-rpc httpx -colorama \ No newline at end of file +colorama From ba31a07b1edddabdeb2a7589aaafcd9e8496d24d Mon Sep 17 00:00:00 2001 From: Alvaro Estrada Date: Sat, 16 May 2026 13:00:59 -0600 Subject: [PATCH 3/3] fix: add raise-from for pylint W0707 in LoginFailed handler --- clients/qbittorrent.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/clients/qbittorrent.py b/clients/qbittorrent.py index cf502b7..5a26577 100644 --- a/clients/qbittorrent.py +++ b/clients/qbittorrent.py @@ -24,12 +24,13 @@ def __init__(self, config: SpeedrrConfig, config_client: ClientConfig) -> None: try: self._client.auth_log_in() - except qbittorrentapi.LoginFailed: + except qbittorrentapi.LoginFailed as exc: raise Exception( - f" Failed to login to qBittorrent. " - f"Check your credentials and ensure qbittorrent-api>=2026.5.1 is installed " - f"for qBittorrent 5.x compatibility" - ) + f" Failed to login to " + f"qBittorrent. Check your credentials and ensure " + f"qbittorrent-api>=2026.5.1 is installed for " + f"qBittorrent 5.x compatibility" + ) from exc except qbittorrentapi.Forbidden403Error: raise Exception(f" Failed to login to qBittorrent, temporarily banned, try again later")