qBitrr2 5.7.1__py3-none-any.whl → 5.8.1__py3-none-any.whl
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.
- qBitrr/arss.py +25 -141
- qBitrr/bundled_data.py +2 -2
- qBitrr/database.py +79 -0
- qBitrr/main.py +14 -8
- qBitrr/search_activity_store.py +9 -39
- qBitrr/static/assets/ConfigView.js +4 -4
- qBitrr/static/assets/ConfigView.js.map +1 -1
- qBitrr/static/assets/LogsView.js +19 -19
- qBitrr/static/assets/LogsView.js.map +1 -1
- qBitrr/tables.py +11 -0
- {qbitrr2-5.7.1.dist-info → qbitrr2-5.8.1.dist-info}/METADATA +19 -1
- {qbitrr2-5.7.1.dist-info → qbitrr2-5.8.1.dist-info}/RECORD +16 -15
- {qbitrr2-5.7.1.dist-info → qbitrr2-5.8.1.dist-info}/WHEEL +1 -1
- {qbitrr2-5.7.1.dist-info → qbitrr2-5.8.1.dist-info}/entry_points.txt +0 -0
- {qbitrr2-5.7.1.dist-info → qbitrr2-5.8.1.dist-info}/licenses/LICENSE +0 -0
- {qbitrr2-5.7.1.dist-info → qbitrr2-5.8.1.dist-info}/top_level.txt +0 -0
qBitrr/tables.py
CHANGED
|
@@ -3,6 +3,7 @@ from peewee import BooleanField, CharField, DateTimeField, IntegerField, Model,
|
|
|
3
3
|
|
|
4
4
|
class FilesQueued(Model):
|
|
5
5
|
EntryId = IntegerField(primary_key=True, null=False, unique=True)
|
|
6
|
+
ArrInstance = CharField(null=True, default="")
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class MoviesFilesModel(Model):
|
|
@@ -10,6 +11,7 @@ class MoviesFilesModel(Model):
|
|
|
10
11
|
Monitored = BooleanField()
|
|
11
12
|
TmdbId = IntegerField()
|
|
12
13
|
Year = IntegerField()
|
|
14
|
+
ArrInstance = CharField(null=True, default="")
|
|
13
15
|
EntryId = IntegerField(unique=True)
|
|
14
16
|
Searched = BooleanField(default=False)
|
|
15
17
|
MovieFileId = IntegerField()
|
|
@@ -34,6 +36,7 @@ class EpisodeFilesModel(Model):
|
|
|
34
36
|
SeriesTitle = TextField(null=True)
|
|
35
37
|
Title = TextField(null=True)
|
|
36
38
|
SeriesId = IntegerField(null=False)
|
|
39
|
+
ArrInstance = CharField(null=True, default="")
|
|
37
40
|
EpisodeFileId = IntegerField(null=True)
|
|
38
41
|
EpisodeNumber = IntegerField(null=False)
|
|
39
42
|
SeasonNumber = IntegerField(null=False)
|
|
@@ -62,6 +65,7 @@ class SeriesFilesModel(Model):
|
|
|
62
65
|
EntryId = IntegerField(primary_key=True)
|
|
63
66
|
Title = TextField(null=True)
|
|
64
67
|
Monitored = BooleanField(null=True)
|
|
68
|
+
ArrInstance = CharField(null=True, default="")
|
|
65
69
|
Searched = BooleanField(default=False)
|
|
66
70
|
Upgrade = BooleanField(default=False)
|
|
67
71
|
MinCustomFormatScore = IntegerField(null=True)
|
|
@@ -73,11 +77,13 @@ class SeriesFilesModel(Model):
|
|
|
73
77
|
class MovieQueueModel(Model):
|
|
74
78
|
EntryId = IntegerField(unique=True)
|
|
75
79
|
Completed = BooleanField(default=False)
|
|
80
|
+
ArrInstance = CharField(null=True, default="")
|
|
76
81
|
|
|
77
82
|
|
|
78
83
|
class EpisodeQueueModel(Model):
|
|
79
84
|
EntryId = IntegerField(unique=True)
|
|
80
85
|
Completed = BooleanField(default=False)
|
|
86
|
+
ArrInstance = CharField(null=True, default="")
|
|
81
87
|
|
|
82
88
|
|
|
83
89
|
class AlbumFilesModel(Model):
|
|
@@ -86,6 +92,7 @@ class AlbumFilesModel(Model):
|
|
|
86
92
|
ForeignAlbumId = CharField()
|
|
87
93
|
ReleaseDate = DateTimeField(formats=["%Y-%m-%d %H:%M:%S.%f"], null=True)
|
|
88
94
|
EntryId = IntegerField(unique=True)
|
|
95
|
+
ArrInstance = CharField(null=True, default="")
|
|
89
96
|
Searched = BooleanField(default=False)
|
|
90
97
|
AlbumFileId = IntegerField()
|
|
91
98
|
IsRequest = BooleanField(default=False)
|
|
@@ -111,6 +118,7 @@ class TrackFilesModel(Model):
|
|
|
111
118
|
AlbumId = IntegerField(null=False)
|
|
112
119
|
TrackNumber = IntegerField(null=True)
|
|
113
120
|
Title = TextField(null=True)
|
|
121
|
+
ArrInstance = CharField(null=True, default="")
|
|
114
122
|
Duration = IntegerField(null=True) # Duration in seconds
|
|
115
123
|
HasFile = BooleanField(default=False)
|
|
116
124
|
TrackFileId = IntegerField(null=True)
|
|
@@ -121,6 +129,7 @@ class ArtistFilesModel(Model):
|
|
|
121
129
|
EntryId = IntegerField(primary_key=True)
|
|
122
130
|
Title = TextField(null=True)
|
|
123
131
|
Monitored = BooleanField(null=True)
|
|
132
|
+
ArrInstance = CharField(null=True, default="")
|
|
124
133
|
Searched = BooleanField(default=False)
|
|
125
134
|
Upgrade = BooleanField(default=False)
|
|
126
135
|
MinCustomFormatScore = IntegerField(null=True)
|
|
@@ -132,6 +141,7 @@ class ArtistFilesModel(Model):
|
|
|
132
141
|
class AlbumQueueModel(Model):
|
|
133
142
|
EntryId = IntegerField(unique=True)
|
|
134
143
|
Completed = BooleanField(default=False)
|
|
144
|
+
ArrInstance = CharField(null=True, default="")
|
|
135
145
|
|
|
136
146
|
|
|
137
147
|
class TorrentLibrary(Model):
|
|
@@ -140,6 +150,7 @@ class TorrentLibrary(Model):
|
|
|
140
150
|
QbitInstance = TextField(
|
|
141
151
|
null=False, default="default"
|
|
142
152
|
) # Multi-qBit v3.0: Track which instance
|
|
153
|
+
ArrInstance = CharField(null=True, default="")
|
|
143
154
|
AllowedSeeding = BooleanField(default=False)
|
|
144
155
|
Imported = BooleanField(default=False)
|
|
145
156
|
AllowedStalled = BooleanField(default=False)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: qBitrr2
|
|
3
|
-
Version: 5.
|
|
3
|
+
Version: 5.8.1
|
|
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
|
|
@@ -169,6 +169,24 @@ services:
|
|
|
169
169
|
|
|
170
170
|
Access the WebUI at `http://<host>:6969/ui` after startup.
|
|
171
171
|
|
|
172
|
+
## 🆕 What's New in v5.8.0
|
|
173
|
+
|
|
174
|
+
### Single Consolidated Database
|
|
175
|
+
qBitrr now uses a **single `qbitrr.db` file** for all Arr instances, replacing the previous per-instance database approach.
|
|
176
|
+
|
|
177
|
+
**Benefits:**
|
|
178
|
+
- ✅ Single file to backup instead of 9+ separate databases
|
|
179
|
+
- ✅ 78% code reduction in database initialization
|
|
180
|
+
- ✅ Better performance with shared connection pool
|
|
181
|
+
- ✅ Simplified database management
|
|
182
|
+
|
|
183
|
+
**Migration:**
|
|
184
|
+
- Automatic on first upgrade (5-30 minutes re-sync from Arr APIs)
|
|
185
|
+
- Old databases deleted automatically
|
|
186
|
+
- No manual intervention required
|
|
187
|
+
|
|
188
|
+
[Full Migration Guide →](https://feramance.github.io/qBitrr/getting-started/migration/)
|
|
189
|
+
|
|
172
190
|
## ✨ Key Features
|
|
173
191
|
|
|
174
192
|
- **🚀 Multi-qBittorrent Support (v3.0+)** – Manage torrents across multiple qBittorrent instances for load balancing, redundancy, and VPN isolation
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
qBitrr/__init__.py,sha256=smiPIV7d2lMJ_KTtFdAVlxLEBobFTheILdgry1iqpjQ,405
|
|
2
|
-
qBitrr/arss.py,sha256=
|
|
2
|
+
qBitrr/arss.py,sha256=nf3qH_0Z0V2oY4RLwxjaoShKK85bMsqIrObptUwzz-0,356696
|
|
3
3
|
qBitrr/auto_update.py,sha256=3mqlKKGnaWR5dNI58LN5WbHOMFRDWBsOs0zIC79QzQk,13359
|
|
4
|
-
qBitrr/bundled_data.py,sha256=
|
|
4
|
+
qBitrr/bundled_data.py,sha256=tAGiTLu95EdYYBsHg5ge6No77uRhXbgoXC3lboyR4lg,221
|
|
5
5
|
qBitrr/config.py,sha256=BtvzQCQnRHEGzNykEa-WsiWKPjwXCb7wMx994z3rWMs,6306
|
|
6
6
|
qBitrr/config_version.py,sha256=eWfc7DuthsDGwv2WJAZ7uB7srSqxaUD3Oj9kac3HbFE,4208
|
|
7
|
+
qBitrr/database.py,sha256=cXMNsunJYj094TRAe1zNmGkqNFNdnuKb8tmSuAS4-0o,1952
|
|
7
8
|
qBitrr/db_lock.py,sha256=ZM6TQagBOkcS7h9BDGsdxhCo5aJ5SMvtKSM_X7HLu8M,15375
|
|
8
9
|
qBitrr/db_recovery.py,sha256=4kS9mWKrBYE9135m7cxvCOriSxz6lz7Dw4MT6gz81SM,6438
|
|
9
10
|
qBitrr/env_config.py,sha256=299u_uEoyxlM_ceTD0Z_i41JdYjSHmqO6FKe7qGFgTM,2866
|
|
@@ -12,9 +13,9 @@ qBitrr/ffprobe.py,sha256=2IM0iuPPTEb0xHmN1OetQoBd80-Nmv5Oq7P6o-mjBd0,4019
|
|
|
12
13
|
qBitrr/gen_config.py,sha256=U827i2xg1mywgx7nV9_cfhiDFN6ITz_1SUwP6LjnraQ,48391
|
|
13
14
|
qBitrr/home_path.py,sha256=zvBheAR2xvr8LBZRk1FyqfnALE-eFzsY9CyqyZDjxiE,626
|
|
14
15
|
qBitrr/logger.py,sha256=f3LNcvl4lizTxQMXjFzv5urpPbUYEkaSGVGFP39cNbk,9005
|
|
15
|
-
qBitrr/main.py,sha256=
|
|
16
|
-
qBitrr/search_activity_store.py,sha256=
|
|
17
|
-
qBitrr/tables.py,sha256=
|
|
16
|
+
qBitrr/main.py,sha256=0nTY4V8ze6mDrQln9qrxIc7SuE6PShx1Zg_T5xb-XGU,51176
|
|
17
|
+
qBitrr/search_activity_store.py,sha256=JuJ0PQxSPBguacyqus2I4_g3qEYReOhZbghOjJOoE7o,1770
|
|
18
|
+
qBitrr/tables.py,sha256=hAHYmpSjdbXyOXABUDXmQKFgf_TQLrgYlCQPZEZWN8o,6187
|
|
18
19
|
qBitrr/utils.py,sha256=T10win016yHwMMJlJ4yuPTRUI9m-AS_a_MouiAJAtC8,8190
|
|
19
20
|
qBitrr/versioning.py,sha256=vjQ55rMInuEte9PXQo29FLxF0ff643Ttm3_ri5ghXPM,4542
|
|
20
21
|
qBitrr/webui.py,sha256=lkfQ3uY_yvrm5aL97H8ZEAP0hZIJWzlXoFgNFkyvSX8,135964
|
|
@@ -32,10 +33,10 @@ qBitrr/static/sw.js,sha256=7YrOxAFxZdfWk1IDtsSfApgQEwpnamipyEmMRcStp1I,3215
|
|
|
32
33
|
qBitrr/static/vite.svg,sha256=__cChi4Uw84Bm4HYbgegc0dkysIspdu-hULUpoLkgrI,1498
|
|
33
34
|
qBitrr/static/assets/ArrView.js,sha256=3G-mLSjfyYbf-QEyIcvRgQhKbo5vW9z5DUBq6K9uSQY,71385
|
|
34
35
|
qBitrr/static/assets/ArrView.js.map,sha256=3XuPzy2Pl-HH5LbQ1CbA4o-I5LJlWWH_kdaz7w48IoI,271349
|
|
35
|
-
qBitrr/static/assets/ConfigView.js,sha256=
|
|
36
|
-
qBitrr/static/assets/ConfigView.js.map,sha256=
|
|
37
|
-
qBitrr/static/assets/LogsView.js,sha256=
|
|
38
|
-
qBitrr/static/assets/LogsView.js.map,sha256=
|
|
36
|
+
qBitrr/static/assets/ConfigView.js,sha256=X9-ovxOiExIMFDaDqZ-ajJJJSGzQsObNjgOLFKy2PIw,72036
|
|
37
|
+
qBitrr/static/assets/ConfigView.js.map,sha256=puLlBaPUmBXEUH9YWazhIshZE2DbH6LYMQMnumswwss,290042
|
|
38
|
+
qBitrr/static/assets/LogsView.js,sha256=W76pJiNn9PzdSiHNYXvQ9KajOcneyewdnxWjudao7L0,119172
|
|
39
|
+
qBitrr/static/assets/LogsView.js.map,sha256=yzdMUlhQ4NJMy3AGA5IX_gUu59l-Mrkr6o2pisLPnPU,473243
|
|
39
40
|
qBitrr/static/assets/ProcessesView.js,sha256=FigVNkdTRi8GFtbA_tfzI7i-vyziPjdSAtyph2R03pY,8693
|
|
40
41
|
qBitrr/static/assets/ProcessesView.js.map,sha256=TvaOb-bLhvQuQEM_ix7eDDPWE0ygYih_1BrbpWrpaqQ,31175
|
|
41
42
|
qBitrr/static/assets/app.css,sha256=0anadTB1R43p4Brukr7S-rkzlHLzUS5R0GWyHtF8HG4,55598
|
|
@@ -64,9 +65,9 @@ qBitrr/static/assets/useInterval.js.map,sha256=3KvsE2Do5LepkgpP-0XBHeGOprIQiDIdK
|
|
|
64
65
|
qBitrr/static/assets/vendor.js,sha256=uDL8OA1Nbl4ZlnDVLXOmaKPBVqK6pBsoDiRriXdDk04,11357
|
|
65
66
|
qBitrr/static/assets/vendor.js.map,sha256=Nj3zAKcjMhDma3lqUKGqQvwozZmbx4SEMBKBLXTi9io,42253
|
|
66
67
|
qBitrr/static/assets/visibility.svg,sha256=258DiSuUKs2SH9dhhDDU88JQfLAlNQMvOGewc9uaTK4,9767
|
|
67
|
-
qbitrr2-5.
|
|
68
|
-
qbitrr2-5.
|
|
69
|
-
qbitrr2-5.
|
|
70
|
-
qbitrr2-5.
|
|
71
|
-
qbitrr2-5.
|
|
72
|
-
qbitrr2-5.
|
|
68
|
+
qbitrr2-5.8.1.dist-info/licenses/LICENSE,sha256=P978aVGi7dPbKz8lfvdiryOS5IjTAU7AA47XhBhVBlI,1066
|
|
69
|
+
qbitrr2-5.8.1.dist-info/METADATA,sha256=sRdUVl7tY2LTSZARSnSHffBxTV6Pu-AAhXgBdEywMhI,12112
|
|
70
|
+
qbitrr2-5.8.1.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
71
|
+
qbitrr2-5.8.1.dist-info/entry_points.txt,sha256=MIR-l5s31VBs9qlv3HiAaMdpOOyy0MNGfM7Ib1-fKeQ,43
|
|
72
|
+
qbitrr2-5.8.1.dist-info/top_level.txt,sha256=jIINodarzsPcQeTf-vvK8-_g7cQ8CvxEg41ms14K97g,7
|
|
73
|
+
qbitrr2-5.8.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|