Metadata-Version: 2.4
Name: qBitrr2
Version: 5.9.2
Summary: Intelligent automation for qBittorrent and *Arr apps (Radarr/Sonarr/Lidarr) - health monitoring, instant imports, quality upgrades, request integration
Home-page: https://github.com/Feramance/qBitrr
Author: Feramance
Author-email: fera@fera.wtf
License: MIT
Project-URL: Homepage, https://github.com/Feramance/qBitrr
Project-URL: Documentation, https://feramance.github.io/qBitrr/
Project-URL: Issue Tracker, https://github.com/Feramance/qBitrr/issues
Project-URL: Source Code, https://github.com/Feramance/qBitrr
Project-URL: Changelog, https://github.com/Feramance/qBitrr/blob/master/CHANGELOG.md
Project-URL: Docker Hub, https://hub.docker.com/r/feramance/qbitrr
Project-URL: PyPI, https://pypi.org/project/qBitrr2/
Project-URL: Systemd Guide, https://feramance.github.io/qBitrr/getting-started/installation/systemd/
Keywords: qbittorrent,radarr,sonarr,lidarr,arr,automation,torrent,media,plex,jellyfin,overseerr,ombi
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: End Users/Desktop
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Communications
Classifier: Topic :: Internet
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: Terminals
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: <4,>=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cachetools>=5.0
Requires-Dist: colorama>=0.4
Requires-Dist: coloredlogs>=15.0
Requires-Dist: flask>=3.0
Requires-Dist: environ-config>=23.1
Requires-Dist: ffmpeg-python>=0.2
Requires-Dist: jaraco.docker>=2.0
Requires-Dist: packaging>=23.0
Requires-Dist: pathos>=0.3
Requires-Dist: peewee>=3.17
Requires-Dist: ping3>=4.0
Requires-Dist: pyarr>=5.2
Requires-Dist: qbittorrent-api>=2024.2
Requires-Dist: requests>=2.31
Requires-Dist: tomlkit>=0.12
Requires-Dist: waitress>=3.0
Requires-Dist: croniter>=2.0
Requires-Dist: certifi>=2024.2
Provides-Extra: dev
Requires-Dist: black==26.1.0; extra == "dev"
Requires-Dist: bump2version==1.0.1; extra == "dev"
Requires-Dist: isort==7.0.0; extra == "dev"
Requires-Dist: pip-tools==7.5.3; extra == "dev"
Requires-Dist: pre-commit==4.5.1; extra == "dev"
Requires-Dist: pyinstaller==6.19.0; extra == "dev"
Requires-Dist: pyupgrade==3.21.2; extra == "dev"
Requires-Dist: twine==6.2.0; extra == "dev"
Requires-Dist: ujson==5.11.0; extra == "dev"
Requires-Dist: upgrade-pip==0.1.4; extra == "dev"
Provides-Extra: fast
Requires-Dist: ujson==5.11.0; extra == "fast"
Provides-Extra: docs
Requires-Dist: mkdocs>=1.5.3; extra == "docs"
Requires-Dist: mkdocs-material>=9.5.0; extra == "docs"
Requires-Dist: mkdocs-material-extensions>=1.3.0; extra == "docs"
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "docs"
Requires-Dist: mkdocs-minify-plugin>=0.7.0; extra == "docs"
Requires-Dist: mkdocs-redirects>=1.2.0; extra == "docs"
Requires-Dist: mkdocs-include-markdown-plugin>=6.0.0; extra == "docs"
Requires-Dist: pymdown-extensions>=10.0.0; extra == "docs"
Requires-Dist: markdown-include>=0.8.0; extra == "docs"
Provides-Extra: all
Requires-Dist: black==26.1.0; extra == "all"
Requires-Dist: bump2version==1.0.1; extra == "all"
Requires-Dist: isort==7.0.0; extra == "all"
Requires-Dist: pip-tools==7.5.3; extra == "all"
Requires-Dist: pre-commit==4.5.1; extra == "all"
Requires-Dist: pyinstaller==6.19.0; extra == "all"
Requires-Dist: pyupgrade==3.21.2; extra == "all"
Requires-Dist: twine==6.2.0; extra == "all"
Requires-Dist: ujson==5.11.0; extra == "all"
Requires-Dist: upgrade-pip==0.1.4; extra == "all"
Requires-Dist: ujson==5.11.0; extra == "all"
Requires-Dist: mkdocs>=1.5.3; extra == "all"
Requires-Dist: mkdocs-material>=9.5.0; extra == "all"
Requires-Dist: mkdocs-material-extensions>=1.3.0; extra == "all"
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.0; extra == "all"
Requires-Dist: mkdocs-minify-plugin>=0.7.0; extra == "all"
Requires-Dist: mkdocs-redirects>=1.2.0; extra == "all"
Requires-Dist: mkdocs-include-markdown-plugin>=6.0.0; extra == "all"
Requires-Dist: pymdown-extensions>=10.0.0; extra == "all"
Requires-Dist: markdown-include>=0.8.0; extra == "all"
Dynamic: license-file

# <img src="assets/logov2-clean.png" alt="qBitrr Logo" width="40" style="vertical-align: middle;"/> qBitrr

[![PyPI](https://img.shields.io/pypi/v/qBitrr2?label=PyPI)](https://pypi.org/project/qBitrr2/)
[![Downloads](https://img.shields.io/pypi/dm/qBitrr2)](https://pypi.org/project/qBitrr2/)
[![Docker Pulls](https://img.shields.io/docker/pulls/feramance/qbitrr.svg)](https://hub.docker.com/r/feramance/qbitrr)
[![CodeQL](https://github.com/Feramance/qBitrr/actions/workflows/codeql.yml/badge.svg?branch=master)](https://github.com/Feramance/qBitrr/actions/workflows/codeql.yml)
[![Nightly Build](https://github.com/Feramance/qBitrr/actions/workflows/nightly.yml/badge.svg?branch=master)](https://github.com/Feramance/qBitrr/actions/workflows/nightly.yml)
[![pre-commit.ci](https://results.pre-commit.ci/badge/github/Feramance/qBitrr/master.svg)](https://results.pre-commit.ci/latest/github/Feramance/qBitrr/master)
[![License: MIT](https://img.shields.io/pypi/l/qbitrr)](LICENSE)

> 🧩 The intelligent glue between qBittorrent and the *Arr ecosystem (Radarr, Sonarr, Lidarr). Monitors torrent health, triggers instant imports, automates quality upgrades, manages disk space, integrates with request systems (Overseerr/Ombi), and provides a modern React dashboard for complete visibility and control.

## 📚 Documentation

**Full documentation is available at: https://feramance.github.io/qBitrr/**

- [Getting Started](https://feramance.github.io/qBitrr/getting-started/) – Installation guides for pip, Docker, and native setups
- [Configuration](https://feramance.github.io/qBitrr/configuration/) – qBittorrent, Arr instances, quality profiles, and more
- [Features](https://feramance.github.io/qBitrr/features/) – Health monitoring, automated search, quality management, disk space, auto-updates
- [WebUI](https://feramance.github.io/qBitrr/webui/) – Built-in React dashboard with live monitoring and config editor
- [Troubleshooting](https://feramance.github.io/qBitrr/troubleshooting/) – Common issues and debug logging
- [API Reference](https://feramance.github.io/qBitrr/reference/api/) – REST API documentation

## ⚡ Quick Start

### 🐍 Install with pip
```bash
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install qBitrr2

# First run creates ~/config/config.toml
qbitrr
```

### 🐳 Run with Docker
```bash
docker run -d \
  --name qbitrr \
  --tty \
  -e TZ=Europe/London \
  -p 6969:6969 \
  -v /path/to/appdata/qbitrr:/config \
  -v /path/to/completed/downloads:/completed_downloads:rw \
  --restart unless-stopped \
  feramance/qbitrr:latest
```

**Docker Compose:**
```yaml
services:
  qbitrr:
    image: feramance/qbitrr:latest
    container_name: qbitrr
    restart: unless-stopped
    tty: true
    environment:
      TZ: Europe/London
    ports:
      - "6969:6969"
    volumes:
      - /path/to/appdata/qbitrr:/config
      - /path/to/completed/downloads:/completed_downloads:rw
```

Access the WebUI at `http://<host>:6969/ui` after startup.

## ✨ Key Features

- **🚀 Multi-qBittorrent Support (v5.7.x+)** – Manage torrents across multiple qBittorrent instances for load balancing, redundancy, and VPN isolation
- **🚑 Torrent Health Monitoring** – Detect stalled/failed downloads, auto-blacklist, trigger re-searches
- **🔍 Automated Search** – Missing media, quality upgrades, custom format scoring
- **🎯 Request Integration** – Pull requests from Overseerr/Ombi, prioritize user-requested media
- **📊 Quality Management** – RSS sync, queue refresh, profile switching, custom format enforcement
- **🌱 Seeding Control** – Per-tracker settings, ratio/time limits, tracker injection
- **🛡️ Hit and Run Protection** – Automatic HnR obligation tracking with configurable thresholds, partial download handling, and dead tracker bypass
- **💾 Disk Space Management** – Auto-pause when low on space, configurable thresholds
- **🔄 Auto-Updates** – GitHub release-based updates with scheduled cron support
- **💻 Modern WebUI** – Live process monitoring, log viewer, Arr insights, config editor

## 🛠️ Essential Configuration

1. **Configure qBittorrent** in `~/config/config.toml`:
   ```toml
   [qBit]
   Host = "localhost"
   Port = 8080
   UserName = "admin"
   Password = "adminpass"
   ```

2. **Add Arr instances**:
   ```toml
   [Radarr-Movies]
   URI = "http://localhost:7878"
   APIKey = "your-radarr-api-key"
   Category = "radarr-movies"
   ```

3. **Set completed folder**:
   ```toml
   [Settings]
   CompletedDownloadFolder = "/path/to/completed"
   ```

### 🆕 Multi-qBittorrent (v5.7.x+)

Manage torrents across multiple qBittorrent instances:

```toml
[qBit]  # Default instance (required)
Host = "localhost"
Port = 8080
UserName = "admin"
Password = "password"

[qBit-seedbox]  # Additional instance (optional)
Host = "192.168.1.100"
Port = 8080
UserName = "admin"
Password = "seedboxpass"
```

See [Multi-qBittorrent Guide](MULTI_QBIT_V3_USER_GUIDE.md) for complete documentation.

---

See [Configuration Guide](https://feramance.github.io/qBitrr/configuration/) and [config.example.toml](config.example.toml) for all available options.

## 📖 Resources

- **Documentation:** https://feramance.github.io/qBitrr/
- **PyPI Package:** https://pypi.org/project/qBitrr2/
- **Docker Hub:** https://hub.docker.com/r/feramance/qbitrr
- **Example Config:** [config.example.toml](config.example.toml)
- **API Documentation:** [docs/reference/api.md](docs/reference/api.md)
- **Systemd Setup:** [docs/getting-started/installation/systemd.md](docs/getting-started/installation/systemd.md)

## 🐛 Issues & Support

- **Report Bugs:** [Bug Report Template](.github/ISSUE_TEMPLATE/bug_report.yml)
- **Request Features:** [Feature Request Template](.github/ISSUE_TEMPLATE/feature_request.yml)
- **Discussions:** [GitHub Discussions](https://github.com/Feramance/qBitrr/discussions)
- **Troubleshooting:** [Common Issues](https://feramance.github.io/qBitrr/troubleshooting/)

## 🤝 Contributing

Contributions welcome! See [docs/development/contributing.md](docs/development/contributing.md) for coding guidelines and development setup.

**Development setup:**
```bash
# Python backend
make newenv && make syncenv
make reformat  # Format and lint

# WebUI
cd webui && npm ci
npm run dev    # Dev server at localhost:5173
```

## ❤️ Support

If qBitrr saves you time and headaches:
- ⭐ **Star the repo** – helps others discover qBitrr
- 💰 **Sponsor:** [Patreon](https://patreon.com/qBitrr) | [PayPal](https://www.paypal.me/feramance)

## 📄 License

Released under the [MIT License](LICENSE). Use it, modify it, share it—commercially or personally.

---

<div align="center">

**Made with ❤️ by the qBitrr community**

[Documentation](https://feramance.github.io/qBitrr/) • [PyPI](https://pypi.org/project/qBitrr2/) • [Docker](https://hub.docker.com/r/feramance/qbitrr) • [GitHub](https://github.com/Feramance/qBitrr)

</div>

## Star History

<a href="https://www.star-history.com/#Feramance/qBitrr&type=date&legend=top-left">
 <picture>
   <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Feramance/qBitrr&type=date&theme=dark&legend=top-left" />
   <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Feramance/qBitrr&type=date&legend=top-left" />
   <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Feramance/qBitrr&type=date&legend=top-left" />
 </picture>
</a>
