qBitrr2 5.7.0__py3-none-any.whl → 5.8.0__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/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.7.0
3
+ Version: 5.8.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
@@ -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,20 +1,21 @@
1
1
  qBitrr/__init__.py,sha256=smiPIV7d2lMJ_KTtFdAVlxLEBobFTheILdgry1iqpjQ,405
2
- qBitrr/arss.py,sha256=1gue10HaQpMLxA8YTGtc5tEWr0AoUPWENl0vdEPU8U4,342502
2
+ qBitrr/arss.py,sha256=nf3qH_0Z0V2oY4RLwxjaoShKK85bMsqIrObptUwzz-0,356696
3
3
  qBitrr/auto_update.py,sha256=3mqlKKGnaWR5dNI58LN5WbHOMFRDWBsOs0zIC79QzQk,13359
4
- qBitrr/bundled_data.py,sha256=OCzqf_y-3IG2CbuC8rdPTh28DPON83iyMYCe5p_hYyk,221
5
- qBitrr/config.py,sha256=e_UL8Jjz2hWAhT53Du8XZpvyY4ULC5mpyus_7i2An18,6306
4
+ qBitrr/bundled_data.py,sha256=e9Ep2V26jSB0CovlplU_R3D_fne0nuMqtTTQ3O9pCaQ,221
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
10
11
  qBitrr/errors.py,sha256=5_n1x0XX4UvMlieC_J1Hc5pq5JD17orfjJy9KfxDXA4,1107
11
12
  qBitrr/ffprobe.py,sha256=2IM0iuPPTEb0xHmN1OetQoBd80-Nmv5Oq7P6o-mjBd0,4019
12
- qBitrr/gen_config.py,sha256=LijEIuc152vBePP9MYxvE66D1ZxWPNTRC1agSuTiviQ,47136
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=cWJoI2FvYtBiIzwFVJbA7boxLi775ZPV1IGdsnwgExw,38654
16
- qBitrr/search_activity_store.py,sha256=5G3nMERsIM3IhwHD9T-5PzarJya-x1vWJLaZ-mr6Yso,2734
17
- qBitrr/tables.py,sha256=4gskwQUVaaGQcz8d03J306s9PvUlM--1-rZhRfvBC6k,5626
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=2MZgeVkDR6fPbWqM_Lj4QgyGy_1Tu-_xVSU-neXKkpk,71560
36
- qBitrr/static/assets/ConfigView.js.map,sha256=0Rsbc5PT6vqtWNxRwA2cFeeYnYltwJts5eXn1ahUpeQ,289129
37
- qBitrr/static/assets/LogsView.js,sha256=NU0JFeHcXRdYw10DPKFvA-UXM52-ePoGisrn2yLXhEk,119088
38
- qBitrr/static/assets/LogsView.js.map,sha256=6H7Cvlzv4skBwO3Z9FGrmKCPPTRJ3Yj17KSO62ZZoqg,480673
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.7.0.dist-info/licenses/LICENSE,sha256=P978aVGi7dPbKz8lfvdiryOS5IjTAU7AA47XhBhVBlI,1066
68
- qbitrr2-5.7.0.dist-info/METADATA,sha256=RoKROt8yRtfSKXUCXAS9EI62Ef14HqX0_xaywHRQ6JE,11461
69
- qbitrr2-5.7.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
70
- qbitrr2-5.7.0.dist-info/entry_points.txt,sha256=MIR-l5s31VBs9qlv3HiAaMdpOOyy0MNGfM7Ib1-fKeQ,43
71
- qbitrr2-5.7.0.dist-info/top_level.txt,sha256=jIINodarzsPcQeTf-vvK8-_g7cQ8CvxEg41ms14K97g,7
72
- qbitrr2-5.7.0.dist-info/RECORD,,
68
+ qbitrr2-5.8.0.dist-info/licenses/LICENSE,sha256=P978aVGi7dPbKz8lfvdiryOS5IjTAU7AA47XhBhVBlI,1066
69
+ qbitrr2-5.8.0.dist-info/METADATA,sha256=0nywd_mKrsilynCklrxqNzA7ZTqz98wEni8YAeorAXc,12112
70
+ qbitrr2-5.8.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
71
+ qbitrr2-5.8.0.dist-info/entry_points.txt,sha256=MIR-l5s31VBs9qlv3HiAaMdpOOyy0MNGfM7Ib1-fKeQ,43
72
+ qbitrr2-5.8.0.dist-info/top_level.txt,sha256=jIINodarzsPcQeTf-vvK8-_g7cQ8CvxEg41ms14K97g,7
73
+ qbitrr2-5.8.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5