This tool will help manage tedious tasks in qBittorrent and automate them. Tag, categorize, remove Orphaned data, remove unregistered torrents and much much more.
Find a file
dependabot[bot] 7fd34aade4
Bump ruff from 0.12.9 to 0.12.10 (#919)
Bumps [ruff](https://github.com/astral-sh/ruff) from 0.12.9 to 0.12.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/releases">ruff's
releases</a>.</em></p>
<blockquote>
<h2>0.12.10</h2>
<h2>Release Notes</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-simplify</code>] Implement fix for
<code>maxsplit</code> without separator (<code>SIM905</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19851">#19851</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Add fixes for <code>PTH102</code>
and <code>PTH103</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19514">#19514</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>isort</code>] Handle multiple continuation lines after module
docstring (<code>I002</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19818">#19818</a>)</li>
<li>[<code>pyupgrade</code>] Avoid reporting <code>__future__</code>
features as unnecessary when they are used (<code>UP010</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19769">#19769</a>)</li>
<li>[<code>pyupgrade</code>] Handle nested <code>Optional</code>s
(<code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19770">#19770</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>pycodestyle</code>] Make <code>E731</code> fix unsafe instead
of display-only for class assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19700">#19700</a>)</li>
<li>[<code>pyflakes</code>] Add secondary annotation showing previous
definition (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19900">#19900</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix description of global config file discovery strategy (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19188">#19188</a>)</li>
<li>Update outdated links to <a
href="https://typing.python.org/en/latest/source/stubs.html">https://typing.python.org/en/latest/source/stubs.html</a>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/19992">#19992</a>)</li>
<li>[<code>flake8-annotations</code>] Remove unused import in example
(<code>ANN401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20000">#20000</a>)</li>
</ul>
<h2>Contributors</h2>
<ul>
<li><a
href="https://github.com/AlexWaygood"><code>@​AlexWaygood</code></a></li>
<li><a href="https://github.com/Avasam"><code>@​Avasam</code></a></li>
<li><a
href="https://github.com/BurntSushi"><code>@​BurntSushi</code></a></li>
<li><a
href="https://github.com/Cjkjvfnby"><code>@​Cjkjvfnby</code></a></li>
<li><a href="https://github.com/Gankra"><code>@​Gankra</code></a></li>
<li><a
href="https://github.com/IDrokin117"><code>@​IDrokin117</code></a></li>
<li><a
href="https://github.com/MatthewMckee4"><code>@​MatthewMckee4</code></a></li>
<li><a
href="https://github.com/MichaReiser"><code>@​MichaReiser</code></a></li>
<li><a
href="https://github.com/PrettyWood"><code>@​PrettyWood</code></a></li>
<li><a href="https://github.com/RazerM"><code>@​RazerM</code></a></li>
<li><a href="https://github.com/carljm"><code>@​carljm</code></a></li>
<li><a
href="https://github.com/chirizxc"><code>@​chirizxc</code></a></li>
<li><a
href="https://github.com/danparizher"><code>@​danparizher</code></a></li>
<li><a
href="https://github.com/dcreager"><code>@​dcreager</code></a></li>
<li><a
href="https://github.com/dhruvmanila"><code>@​dhruvmanila</code></a></li>
<li><a
href="https://github.com/ericmarkmartin"><code>@​ericmarkmartin</code></a></li>
<li><a
href="https://github.com/github-actions"><code>@​github-actions</code></a></li>
<li><a href="https://github.com/gkowzan"><code>@​gkowzan</code></a></li>
<li><a
href="https://github.com/leandrobbraga"><code>@​leandrobbraga</code></a></li>
<li><a href="https://github.com/mtshiba"><code>@​mtshiba</code></a></li>
<li><a href="https://github.com/ntBre"><code>@​ntBre</code></a></li>
<li><a
href="https://github.com/renovate"><code>@​renovate</code></a></li>
<li><a href="https://github.com/sharkdp"><code>@​sharkdp</code></a></li>
<li><a
href="https://github.com/theammir"><code>@​theammir</code></a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's
changelog</a>.</em></p>
<blockquote>
<h2>0.12.10</h2>
<h3>Preview features</h3>
<ul>
<li>[<code>flake8-simplify</code>] Implement fix for
<code>maxsplit</code> without separator (<code>SIM905</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19851">#19851</a>)</li>
<li>[<code>flake8-use-pathlib</code>] Add fixes for <code>PTH102</code>
and <code>PTH103</code> (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19514">#19514</a>)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>[<code>isort</code>] Handle multiple continuation lines after module
docstring (<code>I002</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19818">#19818</a>)</li>
<li>[<code>pyupgrade</code>] Avoid reporting <code>__future__</code>
features as unnecessary when they are used (<code>UP010</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19769">#19769</a>)</li>
<li>[<code>pyupgrade</code>] Handle nested <code>Optional</code>s
(<code>UP045</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19770">#19770</a>)</li>
</ul>
<h3>Rule changes</h3>
<ul>
<li>[<code>pycodestyle</code>] Make <code>E731</code> fix unsafe instead
of display-only for class assignments (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19700">#19700</a>)</li>
<li>[<code>pyflakes</code>] Add secondary annotation showing previous
definition (<code>F811</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19900">#19900</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li>Fix description of global config file discovery strategy (<a
href="https://redirect.github.com/astral-sh/ruff/pull/19188">#19188</a>)</li>
<li>Update outdated links to <a
href="https://typing.python.org/en/latest/source/stubs.html">https://typing.python.org/en/latest/source/stubs.html</a>
(<a
href="https://redirect.github.com/astral-sh/ruff/pull/19992">#19992</a>)</li>
<li>[<code>flake8-annotations</code>] Remove unused import in example
(<code>ANN401</code>) (<a
href="https://redirect.github.com/astral-sh/ruff/pull/20000">#20000</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c68ff8d90b"><code>c68ff8d</code></a>
Bump 0.12.10 (<a
href="https://redirect.github.com/astral-sh/ruff/issues/20025">#20025</a>)</li>
<li><a
href="5931a5207d"><code>5931a52</code></a>
[ty] Stop running every mdtest twice</li>
<li><a
href="692be72f5a"><code>692be72</code></a>
Move diff rendering to <code>ruff_db</code> (<a
href="https://redirect.github.com/astral-sh/ruff/issues/20006">#20006</a>)</li>
<li><a
href="14fe1228e7"><code>14fe122</code></a>
[ty] Perform assignability etc checks using new <code>Constraints</code>
trait (<a
href="https://redirect.github.com/astral-sh/ruff/issues/19838">#19838</a>)</li>
<li><a
href="045cba382a"><code>045cba3</code></a>
[ty] Use <code>dedent</code> in cursor tests (<a
href="https://redirect.github.com/astral-sh/ruff/issues/20019">#20019</a>)</li>
<li><a
href="a5cbca156c"><code>a5cbca1</code></a>
Fix rust feature activation (<a
href="https://redirect.github.com/astral-sh/ruff/issues/20012">#20012</a>)</li>
<li><a
href="d43a3d34dd"><code>d43a3d3</code></a>
[ty] Avoid unnecessary argument type expansion (<a
href="https://redirect.github.com/astral-sh/ruff/issues/19999">#19999</a>)</li>
<li><a
href="99111961c0"><code>9911196</code></a>
[ty] Add link for namespaces being partial (<a
href="https://redirect.github.com/astral-sh/ruff/issues/20015">#20015</a>)</li>
<li><a
href="859475f017"><code>859475f</code></a>
[ty] add docstrings to completions based on type (<a
href="https://redirect.github.com/astral-sh/ruff/issues/20008">#20008</a>)</li>
<li><a
href="7b75aee21d"><code>7b75aee</code></a>
[<code>pyupgrade</code>] Avoid reporting <code>__future__</code>
features as unnecessary when they ...</li>
<li>Additional commits viewable in <a
href="https://github.com/astral-sh/ruff/compare/0.12.9...0.12.10">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ruff&package-manager=pip&previous-version=0.12.9&new-version=0.12.10)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-08-22 11:33:19 +00:00
.github ci(version): make VERSION bump PR-aware and CI-safe 2025-08-21 15:49:00 -04:00
config 4.5.4 (#910) 2025-08-16 22:28:26 -04:00
desktop/tauri ci(docker): add OCI labels and build metadata to Docker images 2025-08-19 18:47:58 -04:00
docs chore(docs): Sync wiki to docs [skip-cd] 2025-08-21 19:59:00 +00:00
icons 4.5.4 (#910) 2025-08-16 22:28:26 -04:00
modules Bug fix on interval scheduler not showing the correct next run time 2025-08-17 17:14:19 -04:00
scripts ci(version): make VERSION bump PR-aware and CI-safe 2025-08-21 15:49:00 -04:00
web-ui Fix the Web UI for duration values to remove the spaces (#917) 2025-08-19 20:06:43 -04:00
.dockerignore 4.3.0 (#814) 2025-05-10 10:36:02 -04:00
.gitignore 4.5.4 (#910) 2025-08-16 22:28:26 -04:00
.pre-commit-config.yaml ci(version): make VERSION bump PR-aware and CI-safe 2025-08-21 15:49:00 -04:00
activate.sh 4.3.0 (#814) 2025-05-10 10:36:02 -04:00
CHANGELOG 4.5.4 (#910) 2025-08-16 22:28:26 -04:00
deactivate.sh more pre-commits and makefile 2022-11-01 11:24:13 -04:00
Dockerfile ci(docker): add OCI labels and build metadata to Docker images 2025-08-19 18:47:58 -04:00
LICENSE tox and pre-commit formatting 2022-10-29 11:19:09 -04:00
Makefile 4.3.0 (#814) 2025-05-10 10:36:02 -04:00
pyproject.toml Bump ruff from 0.12.9 to 0.12.10 (#919) 2025-08-22 11:33:19 +00:00
qbit_manage.py Fixes [Bug]: container hangs when running using docker run command with QBT_RUN flag 2025-08-17 16:30:20 -04:00
README.md Fix README doc 2025-08-17 17:27:34 -04:00
ruff.toml v4.5.3 (#900) 2025-08-08 20:57:06 -04:00
setup.py 4.3.0 (#814) 2025-05-10 10:36:02 -04:00
SUPPORTED_VERSIONS.json 4.5.2 (#889) 2025-08-03 15:09:08 -04:00
uv.lock 4.5.4 (#910) 2025-08-16 22:28:26 -04:00
VERSION ci(version): make VERSION bump PR-aware and CI-safe 2025-08-21 15:49:00 -04:00

qBit Manage

GitHub release (latest by date) GitHub commits since latest release (by SemVer) Docker Image Version (latest semver) Github Workflow Status pre-commit.ci status Ghcr packages Docker Pulls Sponsor or Donate Ruff

This is a program used to manage your qBittorrent instance such as:

  • Tag torrents based on tracker URLs
  • Apply category based on save_path to uncategorized torrents in category's save_path
  • Change categories based on current category (cat_change)
  • Remove unregistered torrents (delete data & torrent if it is not being cross-seeded, otherwise it will just remove the torrent)
  • Recheck paused torrents sorted by lowest size and resume if completed
  • Remove orphaned files from your root directory that are not referenced by qBittorrent
  • Tag any torrents that have no hard links outside the root folder (for multi-file torrents the largest file is used)
  • Apply share limits based on groups filtered by tags/categories and allows optional cleanup to delete these torrents and contents based on maximum ratio and/or time seeded. Additionally allows for a minimum seed time to ensure tracker rules are respected and minimum number of seeders to keep torrents alive.
  • RecycleBin function to move files into a RecycleBin folder instead of deleting the data directly when deleting a torrent
  • Built-in scheduler to run the script every x minutes. (Can use --run command to run without the scheduler)
  • Webhook notifications with Notifiarr and Apprise API integration

Supported Qbittorrent Versions

We rely on qbittorrent-api to interact with Qbittorrent.

Generally expect new releases of Qbittorrent to not immediately be supported. Support CANNOT be added until qbittorrent-api adds support for the version. Any material changed and impact must then be assessed prior to Qbit Manage supporting it.

Master

master - qBittorrent version

master - qbittorrent-api version

Develop

develop - qBittorrent version

develop - qbittorrent-api version

Getting Started

Check out the wiki for installation help

  1. Install qbit_manage either by installing Python 3.9.0+ on the localhost and following the Local Installation Guide or by installing Docker and following the Docker Installation Guide or the unRAID Installation Guide.
  2. Once installed, you have to set up your Configuration by create a Configuration File filled with all your values to connect to your qBittorrent instance.
  3. Please refer to the list of Commands that can be used with this tool.

Usage

To run the script in an interactive terminal with a list of possible commands run:

python qbit_manage.py -h

Support

  • If you have any questions or require support please join the Notifiarr Discord and post your question under the qbit-manage channel.
  • If you're getting an Error or have an Enhancement post in the Issues.
  • If you have a configuration question post in the Discussions.
  • Pull Request are welcome but please submit them to the develop branch.