Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,16 @@ env:
jobs:
build_and_test:
runs-on: ubuntu-latest
strategy:
matrix:
version:
- qbt: 5.1.2
libtorrent: 2.0.11
- qbt: 5.0.5
libtorrent: 2.0.11
# Broken because of field renaming in API since v5.0
#- qbt: 4.6.7
# libtorrent: 2.0.10
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
Expand All @@ -33,18 +43,18 @@ jobs:
uses: actions/cache/restore@v4
with:
path: qbittorrent-nox
key: ${{ runner.os }}-qbittorrent-nox-github
key: ${{ runner.os }}-qbittorrent-nox-github-${{ matrix.version.qbt }}-${{ matrix.version.libtorrent }}
- if: ${{ steps.qbittorrent-nox.outputs.cache-hit != 'true' }}
name: Download qbittorrent-nox
run: wget -O qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/download/release-5.0.4_v2.0.11/x86_64-qbittorrent-nox
name: Download qbittorrent-nox ${{ matrix.version.qbt }}
run: wget -O qbittorrent-nox https://github.com/userdocs/qbittorrent-nox-static/releases/download/release-${{ matrix.version.qbt }}_v${{ matrix.version.libtorrent }}/x86_64-qbittorrent-nox
- run: chmod +x qbittorrent-nox
- run: sudo ln -s $(pwd)/qbittorrent-nox /usr/local/bin/qbittorrent-nox
- if: ${{ steps.qbittorrent-nox.outputs.cache-hit != 'true' }}
name: Save qbittorrent-nox
uses: actions/cache/save@v4
with:
path: qbittorrent-nox
key: ${{ steps.qbittorrent-nox.outputs.cache-primary-key }}
key: ${{ runner.os }}-qbittorrent-nox-github-${{ matrix.version.qbt }}-${{ matrix.version.libtorrent }}
- run: mkdir -p /tmp/qbittorrent-nox
- run: ./scripts/qbittorrent.sh start /tmp/qbittorrent-nox 8080
- run: ./scripts/pre-commit.sh
Expand Down
20 changes: 12 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,24 +26,28 @@ for torrent in client.list().await? {
```
## Supported backends

- [x] QBittorrent
- [x] QBittorrent (v5.0.x, v5.1.x)
- [ ] Transmission

### QBittorrent notes
### qBittorrent notes

Only QBittorrent release v5.0.4 (18 February 2025) is tested in the CI at the moment.
Only the following qBittorrent releases are supported and tested in CI:

The QBittorrent API exists, but is fragile... As a result, only the latest versions of QBittorrent are supported for the moment.
- v5.1.2 (2 July 2025)
- v5.0.5 (13 Aprli 2025)

- sometimes returns JSON, sometimes plaintext
- may return HTTP 200 "Fails", or 400 "Bad Request"
qBittorrent v4.6.x is known not to work properly due to the ever changing API. Checking support in newer releases only requires changing the [CI configuration](.github/workflows/ci.yml) (pull requests welcome). We will not add support for older qBittorrent releases (Debian 13 Trixies packages qBittorrent v5.1.x), but contributions for this are welcome. Bittorrent v2 is only supported since v4.4.0 (6 January 2022) so it's unlikely we'll ever support an older release.

The qBittorrent API is surprising (to say the least):

- some responses are JSON, some are plaintext
- an error may be HTTP 200 with plaintext "Fails", or HTTP 400 "Bad Request"
- client requests [may not be chunked](https://github.com/qbittorrent/qBittorrent/issues/17353), despite being the default when uploading files in many HTTP clients
- does not return the same information in list/get endpoints (issue [#18188](https://github.com/qbittorrent/qBittorrent/issues/18188))
- behaves unexpectedly with v2/hybrid hashes (issue [#18185](https://github.com/qbittorrent/qBittorrent/issues/18185))
- [sometimes changes methods](https://github.com/qbittorrent/qBittorrent/issues/18097#issuecomment-1336194151) on endpoints without bumping the API version to a new major (semantic versioning)
- may change form field names in API [without updating the docs](https://github.com/qbittorrent/qBittorrent/pull/20532) ([upstream docs PR](https://github.com/qbittorrent/wiki/pull/29))

Bittorrent v2 is only supported since v4.4.0 release (January 6th 2022).

## Supported features

- [x] List torrents
Expand Down
20 changes: 12 additions & 8 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,28 @@
//! ```
//! # Supported backends
//!
//! - [x] QBittorrent
//! - [x] QBittorrent (v5.0.x, v5.1.x)
//! - [ ] Transmission
//!
//! ## QBittorrent notes
//! ## qBittorrent notes
//!
//! Only QBittorrent release v5.0.4 (18 February 2025) is tested in the CI at the moment.
//! Only the following qBittorrent releases are supported and tested in CI:
//!
//! The QBittorrent API exists, but is fragile... As a result, only the latest versions of QBittorrent are supported for the moment.
//! - v5.1.2 (2 July 2025)
//! - v5.0.5 (13 Aprli 2025)
//!
//! - sometimes returns JSON, sometimes plaintext
//! - may return HTTP 200 "Fails", or 400 "Bad Request"
//! qBittorrent v4.6.x is known not to work properly due to the ever changing API. Checking support in newer releases only requires changing the [CI configuration](.github/workflows/ci.yml) (pull requests welcome). We will not add support for older qBittorrent releases (Debian 13 Trixies packages qBittorrent v5.1.x), but contributions for this are welcome. Bittorrent v2 is only supported since v4.4.0 (6 January 2022) so it's unlikely we'll ever support an older release.
//!
//! The qBittorrent API is surprising (to say the least):
//!
//! - some responses are JSON, some are plaintext
//! - an error may be HTTP 200 with plaintext "Fails", or HTTP 400 "Bad Request"
//! - client requests [may not be chunked](https://github.com/qbittorrent/qBittorrent/issues/17353), despite being the default when uploading files in many HTTP clients
//! - does not return the same information in list/get endpoints (issue [#18188](https://github.com/qbittorrent/qBittorrent/issues/18188))
//! - behaves unexpectedly with v2/hybrid hashes (issue [#18185](https://github.com/qbittorrent/qBittorrent/issues/18185))
//! - [sometimes changes methods](https://github.com/qbittorrent/qBittorrent/issues/18097#issuecomment-1336194151) on endpoints without bumping the API version to a new major (semantic versioning)
//! - may change form field names in API [without updating the docs](https://github.com/qbittorrent/qBittorrent/pull/20532) ([upstream docs PR](https://github.com/qbittorrent/wiki/pull/29))
//!
//! Bittorrent v2 is only supported since v4.4.0 release (January 6th 2022).
//!
//! # Supported features
//!
//! - [x] List torrents
Expand Down