qBitrr2 3.7.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.
@@ -0,0 +1,224 @@
1
+ Metadata-Version: 2.1
2
+ Name: qBitrr2
3
+ Version: 3.7.1
4
+ Summary: "A simple Python script to talk to qBittorrent and Arr's"
5
+ Home-page: https://github.com/Feramance/qBitrr
6
+ Author: Feramance
7
+ Author-email: fera@fera.wtf
8
+ License: MIT
9
+ Project-URL: Issue Tracker, https://github.com/Feramance/qBitrr/issues
10
+ Project-URL: Source Code, https://github.com/Feramance/qBitrr
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Natural Language :: English
16
+ Classifier: Operating System :: MacOS :: MacOS X
17
+ Classifier: Operating System :: Microsoft :: Windows
18
+ Classifier: Operating System :: POSIX :: Linux
19
+ Classifier: Programming Language :: Python :: 3 :: Only
20
+ Classifier: Programming Language :: Python :: 3.8
21
+ Classifier: Programming Language :: Python :: 3.9
22
+ Classifier: Programming Language :: Python :: 3.10
23
+ Classifier: Programming Language :: Python :: Implementation :: CPython
24
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
25
+ Classifier: Topic :: Terminals
26
+ Classifier: Topic :: Utilities
27
+ Classifier: Typing :: Typed
28
+ Requires-Python: <4,>=3.8.1
29
+ Description-Content-Type: text/markdown
30
+ License-File: LICENSE
31
+ Requires-Dist: cachetools ==4.2.4
32
+ Requires-Dist: colorama ==0.4.4
33
+ Requires-Dist: coloredlogs ==15.0.1
34
+ Requires-Dist: environ-config ==23.2.0
35
+ Requires-Dist: ffmpeg-python ==0.2.0
36
+ Requires-Dist: jaraco.docker ==2.0
37
+ Requires-Dist: packaging ==21.3
38
+ Requires-Dist: pathos ==0.2.8
39
+ Requires-Dist: peewee ==3.14.7
40
+ Requires-Dist: ping3 ==3.0.2
41
+ Requires-Dist: pyarr ==5.2.0
42
+ Requires-Dist: qbittorrent-api ==2023.7.52
43
+ Requires-Dist: requests ==2.31.0
44
+ Requires-Dist: tomlkit ==0.7.2
45
+ Provides-Extra: all
46
+ Requires-Dist: black ==22.1.0 ; extra == 'all'
47
+ Requires-Dist: bump2version ==1.0.1 ; extra == 'all'
48
+ Requires-Dist: isort ==5.10.1 ; extra == 'all'
49
+ Requires-Dist: pip-tools ==7.3.0 ; extra == 'all'
50
+ Requires-Dist: pre-commit ==3.3.3 ; extra == 'all'
51
+ Requires-Dist: pyinstaller ==4.8 ; extra == 'all'
52
+ Requires-Dist: pyupgrade ==2.31.0 ; extra == 'all'
53
+ Requires-Dist: twine ==3.7.1 ; extra == 'all'
54
+ Requires-Dist: ujson ==5.4.0 ; extra == 'all'
55
+ Requires-Dist: upgrade-pip ==0.1.4 ; extra == 'all'
56
+ Provides-Extra: dev
57
+ Requires-Dist: black ==22.1.0 ; extra == 'dev'
58
+ Requires-Dist: bump2version ==1.0.1 ; extra == 'dev'
59
+ Requires-Dist: isort ==5.10.1 ; extra == 'dev'
60
+ Requires-Dist: pip-tools ==7.3.0 ; extra == 'dev'
61
+ Requires-Dist: pre-commit ==3.3.3 ; extra == 'dev'
62
+ Requires-Dist: pyinstaller ==4.8 ; extra == 'dev'
63
+ Requires-Dist: pyupgrade ==2.31.0 ; extra == 'dev'
64
+ Requires-Dist: twine ==3.7.1 ; extra == 'dev'
65
+ Requires-Dist: ujson ==5.4.0 ; extra == 'dev'
66
+ Requires-Dist: upgrade-pip ==0.1.4 ; extra == 'dev'
67
+ Provides-Extra: fast
68
+ Requires-Dist: ujson ==5.4.0 ; extra == 'fast'
69
+
70
+
71
+ # qBitrr
72
+
73
+ [![PyPI - License](https://img.shields.io/pypi/l/qbitrr)](https://github.com/Feramance/Qbitrr/blob/master/LICENSE)
74
+ [![PyPI](https://img.shields.io/pypi/v/qBitrr2)](https://pypi.org/project/qBitrr2/)
75
+ [![PyPI](https://img.shields.io/pypi/dm/qbitrr2)](https://pypi.org/project/qBitrr2/)
76
+ [![Downloads](https://img.shields.io/github/downloads/feramance/qBitrr/total)](https://github.com/Feramance/qBitrr/releases/latest)
77
+ [![Pulls](https://img.shields.io/docker/pulls/feramance/qbitrr.svg)](https://hub.docker.com/r/feramance/qbitrr)
78
+
79
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/qbitrr)
80
+ ![Platforms](https://img.shields.io/badge/platform-linux--64%20%7C%20osx--64%20%7C%20win--32%20%7C%20win--64-lightgrey)
81
+
82
+ [![pre-commit.ci status](https://results.pre-commit.ci/badge/github/Feramance/qBitrr/master.svg)](https://results.pre-commit.ci/latest/github/Feramance/qBitrr/master)
83
+ [![CodeQL](https://github.com/Feramance/qBitrr/actions/workflows/codeql.yml/badge.svg?branch=master)](https://github.com/Feramance/qBitrr/actions/workflows/codeql.yml)
84
+ [![Create a Release](https://github.com/Feramance/qBitrr/actions/workflows/release.yml/badge.svg?branch=master)](https://github.com/Feramance/qBitrr/actions/workflows/release.yml)
85
+ [![Update dockerhub](https://github.com/Feramance/qBitrr/actions/workflows/dockerhub-description.yml/badge.svg?branch=master)](https://github.com/Feramance/qBitrr/actions/workflows/dockerhub-description.yml)
86
+
87
+ [![Code Style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
88
+ [![Imports: isort](https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336)](https://pycqa.github.io/isort/)
89
+
90
+ A simple script to monitor [qBit](https://github.com/qbittorrent/qBittorrent) and communicate with [Radarr](https://github.com/Radarr/Radarr) and [Sonarr](https://github.com/Sonarr/Sonarr)
91
+
92
+ ## Features
93
+
94
+ - Monitor qBit for Stalled/bad entries and delete them then blacklist them on Arrs (Option to also trigger a re-search action).
95
+ - Monitor qBit for completed entries and tell the appropriate Arr instance to import it:
96
+ - `qbitrr DownloadedMoviesScan` for Radarr
97
+ - `qbitrr DownloadedEpisodesScan` for Sonarr
98
+ - Skip files in qBit entries by extension, folder or regex.
99
+ - Monitor completed folder and clean it up.
100
+ - Usage of [ffprobe](https://github.com/FFmpeg/FFmpeg){:target="_blank" rel="noopener noreferrer"} to ensure downloaded entries are valid media.
101
+ - Trigger periodic Rss Syncs on the appropriate Arr instances.
102
+ - Trigger Queue update on appropriate Arr instances.
103
+ - Search requests from [Overseerr](https://github.com/sct/overseerr){:target="_blank" rel="noopener noreferrer"} or [Ombi](https://github.com/Ombi-app/Ombi){:target="_blank" rel="noopener noreferrer"}.
104
+ - Auto add/remove trackers
105
+ - Set per tracker values
106
+ - **Sonarr v4 support**
107
+ - **Radarr v4 and v5 support**
108
+ - Available if provided with a Sonarr/Radarr database file:
109
+ - Monitor Arr's databases to trigger missing episode searches.
110
+ - Searches Radarr missing movies based on Minimum Availability
111
+ - Customizable searching by series or singular episodes
112
+ - Optionally searches year by year is ascending or descending order (config option available)
113
+
114
+ ## Tested with
115
+
116
+ Some things to know before using it.
117
+
118
+ - qBittorrent 4.5.x
119
+ - [Sonarr](https://github.com/Sonarr/Sonarr) and [Radarr](https://github.com/Radarr/Radarr) both setup to add tags to all downloads.
120
+ - qBit set to create sub-folders for tag.
121
+
122
+ ## Usage
123
+ ### Native
124
+
125
+ - `python -m pip install qBitrr2` (I would recommend in a dedicated [venv](https://docs.python.org/3.3/library/venv.html) but that's out of scope.
126
+
127
+ Alternatively:
128
+ - Download on the [latest release](https://github.com/Drapersniper/Qbitrr/releases/latest)
129
+
130
+ #### Run the script
131
+
132
+ 1. Activate your venv
133
+ 2. Run `qBitrr2` to generate a config file
134
+ 3. Edit the config file (located at `~/config/config.toml` (~ is your current directory)
135
+ 4. Run `qBitrr2` if installed through pip again to start the script
136
+
137
+ Alternatively:
138
+ 1. Unzip the downloaded release and run it
139
+ 2. Run `qBitrr` to generate a config file
140
+ 3. Edit the config file (located at `~/config/config.toml` (~ is your current directory)
141
+ 4. Run `qBitrr` if installed through pip again to start the script
142
+
143
+ #### How to update the script
144
+
145
+ 1. Activate your venv
146
+ 2. Run `python -m pip install -U qBitrr2`
147
+
148
+ Alternatively:
149
+ 1. Download on the [latest release](https://github.com/Drapersniper/Qbitrr/releases/latest)
150
+ 2. Unzip the downloaded release and run it
151
+ 3. Run `qBitrr` to generate a config file
152
+ 4. Edit the config file (located at `~/config/config.toml` (~ is your current directory)
153
+ 5. Run `qBitrr` if installed through pip again to start the script
154
+
155
+ ***There is no auto-update feature, you will need to manually download the latest release and replace the old one.***
156
+
157
+ ### Docker
158
+
159
+ The docker image can be found [here](https://hub.docker.com/r/feramance/qbitrr)
160
+
161
+ #### Docker Image
162
+
163
+ - The docker image can be found [here](https://hub.docker.com/r/feramance/qbitrr)
164
+
165
+ #### Docker Run
166
+
167
+ ```bash
168
+ docker run -d \
169
+ --name=qbitrr \
170
+ -e TZ=Europe/London \
171
+ -v /etc/localtime:/etc/localtime:ro \
172
+ -v /path/to/appdata/qbitrr:/config \
173
+ -v /path/to/sonarr/db:/databases/sonarr.db:ro \
174
+ -v /path/to/radarr/db:/databases/radarr.db:ro \
175
+ -v /path/to/completed/downloads/folder:/completed_downloads:rw \
176
+ --restart unless-stopped \
177
+ feramance/qbitrr
178
+ ```
179
+
180
+ #### Docker Compose
181
+
182
+ ```yaml
183
+ version: "3"
184
+ services:
185
+ qbitrr:
186
+ image: feramance/qbitrr
187
+ user: 1000:1000 # Required to ensure teh container is run as the user who has perms to see the 2 mount points and the ability to write to the CompletedDownloadFolder mount
188
+ tty: true # Ensure the output of docker-compose logs qBitrr are properly colored.
189
+ restart: unless-stopped
190
+ # networks: This container MUST share a network with your Sonarr/Radarr instances
191
+ environment:
192
+ - TZ=Europe/London
193
+ volumes:
194
+ - /etc/localtime:/etc/localtime:ro
195
+ - /path/to/appdata/qbitrr:/config # Config folder for qBitrr
196
+ - /path/to/sonarr/db:/sonarr.db:ro # This is only needed if you want episode search handling :ro means it is only ever mounted as a read-only folder, the script never needs more than read access
197
+ - /path/to/radarr/db:/radarr.db:ro # This is only needed if you want movie search handling, :ro means it is only ever mounted as a read-only folder, the script never needs more than read access
198
+ - /path/to/completed/downloads/folder:/completed_downloads:rw # The script will ALWAYS require write permission in this folder if mounted, this folder is used to monitor completed downloads and if not present will cause the script to ignore downloaded file monitoring.
199
+ # Now just to make sure it is clean, when using this script in a docker you will need to ensure you config.toml values reflect the mounted folders.#
200
+ # For example, for your Sonarr.DatabaseFile value using the values above you'd add
201
+ # DatabaseFile = /sonarr.db/path/in/container/sonarr.db
202
+ # Because this is where you mounted it to
203
+ # The same would apply to Settings.CompletedDownloadFolder
204
+ # e.g CompletedDownloadFolder = /completed_downloads/folder/in/container
205
+
206
+ logging: # this script will generate a LOT of logs - so it is up to you to decide how much of it you want to store
207
+ driver: "json-file"
208
+ options:
209
+ max-size: "50m"
210
+ max-file: 3
211
+ depends_on: # Not needed but this ensures qBitrr only starts if the dependencies are up and running
212
+ - qbittorrent
213
+ - radarr-1080p
214
+ - radarr-4k
215
+ - sonarr-1080p
216
+ - sonarr-anime
217
+ - overseerr
218
+ ```
219
+
220
+ ##### Important mentions for docker
221
+
222
+ - The script will always expect a completed config.toml file
223
+ - When you first start the container a "config.rename_me.toml" will be added to `/path/to/appdata/qbitrr`
224
+ - Make sure to rename it to 'config.toml' then edit it to your desired values
@@ -0,0 +1,20 @@
1
+ qBitrr/__init__.py,sha256=dFFgQ04Lx3DCalHhP-qN4axRouRxcnAeWdPVdwSbJM0,382
2
+ qBitrr/arr_tables.py,sha256=goMZaY12dwesj43NezVp6avsIe9RmOxwXQ4ZKBhqzTY,4633
3
+ qBitrr/arss.py,sha256=mK_dK4nhzd9Bn5sHAtBEJimNaBjLyXdypcP6vqNA4mo,169928
4
+ qBitrr/bundled_data.py,sha256=KdXU9ZOx3fQ2KpAhMhptYOTF1eIxTnlKmlxQ627ALZw,190
5
+ qBitrr/config.py,sha256=tIxyp-SrEhfunlk-t4eYW7GpE8ECULULWByjW_31nyU,5328
6
+ qBitrr/env_config.py,sha256=eH7SdPKWzSXob9d-BkSwHBCmlJfmG9vopAdXBeTaidU,2047
7
+ qBitrr/errors.py,sha256=r6kMcL7Lag4QO4VwRN4WLvU_8Xh04gV1KTKEtIcp7yk,1147
8
+ qBitrr/ffprobe.py,sha256=2IM0iuPPTEb0xHmN1OetQoBd80-Nmv5Oq7P6o-mjBd0,4019
9
+ qBitrr/gen_config.py,sha256=ai9CXq8NG_Ybgtac-ixL7S1OdyHpb7AnJXla0EiOglE,28637
10
+ qBitrr/home_path.py,sha256=W0sX_KDk0ncpUAVI5-tB0X7-FUegwfQ2SlJ2mw6UHHA,650
11
+ qBitrr/logger.py,sha256=La3t0aeZUR8qAHAWnLh697dpSE-OoJTxxRzwAjLu1TQ,4360
12
+ qBitrr/main.py,sha256=kVeZ0NgB8lWHkn02kxWGMT4E5MUL4rV6f2tySpll_Fs,7172
13
+ qBitrr/tables.py,sha256=37-yLWykfuiKsGPwYdxVS0JD5rdODXIphkfkdmpEn5c,1724
14
+ qBitrr/utils.py,sha256=iTuohmQc94vfx0xBKME-pmLHr0a-xnEWp1Ub0QQayxQ,5300
15
+ qBitrr2-3.7.1.dist-info/LICENSE,sha256=sEUQyUWuHEHbHfMWogOU-ZMy3aQ4TUcGRd2CctwkOWM,1066
16
+ qBitrr2-3.7.1.dist-info/METADATA,sha256=jjAPO9Xagn8-EtJzt5yHNJlyN7twSY421tIT1I0zad8,10774
17
+ qBitrr2-3.7.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
18
+ qBitrr2-3.7.1.dist-info/entry_points.txt,sha256=MIR-l5s31VBs9qlv3HiAaMdpOOyy0MNGfM7Ib1-fKeQ,43
19
+ qBitrr2-3.7.1.dist-info/top_level.txt,sha256=jIINodarzsPcQeTf-vvK8-_g7cQ8CvxEg41ms14K97g,7
20
+ qBitrr2-3.7.1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.41.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ qbitrr = qBitrr.main:run
@@ -0,0 +1 @@
1
+ qBitrr