qBitrr2 5.4.4__tar.gz → 5.5.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {qbitrr2-5.4.4/qBitrr2.egg-info → qbitrr2-5.5.0}/PKG-INFO +88 -13
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/README.md +85 -11
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/config.example.toml +306 -64
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/pyproject.toml +4 -3
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/arss.py +457 -127
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/bundled_data.py +2 -2
- qbitrr2-5.5.0/qBitrr/config_version.py +144 -0
- qbitrr2-5.5.0/qBitrr/db_lock.py +268 -0
- qbitrr2-5.5.0/qBitrr/db_recovery.py +202 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/gen_config.py +285 -3
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/main.py +171 -5
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/search_activity_store.py +6 -2
- qbitrr2-5.5.0/qBitrr/static/assets/ArrView.js +2 -0
- qbitrr2-5.5.0/qBitrr/static/assets/ArrView.js.map +1 -0
- qbitrr2-5.5.0/qBitrr/static/assets/ConfigView.js +5 -0
- qbitrr2-5.5.0/qBitrr/static/assets/ConfigView.js.map +1 -0
- qbitrr2-5.5.0/qBitrr/static/assets/LogsView.js +208 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/LogsView.js.map +1 -1
- qbitrr2-5.5.0/qBitrr/static/assets/ProcessesView.js +2 -0
- qbitrr2-5.5.0/qBitrr/static/assets/ProcessesView.js.map +1 -0
- qbitrr2-5.5.0/qBitrr/static/assets/app.css +1 -0
- qbitrr2-5.5.0/qBitrr/static/assets/app.js +3 -0
- qbitrr2-5.5.0/qBitrr/static/assets/app.js.map +1 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/react-select.esm.js +1 -8
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/react-select.esm.js.map +1 -1
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/table.js +2 -20
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/table.js.map +1 -1
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/vendor.js +1 -25
- qbitrr2-5.5.0/qBitrr/static/assets/vendor.js.map +1 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/sw.js +5 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/tables.py +27 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/webui.py +523 -23
- {qbitrr2-5.4.4 → qbitrr2-5.5.0/qBitrr2.egg-info}/PKG-INFO +88 -13
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/SOURCES.txt +2 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/setup.cfg +3 -2
- qbitrr2-5.4.4/qBitrr/db_lock.py +0 -79
- qbitrr2-5.4.4/qBitrr/static/assets/ArrView.js +0 -2
- qbitrr2-5.4.4/qBitrr/static/assets/ArrView.js.map +0 -1
- qbitrr2-5.4.4/qBitrr/static/assets/ConfigView.js +0 -4
- qbitrr2-5.4.4/qBitrr/static/assets/ConfigView.js.map +0 -1
- qbitrr2-5.4.4/qBitrr/static/assets/LogsView.js +0 -230
- qbitrr2-5.4.4/qBitrr/static/assets/ProcessesView.js +0 -2
- qbitrr2-5.4.4/qBitrr/static/assets/ProcessesView.js.map +0 -1
- qbitrr2-5.4.4/qBitrr/static/assets/app.css +0 -1
- qbitrr2-5.4.4/qBitrr/static/assets/app.js +0 -11
- qbitrr2-5.4.4/qBitrr/static/assets/app.js.map +0 -1
- qbitrr2-5.4.4/qBitrr/static/assets/vendor.js.map +0 -1
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/LICENSE +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/MANIFEST.in +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/__init__.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/auto_update.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/config.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/env_config.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/errors.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/ffprobe.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/home_path.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/logger.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/build.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/check-mark.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/close.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/download.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/gear.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/lidarr.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/live-streaming.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/log.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/plus.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/process.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/refresh-arrow.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/trash.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/up-arrow.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/useInterval.js +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/useInterval.js.map +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/assets/visibility.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/index.html +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/manifest.json +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/static/vite.svg +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/utils.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr/versioning.py +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/dependency_links.txt +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/entry_points.txt +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/requires.txt +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/qBitrr2.egg-info/top_level.txt +0 -0
- {qbitrr2-5.4.4 → qbitrr2-5.5.0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qBitrr2
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.5.0
|
|
4
4
|
Summary: Intelligent automation for qBittorrent and *Arr apps (Radarr/Sonarr/Lidarr) - health monitoring, instant imports, quality upgrades, request integration
|
|
5
5
|
Home-page: https://github.com/Feramance/qBitrr
|
|
6
6
|
Author: Feramance
|
|
@@ -25,6 +25,7 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
25
25
|
Classifier: Operating System :: Microsoft :: Windows
|
|
26
26
|
Classifier: Operating System :: POSIX :: Linux
|
|
27
27
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
28
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
28
29
|
Classifier: Programming Language :: Python :: 3.12
|
|
29
30
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
30
31
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
@@ -35,7 +36,7 @@ Classifier: Topic :: System :: Monitoring
|
|
|
35
36
|
Classifier: Topic :: Terminals
|
|
36
37
|
Classifier: Topic :: Utilities
|
|
37
38
|
Classifier: Typing :: Typed
|
|
38
|
-
Requires-Python: <4,>=3.
|
|
39
|
+
Requires-Python: <4,>=3.11
|
|
39
40
|
Description-Content-Type: text/markdown
|
|
40
41
|
License-File: LICENSE
|
|
41
42
|
Requires-Dist: cachetools
|
|
@@ -135,13 +136,15 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
|
|
|
135
136
|
- **Custom format scoring** – search for releases meeting minimum custom format scores
|
|
136
137
|
- **Overseerr/Ombi integration** – auto-pull and prioritize user requests from request management tools
|
|
137
138
|
- **Smart search modes** – series-level or episode-level search for TV shows based on context
|
|
138
|
-
- **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later
|
|
139
|
+
- **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later with flexible mapping
|
|
139
140
|
|
|
140
141
|
### 📊 Quality & Metadata Management
|
|
141
142
|
- **RSS sync automation** – schedule periodic RSS feed refreshes across all Arr instances
|
|
142
143
|
- **Queue management** – auto-refresh download queues to keep Arr instances in sync
|
|
143
144
|
- **Custom format enforcement** – automatically remove torrents not meeting minimum CF scores
|
|
144
|
-
- **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches
|
|
145
|
+
- **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches with per-profile mapping
|
|
146
|
+
- **Interactive profile configuration** – test Arr connections and select quality profiles from dropdowns in WebUI
|
|
147
|
+
- **Auto-reset profiles** – force reset temp profiles on startup or after configurable timeouts
|
|
145
148
|
- **Year-based search ordering** – prioritize searches by release date (newest first or reverse)
|
|
146
149
|
|
|
147
150
|
### 🌱 Seeding & Tracker Control
|
|
@@ -168,12 +171,16 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
|
|
|
168
171
|
- **Smart restart mechanism** – uses `os.execv()` for true in-place restarts (no supervisor needed)
|
|
169
172
|
- **Cross-platform compatibility** – works in Docker, systemd, native installs, Windows, Linux, macOS
|
|
170
173
|
- **Graceful shutdown** – cleanly closes databases, flushes logs, terminates child processes
|
|
174
|
+
- **Process auto-restart** – automatically restarts crashed Arr manager processes with crash loop protection
|
|
175
|
+
- **Crash loop detection** – prevents infinite restart loops with configurable max restart limits and time windows
|
|
176
|
+
- **Configurable restart behavior** – control restart delays, maximum attempts, and monitoring windows via WebUI
|
|
171
177
|
|
|
172
178
|
### 💻 First-Party Web UI
|
|
173
179
|
- **Live process monitoring** – see all running Arr managers and their current activity
|
|
174
180
|
- **Log viewer** – tail logs in real-time with filtering and search
|
|
175
|
-
- **Arr insights** – view movies, series, albums with filtering by year, quality, status
|
|
176
|
-
- **Config editor** – edit configuration directly from the UI
|
|
181
|
+
- **Arr insights** – view movies, series, albums with filtering by year, quality, status, and quality profiles
|
|
182
|
+
- **Config editor** – edit configuration directly from the UI with validation and helpful tooltips
|
|
183
|
+
- **Test connections** – validate Arr credentials and load quality profiles with one click
|
|
177
184
|
- **Restart controls** – restart individual processes or the entire application
|
|
178
185
|
- **Dark/light theme** – customizable UI appearance
|
|
179
186
|
- **Token authentication** – optional API protection with bearer tokens
|
|
@@ -181,6 +188,8 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
|
|
|
181
188
|
## 📌 State of the Project
|
|
182
189
|
The long-term plan is still to ship a C# rewrite, but the Python edition isn't going anywhere—it gets regular fixes and features, and the Web UI is now production-ready. Ideas and PRs are welcome! Head over to the [issue templates](.github/ISSUE_TEMPLATE) or the [PR checklist](.github/pull_request_template.md) to get started.
|
|
183
190
|
|
|
191
|
+
|
|
192
|
+
|
|
184
193
|
## ⚡ Quickstart
|
|
185
194
|
qBitrr supports Python 3.12+ on Linux, macOS, and Windows. Run it natively or in Docker—whatever fits your stack.
|
|
186
195
|
|
|
@@ -299,6 +308,7 @@ sudo systemctl status qbitrr
|
|
|
299
308
|
|
|
300
309
|
2. **Configure Arr instances** (Radarr/Sonarr/Lidarr):
|
|
301
310
|
- Each instance needs: `URI`, `APIKey`, `Category`
|
|
311
|
+
- **Naming format:** Instance names must follow pattern `(Radarr|Sonarr|Lidarr)-<name>` (e.g., `Radarr-Movies`, `Sonarr-TV4K`)
|
|
302
312
|
- **Important:** Use matching categories in Arr's download client settings
|
|
303
313
|
- **Tagging:** Ensure Arr instances tag their downloads so qBitrr can track them
|
|
304
314
|
|
|
@@ -430,11 +440,25 @@ Unmonitored = false # Include unmonitored items
|
|
|
430
440
|
[Radarr-Movies.EntrySearch]
|
|
431
441
|
UseTempForMissing = true
|
|
432
442
|
KeepTempProfile = false
|
|
433
|
-
|
|
434
|
-
|
|
443
|
+
|
|
444
|
+
# New: Map each main profile to a temp profile
|
|
445
|
+
QualityProfileMappings = { "Ultra-HD" = "Web-DL", "HD-1080p" = "HDTV-720p" }
|
|
446
|
+
|
|
447
|
+
# Auto-reset options
|
|
448
|
+
ForceResetTempProfiles = false # Reset all on startup
|
|
449
|
+
TempProfileResetTimeoutMinutes = 0 # Auto-reset after timeout (0 = disabled)
|
|
450
|
+
ProfileSwitchRetryAttempts = 3 # Retry failed profile switches
|
|
451
|
+
|
|
435
452
|
# Searches missing items with temp profile, switches back after import
|
|
436
453
|
```
|
|
437
454
|
|
|
455
|
+
**Configure via WebUI:**
|
|
456
|
+
1. Edit your Arr instance in the Config tab
|
|
457
|
+
2. Click "Test Connection" to load available quality profiles
|
|
458
|
+
3. Add profile mappings with the interactive UI (no JSON editing needed!)
|
|
459
|
+
4. Select main and temp profiles from dropdowns
|
|
460
|
+
5. Save and restart
|
|
461
|
+
|
|
438
462
|
---
|
|
439
463
|
|
|
440
464
|
### 📊 Quality Management
|
|
@@ -538,6 +562,11 @@ AutoPauseResume = true # Required for FreeSpace to work
|
|
|
538
562
|
**Disable monitoring:**
|
|
539
563
|
```toml
|
|
540
564
|
[Settings]
|
|
565
|
+
FreeSpace = "" # Empty string or 0 disables monitoring
|
|
566
|
+
```
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
541
570
|
### 🔄 Auto-Updates & Restarts
|
|
542
571
|
|
|
543
572
|
qBitrr can automatically update itself by checking GitHub releases for new versions. The update behavior varies by installation type.
|
|
@@ -575,11 +604,11 @@ AutoUpdateCron = "0 3 * * 0" # Cron expression (default: Sunday 3 AM)
|
|
|
575
604
|
```
|
|
576
605
|
|
|
577
606
|
**Cron Expression Examples:**
|
|
578
|
-
```
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
607
|
+
```bash
|
|
608
|
+
0 3 * * 0 # Every Sunday at 3:00 AM
|
|
609
|
+
0 */6 * * * # Every 6 hours
|
|
610
|
+
0 0 * * * # Daily at midnight
|
|
611
|
+
0 2 * * 1-5 # Weekdays at 2:00 AM
|
|
583
612
|
```
|
|
584
613
|
|
|
585
614
|
---
|
|
@@ -777,6 +806,52 @@ curl -X POST http://localhost:6969/api/arr/radarr-movies/restart
|
|
|
777
806
|
|
|
778
807
|
---
|
|
779
808
|
|
|
809
|
+
### 🔁 Process Auto-Restart & Crash Loop Protection
|
|
810
|
+
|
|
811
|
+
Your Arr manager processes (Radarr/Sonarr/Lidarr) automatically restart if they crash, preventing downtime. Built-in protection stops restart loops if a process keeps failing.
|
|
812
|
+
|
|
813
|
+
#### ⚙️ Configuration
|
|
814
|
+
|
|
815
|
+
**Basic Setup:**
|
|
816
|
+
```toml
|
|
817
|
+
[Settings]
|
|
818
|
+
AutoRestartProcesses = true # Enable automatic restart
|
|
819
|
+
MaxProcessRestarts = 5 # Stop trying after 5 crashes
|
|
820
|
+
ProcessRestartWindow = 300 # Within 5 minutes
|
|
821
|
+
ProcessRestartDelay = 5 # Wait 5 seconds before restarting
|
|
822
|
+
```
|
|
823
|
+
|
|
824
|
+
**What this means:**
|
|
825
|
+
- If a process crashes fewer than 5 times in 5 minutes, it auto-restarts
|
|
826
|
+
- If it crashes 5+ times in 5 minutes, qBitrr stops trying and logs an error
|
|
827
|
+
- After the 5-minute window passes, the counter resets and auto-restart resumes
|
|
828
|
+
|
|
829
|
+
**Configure via WebUI:**
|
|
830
|
+
1. Navigate to **Config** tab
|
|
831
|
+
2. Find the **Process Management** section
|
|
832
|
+
3. Adjust restart behavior to your preference
|
|
833
|
+
4. Save and restart qBitrr
|
|
834
|
+
|
|
835
|
+
#### 📊 Monitoring
|
|
836
|
+
|
|
837
|
+
**Via WebUI:**
|
|
838
|
+
- **Processes tab** shows all running managers with restart history
|
|
839
|
+
- Manually restart individual processes if needed
|
|
840
|
+
|
|
841
|
+
**Via Logs:**
|
|
842
|
+
```bash
|
|
843
|
+
# See restart activity
|
|
844
|
+
tail -f ~/logs/Main.log | grep restart # Native
|
|
845
|
+
docker logs -f qbitrr | grep restart # Docker
|
|
846
|
+
sudo journalctl -u qbitrr -f | grep restart # Systemd
|
|
847
|
+
```
|
|
848
|
+
|
|
849
|
+
#### 🆕 First-Time Setup
|
|
850
|
+
|
|
851
|
+
Existing configs automatically upgrade to version 3 on first startup. A timestamped backup is created before any changes. No manual action needed!
|
|
852
|
+
|
|
853
|
+
---
|
|
854
|
+
|
|
780
855
|
## 🖥️ Built-in Web UI
|
|
781
856
|
The React + Vite dashboard provides complete visibility and control over your qBitrr instance.
|
|
782
857
|
|
|
@@ -51,13 +51,15 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
|
|
|
51
51
|
- **Custom format scoring** – search for releases meeting minimum custom format scores
|
|
52
52
|
- **Overseerr/Ombi integration** – auto-pull and prioritize user requests from request management tools
|
|
53
53
|
- **Smart search modes** – series-level or episode-level search for TV shows based on context
|
|
54
|
-
- **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later
|
|
54
|
+
- **Temporary quality profiles** – use lower quality profiles for missing items, upgrade later with flexible mapping
|
|
55
55
|
|
|
56
56
|
### 📊 Quality & Metadata Management
|
|
57
57
|
- **RSS sync automation** – schedule periodic RSS feed refreshes across all Arr instances
|
|
58
58
|
- **Queue management** – auto-refresh download queues to keep Arr instances in sync
|
|
59
59
|
- **Custom format enforcement** – automatically remove torrents not meeting minimum CF scores
|
|
60
|
-
- **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches
|
|
60
|
+
- **Quality profile switching** – dynamically change profiles for missing vs. upgrade searches with per-profile mapping
|
|
61
|
+
- **Interactive profile configuration** – test Arr connections and select quality profiles from dropdowns in WebUI
|
|
62
|
+
- **Auto-reset profiles** – force reset temp profiles on startup or after configurable timeouts
|
|
61
63
|
- **Year-based search ordering** – prioritize searches by release date (newest first or reverse)
|
|
62
64
|
|
|
63
65
|
### 🌱 Seeding & Tracker Control
|
|
@@ -84,12 +86,16 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
|
|
|
84
86
|
- **Smart restart mechanism** – uses `os.execv()` for true in-place restarts (no supervisor needed)
|
|
85
87
|
- **Cross-platform compatibility** – works in Docker, systemd, native installs, Windows, Linux, macOS
|
|
86
88
|
- **Graceful shutdown** – cleanly closes databases, flushes logs, terminates child processes
|
|
89
|
+
- **Process auto-restart** – automatically restarts crashed Arr manager processes with crash loop protection
|
|
90
|
+
- **Crash loop detection** – prevents infinite restart loops with configurable max restart limits and time windows
|
|
91
|
+
- **Configurable restart behavior** – control restart delays, maximum attempts, and monitoring windows via WebUI
|
|
87
92
|
|
|
88
93
|
### 💻 First-Party Web UI
|
|
89
94
|
- **Live process monitoring** – see all running Arr managers and their current activity
|
|
90
95
|
- **Log viewer** – tail logs in real-time with filtering and search
|
|
91
|
-
- **Arr insights** – view movies, series, albums with filtering by year, quality, status
|
|
92
|
-
- **Config editor** – edit configuration directly from the UI
|
|
96
|
+
- **Arr insights** – view movies, series, albums with filtering by year, quality, status, and quality profiles
|
|
97
|
+
- **Config editor** – edit configuration directly from the UI with validation and helpful tooltips
|
|
98
|
+
- **Test connections** – validate Arr credentials and load quality profiles with one click
|
|
93
99
|
- **Restart controls** – restart individual processes or the entire application
|
|
94
100
|
- **Dark/light theme** – customizable UI appearance
|
|
95
101
|
- **Token authentication** – optional API protection with bearer tokens
|
|
@@ -97,6 +103,8 @@ qBitrr is the intelligent glue between qBittorrent and the *Arr ecosystem (Radar
|
|
|
97
103
|
## 📌 State of the Project
|
|
98
104
|
The long-term plan is still to ship a C# rewrite, but the Python edition isn't going anywhere—it gets regular fixes and features, and the Web UI is now production-ready. Ideas and PRs are welcome! Head over to the [issue templates](.github/ISSUE_TEMPLATE) or the [PR checklist](.github/pull_request_template.md) to get started.
|
|
99
105
|
|
|
106
|
+
|
|
107
|
+
|
|
100
108
|
## ⚡ Quickstart
|
|
101
109
|
qBitrr supports Python 3.12+ on Linux, macOS, and Windows. Run it natively or in Docker—whatever fits your stack.
|
|
102
110
|
|
|
@@ -215,6 +223,7 @@ sudo systemctl status qbitrr
|
|
|
215
223
|
|
|
216
224
|
2. **Configure Arr instances** (Radarr/Sonarr/Lidarr):
|
|
217
225
|
- Each instance needs: `URI`, `APIKey`, `Category`
|
|
226
|
+
- **Naming format:** Instance names must follow pattern `(Radarr|Sonarr|Lidarr)-<name>` (e.g., `Radarr-Movies`, `Sonarr-TV4K`)
|
|
218
227
|
- **Important:** Use matching categories in Arr's download client settings
|
|
219
228
|
- **Tagging:** Ensure Arr instances tag their downloads so qBitrr can track them
|
|
220
229
|
|
|
@@ -346,11 +355,25 @@ Unmonitored = false # Include unmonitored items
|
|
|
346
355
|
[Radarr-Movies.EntrySearch]
|
|
347
356
|
UseTempForMissing = true
|
|
348
357
|
KeepTempProfile = false
|
|
349
|
-
|
|
350
|
-
|
|
358
|
+
|
|
359
|
+
# New: Map each main profile to a temp profile
|
|
360
|
+
QualityProfileMappings = { "Ultra-HD" = "Web-DL", "HD-1080p" = "HDTV-720p" }
|
|
361
|
+
|
|
362
|
+
# Auto-reset options
|
|
363
|
+
ForceResetTempProfiles = false # Reset all on startup
|
|
364
|
+
TempProfileResetTimeoutMinutes = 0 # Auto-reset after timeout (0 = disabled)
|
|
365
|
+
ProfileSwitchRetryAttempts = 3 # Retry failed profile switches
|
|
366
|
+
|
|
351
367
|
# Searches missing items with temp profile, switches back after import
|
|
352
368
|
```
|
|
353
369
|
|
|
370
|
+
**Configure via WebUI:**
|
|
371
|
+
1. Edit your Arr instance in the Config tab
|
|
372
|
+
2. Click "Test Connection" to load available quality profiles
|
|
373
|
+
3. Add profile mappings with the interactive UI (no JSON editing needed!)
|
|
374
|
+
4. Select main and temp profiles from dropdowns
|
|
375
|
+
5. Save and restart
|
|
376
|
+
|
|
354
377
|
---
|
|
355
378
|
|
|
356
379
|
### 📊 Quality Management
|
|
@@ -454,6 +477,11 @@ AutoPauseResume = true # Required for FreeSpace to work
|
|
|
454
477
|
**Disable monitoring:**
|
|
455
478
|
```toml
|
|
456
479
|
[Settings]
|
|
480
|
+
FreeSpace = "" # Empty string or 0 disables monitoring
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
---
|
|
484
|
+
|
|
457
485
|
### 🔄 Auto-Updates & Restarts
|
|
458
486
|
|
|
459
487
|
qBitrr can automatically update itself by checking GitHub releases for new versions. The update behavior varies by installation type.
|
|
@@ -491,11 +519,11 @@ AutoUpdateCron = "0 3 * * 0" # Cron expression (default: Sunday 3 AM)
|
|
|
491
519
|
```
|
|
492
520
|
|
|
493
521
|
**Cron Expression Examples:**
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
522
|
+
```bash
|
|
523
|
+
0 3 * * 0 # Every Sunday at 3:00 AM
|
|
524
|
+
0 */6 * * * # Every 6 hours
|
|
525
|
+
0 0 * * * # Daily at midnight
|
|
526
|
+
0 2 * * 1-5 # Weekdays at 2:00 AM
|
|
499
527
|
```
|
|
500
528
|
|
|
501
529
|
---
|
|
@@ -693,6 +721,52 @@ curl -X POST http://localhost:6969/api/arr/radarr-movies/restart
|
|
|
693
721
|
|
|
694
722
|
---
|
|
695
723
|
|
|
724
|
+
### 🔁 Process Auto-Restart & Crash Loop Protection
|
|
725
|
+
|
|
726
|
+
Your Arr manager processes (Radarr/Sonarr/Lidarr) automatically restart if they crash, preventing downtime. Built-in protection stops restart loops if a process keeps failing.
|
|
727
|
+
|
|
728
|
+
#### ⚙️ Configuration
|
|
729
|
+
|
|
730
|
+
**Basic Setup:**
|
|
731
|
+
```toml
|
|
732
|
+
[Settings]
|
|
733
|
+
AutoRestartProcesses = true # Enable automatic restart
|
|
734
|
+
MaxProcessRestarts = 5 # Stop trying after 5 crashes
|
|
735
|
+
ProcessRestartWindow = 300 # Within 5 minutes
|
|
736
|
+
ProcessRestartDelay = 5 # Wait 5 seconds before restarting
|
|
737
|
+
```
|
|
738
|
+
|
|
739
|
+
**What this means:**
|
|
740
|
+
- If a process crashes fewer than 5 times in 5 minutes, it auto-restarts
|
|
741
|
+
- If it crashes 5+ times in 5 minutes, qBitrr stops trying and logs an error
|
|
742
|
+
- After the 5-minute window passes, the counter resets and auto-restart resumes
|
|
743
|
+
|
|
744
|
+
**Configure via WebUI:**
|
|
745
|
+
1. Navigate to **Config** tab
|
|
746
|
+
2. Find the **Process Management** section
|
|
747
|
+
3. Adjust restart behavior to your preference
|
|
748
|
+
4. Save and restart qBitrr
|
|
749
|
+
|
|
750
|
+
#### 📊 Monitoring
|
|
751
|
+
|
|
752
|
+
**Via WebUI:**
|
|
753
|
+
- **Processes tab** shows all running managers with restart history
|
|
754
|
+
- Manually restart individual processes if needed
|
|
755
|
+
|
|
756
|
+
**Via Logs:**
|
|
757
|
+
```bash
|
|
758
|
+
# See restart activity
|
|
759
|
+
tail -f ~/logs/Main.log | grep restart # Native
|
|
760
|
+
docker logs -f qbitrr | grep restart # Docker
|
|
761
|
+
sudo journalctl -u qbitrr -f | grep restart # Systemd
|
|
762
|
+
```
|
|
763
|
+
|
|
764
|
+
#### 🆕 First-Time Setup
|
|
765
|
+
|
|
766
|
+
Existing configs automatically upgrade to version 3 on first startup. A timestamped backup is created before any changes. No manual action needed!
|
|
767
|
+
|
|
768
|
+
---
|
|
769
|
+
|
|
696
770
|
## 🖥️ Built-in Web UI
|
|
697
771
|
The React + Vite dashboard provides complete visibility and control over your qBitrr instance.
|
|
698
772
|
|