# flexget_qbittorrent_mod is a jumble of private tracker automation

> flexget_qbittorrent_mod is a FlexGet plugin set for qBittorrent users, covering seed removal, reseeding, free-torrent filtering and automatic sign-in across tracker sites, with site implementations under ptsites. The author is explicit that it grew into a general collection and was not designed for simplicity.

**madwind/flexget_qbittorrent_mod** — flexget qbittorrent删种、辅种 自动签到 插件

- Repository: https://github.com/madwind/flexget_qbittorrent_mod
- Stars: 576 · Forks: 114
- Language: Python
- License: MIT
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/madwind-flexget-qbittorrent-mod

## A plugin that started as one thing and became five

The project began as a FlexGet plugin for qBittorrent, and the README is candid that the author was too lazy to start a new project, so it became a general collection. The stated purpose of the collection is to implement the author's own needs with full automation, and it was not designed to move toward being simple or easy to use. That framing is the first thing to weigh, because it tells you what kind of software this is: a working personal setup that was published, not a product with a stable interface. The feature list covers downloading, modifying and deleting torrents, adjusting connection counts dynamically, reading qBittorrent status and the torrent list, automatic reseeding, automatic sign-in and statistics, and message push. The package is MIT licensed and requires Python 3.10 or newer, with FlexGet itself pinned to 3.17 or newer but below 4.

## The author points you at simpler tools first

The most useful section in the README is the list of similar projects, and it comes with a warning: if the following projects are already enough for you, you do not need to read further, and the forum has detailed tutorials for them. The four named alternatives cover the individual jobs. For reseeding there is IYUUAutoReseed by ledccn. For seed removal there is autoremove-torrents by jerrymakesjelly. For filtering free torrents there is flexget-nexusphp by Juszoe. And for automatic sign-in there is qiandao by binux. This is the alternative section doing real work. Each of those tools does one job, whereas this plugin does five, and the README's own judgment is that solving a simple need in a complicated way is not worth it. So the decision framework is straightforward. If you need reseeding, take IYUUAutoReseed. If you need all of it against one qBittorrent instance, this plugin is the option.

## Site implementations live under ptsites

The code layout explains how the sign-in and site-specific work is handled. Site implementations are in `ptsites/trackers/`, and the shared site framework is in `ptsites/schema/` and `ptsites/base/`. The packaging picks that up: the setuptools package discovery includes only `ptsites*`, and the package data includes `data/*.json` for the `ptsites` package, which is where the per-site configuration data lives. The top-level modules are the FlexGet entry points, with `qbittorrent_mod.py` for the qBittorrent operations, `iyuu_auto_reseed.py` for reseeding, `auto_sign_in.py` for sign-in and statistics, `wecom.py` for message push, `html_rss.py` for RSS handling and `show_entry.py` for displaying entries. A `config_example.yml` sits at the root as the configuration starting point. The separation is a sensible structure for a project that has to talk to many sites with different HTML and login flows, and it is also the reason the package is larger than a single-purpose script would be.

## Running the offline tests and the integration tests separately

The development instructions are unusually careful about not hitting the network by accident. Installing the development dependencies and running the offline tests is two commands.

```powershell
python -m pip install -e ".[dev]"
python -m pytest
```

Real site sign-in tests do not run by default. To run them you have to provide local environment variables explicitly and add the integration test parameter, which is a good design given the tests would otherwise authenticate against live tracker sites with your own cookies.

```powershell
$env:PT_TEST_SITE = "tracker-name"
$env:PT_TEST_COOKIE = "your-local-cookie"
python -m pytest --run-integration tests/integration/test_sign_in.py
```

If a site needs a login configuration rather than a single cookie, `PT_TEST_SITE_CONFIG` takes a JSON object, and the README is explicit that credentials should not be written into the test source. The pytest configuration registers an `integration` marker described as performing real network requests and requiring explicit credentials, and the default options are `-ra` with the test paths set to `tests` and the project root on the Python path. Linting is ruff with a line length of 120 and the E, F and I rule sets, and the development extra also brings pytest-cov.

## Building the plugin directory you copy into FlexGet

Packaging for a FlexGet plugin is a directory you drop into the plugin folder rather than a wheel you install, and the build script produces that directory.

```powershell
.\scripts\build_dist.ps1
```

The script is PowerShell, which is a clue about the environment this project is written for, since the same instruction set in the README uses PowerShell for the test commands too. The distribution also has an optional `ocr` extra that pulls in `baidu-aip`, and the runtime dependencies are a working set of libraries: FlexGet, chardet for encoding detection, loguru, Pillow, python-dateutil, requests and SQLAlchemy 2. The presence of SQLAlchemy is worth noting, because it means the plugin keeps state in a database rather than in memory or in flat files, which is what makes automatic sign-in and reseeding bookkeeping survive a restart. The package version in the manifest is `0.8.13.dev0`, a development version, and the last tagged release listed is v0.8.12 from 2022, with the last push to the repository on 2026-09-24. That gap between the tagged releases and the current work is the main maintenance signal.

## What the documentation expects you to know first

The project lists what a user is expected to understand before asking a question, and the list is a fair description of the learning curve. You need basic YAML syntax knowledge, since the configuration is YAML and the plugin is driven from FlexGet's own configuration. You need to understand the basics of using FlexGet subscriptions. You need to be clear about which features you actually want, which is the author's way of saying that this collection does more than most people need. And you are expected to have read the wiki in full. The wiki is where the operational detail lives, with separate pages for the qBittorrent operations, reading state and the torrent list from qBittorrent, the IYUU-style automatic reseeding, automatic sign-in and statistics, and the WeCom message push. Support channels are a Telegram group and a QQ group, with a passphrase given in the README.

## Conclusion

Adopt flexget_qbittorrent_mod if you run a private tracker setup where a single FlexGet instance has to handle reseeding, seed removal and site sign-in across several trackers, and you are willing to configure it in YAML. Skip it if any one of the listed jobs can be done by a focused single-purpose tool, since the author says plainly that using a complicated approach for a simple need is not worth it. Before you install, read the wiki pages for the jobs you actually need, and check the version state, because the last tagged release is v0.8.12 from 2022 while the manifest is at 0.8.13.dev0.

## FAQ

### What does flexget_qbittorrent_mod do?

It is a set of FlexGet plugins for qBittorrent users covering torrent download, modification and deletion with dynamic connection count adjustment, reading qBittorrent status and the torrent list, automatic reseeding, automatic sign-in and statistics, and message push.

### What are the simpler alternatives to flexget_qbittorrent_mod?

The README names one focused project per job: IYUUAutoReseed for reseeding, autoremove-torrents for seed removal, flexget-nexusphp for filtering free torrents, and qiandao for automatic sign-in. The README advises stopping there if one of them is enough.

### How do I run the tests for flexget_qbittorrent_mod?

Install the development dependencies with `python -m pip install -e ".[dev]"` and run `python -m pytest` for the offline tests. Real site sign-in tests are skipped unless you set `PT_TEST_SITE` and `PT_TEST_COOKIE` and pass `--run-integration`.

### How do I build the flexget_qbittorrent_mod plugin directory?

Run `.\scripts\build_dist.ps1`, which builds a release package that can be copied into the FlexGet plugin directory. The package manifest is at version 0.8.13.dev0 while the last tagged release listed is v0.8.12 from 2022.

## Sources

- [Issues](https://github.com/madwind/flexget_qbittorrent_mod/issues)
- [License: MIT](https://github.com/madwind/flexget_qbittorrent_mod/blob/master/LICENSE)
- [madwind/flexget_qbittorrent_mod on GitHub](https://github.com/madwind/flexget_qbittorrent_mod)
- [README](https://github.com/madwind/flexget_qbittorrent_mod/blob/master/README.md)
- [Releases](https://github.com/madwind/flexget_qbittorrent_mod/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/madwind-flexget-qbittorrent-mod
