qBittorrent's add call answers `Ok.` and nothing else — no hash, no name, no duplicate signal — so arr derives the v1 infohash from the magnet or the `.torrent` bytes before the call and looks the torrent up by it. That also drops Transmission's numeric torrent id: the hash is the only identity now. The reaper needs "stopped because a share limit was reached", and qBittorrent's state field cannot tell that apart from a hand-paused torrent. So the ratio and idle counters are checked against the limits arr set, and a torrent stopped by a global limit reads as still seeding rather than being deleted. The WebUI needs a login, so `ARR_QBITTORRENT_USERNAME` and `ARR_QBITTORRENT_PASSWORD` join the env-only secrets; leaving both unset is valid for an instance that whitelists arr's subnet. Verified against qBittorrent 5 (WebAPI 2.15.1) in a container: it rejects `setShareLimits` without `shareLimitAction`, which 4.x ignores, so it is always sent. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
55 lines
1.5 KiB
TOML
55 lines
1.5 KiB
TOML
[package]
|
|
name = "arr-daemon"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
publish = false
|
|
|
|
[[bin]]
|
|
name = "arr"
|
|
path = "src/main.rs"
|
|
|
|
# Forwards straight to `arr-subs`' own features (DESIGN.md §15): which
|
|
# translators a build ships is a compile-time choice, off by default, same as
|
|
# the crate that implements them.
|
|
[features]
|
|
default = []
|
|
translate-openai = ["arr-subs/translate-openai"]
|
|
translate-deepl = ["arr-subs/translate-deepl"]
|
|
translate-google = ["arr-subs/translate-google"]
|
|
translate-command = ["arr-subs/translate-command"]
|
|
|
|
[dependencies]
|
|
arr-api = { workspace = true }
|
|
arr-compat = { workspace = true }
|
|
arr-core = { workspace = true }
|
|
arr-db = { workspace = true }
|
|
arr-dl = { workspace = true }
|
|
arr-indexer = { workspace = true }
|
|
arr-meta = { workspace = true }
|
|
arr-parse = { workspace = true }
|
|
arr-probe = { workspace = true }
|
|
arr-subs = { workspace = true }
|
|
axum = { workspace = true }
|
|
chrono = { workspace = true }
|
|
include_dir = { workspace = true }
|
|
mime_guess = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
sqlx = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tokio = { workspace = true }
|
|
toml = { workspace = true }
|
|
tower-http = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
tempfile = { workspace = true }
|
|
wiremock = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|