plexflow 0.0.117__py3-none-any.whl → 0.0.119__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.
- plexflow/core/context/partials/__init__.py +2 -0
- plexflow/core/context/partials/torrent_blacklist.py +18 -0
- plexflow/core/context/partials/torrent_deadline.py +23 -0
- plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc +0 -0
- plexflow/core/downloads/qbit/interface.py +2 -2
- plexflow/core/subtitles/utils/__pycache__/plex_external_subtitle.cpython-312.pyc +0 -0
- plexflow/core/subtitles/utils/__pycache__/plex_subtitle.cpython-312.pyc +0 -0
- plexflow/core/torrents/results/__pycache__/universal.cpython-312.pyc +0 -0
- {plexflow-0.0.117.dist-info → plexflow-0.0.119.dist-info}/METADATA +1 -1
- {plexflow-0.0.117.dist-info → plexflow-0.0.119.dist-info}/RECORD +12 -8
- {plexflow-0.0.117.dist-info → plexflow-0.0.119.dist-info}/WHEEL +0 -0
- {plexflow-0.0.117.dist-info → plexflow-0.0.119.dist-info}/entry_points.txt +0 -0
@@ -12,3 +12,5 @@ from plexflow.core.context.partials.universal_torrents import UniversalTorrents
|
|
12
12
|
from plexflow.core.context.partials.candidates import Candidates
|
13
13
|
from plexflow.core.context.partials.completed_downloads import CompletedDownloads
|
14
14
|
from plexflow.core.context.partials.movie_assets import MovieAssets
|
15
|
+
from plexflow.core.context.partials.torrent_deadline import TorrentDeadline
|
16
|
+
from plexflow.core.context.partials.torrent_blacklist import TorrentBlacklist
|
@@ -0,0 +1,18 @@
|
|
1
|
+
from plexflow.core.context.partial_context import PartialContext
|
2
|
+
from qbittorrentapi.torrents import TorrentDictionary
|
3
|
+
|
4
|
+
class TorrentBlacklist(PartialContext):
|
5
|
+
def __init__(self, **kwargs) -> None:
|
6
|
+
super().__init__(**kwargs)
|
7
|
+
|
8
|
+
def ban(self, torrent: TorrentDictionary):
|
9
|
+
hash = torrent.hash
|
10
|
+
key = f"blacklist/torrents/{hash}"
|
11
|
+
self.set_global(key, torrent)
|
12
|
+
|
13
|
+
def is_banned(self, hash: str) -> bool:
|
14
|
+
try:
|
15
|
+
torrent = self.get_global(f"blacklist/torrents/{hash}")
|
16
|
+
return isinstance(torrent, TorrentDictionary)
|
17
|
+
except:
|
18
|
+
return False
|
@@ -0,0 +1,23 @@
|
|
1
|
+
from plexflow.core.context.partial_context import PartialContext
|
2
|
+
from qbittorrentapi.torrents import TorrentDictionary
|
3
|
+
from datetime import datetime
|
4
|
+
|
5
|
+
class TorrentDeadline(PartialContext):
|
6
|
+
def __init__(self, **kwargs) -> None:
|
7
|
+
super().__init__(**kwargs)
|
8
|
+
|
9
|
+
def track(self, torrent: TorrentDictionary, deadline: datetime):
|
10
|
+
hash = torrent.hash
|
11
|
+
key = f"deadlines/torrents/{hash}"
|
12
|
+
self.set(key, deadline)
|
13
|
+
|
14
|
+
def deadline(self, torrent: TorrentDictionary) -> datetime:
|
15
|
+
try:
|
16
|
+
hash = torrent.hash
|
17
|
+
return self.get(f"deadlines/torrents/{hash}")
|
18
|
+
except:
|
19
|
+
return None
|
20
|
+
|
21
|
+
def reset(self, torrent: TorrentDictionary):
|
22
|
+
hash = torrent.hash
|
23
|
+
self.set(f"deadlines/torrents/{hash}", None)
|
Binary file
|
@@ -61,9 +61,9 @@ def is_completed(torrent: TorrentDictionary) -> bool:
|
|
61
61
|
def is_downloading(torrent: TorrentDictionary) -> bool:
|
62
62
|
return torrent.state in [
|
63
63
|
"downloading",
|
64
|
-
"stalled_downloading",
|
64
|
+
# "stalled_downloading",
|
65
65
|
"checking",
|
66
|
-
"stalledDL",
|
66
|
+
# "stalledDL",
|
67
67
|
"forcedDL",
|
68
68
|
]
|
69
69
|
|
Binary file
|
Binary file
|
@@ -20,7 +20,7 @@ plexflow/core/context/metadata/tmdb/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
|
|
20
20
|
plexflow/core/context/metadata/tmdb/__pycache__/context.cpython-311.pyc,sha256=dcvTi-0PnZfbLfsLu5QuX_jpAeQYmZR7ZbjzQMHQov4,2627
|
21
21
|
plexflow/core/context/metadata/tmdb/context.py,sha256=zlI_Zs_1bAdR60xtl4j2_UBhIery1VcsQz2a53l5g20,1521
|
22
22
|
plexflow/core/context/partial_context.py,sha256=684qHyQ-ulkZnXm-CMmhP7ont-9lIi1WEAbLTjyS4kA,2301
|
23
|
-
plexflow/core/context/partials/__init__.py,sha256=
|
23
|
+
plexflow/core/context/partials/__init__.py,sha256=YUZlUl6vZlFV4ncwezVX1fDKs0B9gwUIXVyqkIPzMQ8,1068
|
24
24
|
plexflow/core/context/partials/__pycache__/__init__.cpython-311.pyc,sha256=x_5HUdt-0vrq9LMmc8Vj0usxqQ_ZHD4WZd4HrvhwAZc,346
|
25
25
|
plexflow/core/context/partials/__pycache__/ids.cpython-311.pyc,sha256=wV7r4FAwonAshns-NGcowqGamtrM_Q_2NbiHQhOLkjg,2638
|
26
26
|
plexflow/core/context/partials/__pycache__/watchlist.cpython-311.pyc,sha256=k-0BM-AvH-zObpwY0XR8CYrT21kPEa0fmeBmf0wscE0,1466
|
@@ -35,6 +35,8 @@ plexflow/core/context/partials/reports.py,sha256=0W58RwK3VSsVHbF0rhvMNNlZZr01eut
|
|
35
35
|
plexflow/core/context/partials/subtitles.py,sha256=0NhKGkP-sArQswuSyA7puRSjjoobF-3Ah7Pd39QkgTU,535
|
36
36
|
plexflow/core/context/partials/tgx_batch.py,sha256=TduB09oBOQ8CtmPYsHIeNe7AI-ypKw21zQAX-7qktEs,859
|
37
37
|
plexflow/core/context/partials/tgx_context.py,sha256=_FuhOvKsFqi_uynHxgC9_QIR2CfYmz-uJCRFtGFJmXI,1641
|
38
|
+
plexflow/core/context/partials/torrent_blacklist.py,sha256=6Uf65CF7M-JdgDt3k4Hi9WIpMkabp2eI4Ryubhjco0s,623
|
39
|
+
plexflow/core/context/partials/torrent_deadline.py,sha256=Nr5HqvAy0VT-GSd9eYPkUtKZqHpWhniE9P51xXFOji8,782
|
38
40
|
plexflow/core/context/partials/torrents.py,sha256=GtO4rlb7V2N-4QEWt-ODssEsdUlQ2o0lTo_BFI5i3lw,1109
|
39
41
|
plexflow/core/context/partials/universal_torrents.py,sha256=yohdSEhspSdvmrI6NeBB2Racb7yS2kz7qyFat6gNw6k,563
|
40
42
|
plexflow/core/context/partials/watchlist.py,sha256=XL4H3AXHhyuhuImm3OBfrOmlc9rMvVhBJJGumQijM-c,1108
|
@@ -65,7 +67,7 @@ plexflow/core/downloads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
|
|
65
67
|
plexflow/core/downloads/__pycache__/__init__.cpython-312.pyc,sha256=soaT0G2pvzN68xVkNyM9AKW0bhpmjqhIeF35mfoREDI,159
|
66
68
|
plexflow/core/downloads/candidates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
67
69
|
plexflow/core/downloads/candidates/__pycache__/__init__.cpython-312.pyc,sha256=rukNX00PSteBonRk-cayzNRk17ypWfE4noOAR3Ibjn0,170
|
68
|
-
plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc,sha256=
|
70
|
+
plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc,sha256=6qCk-6nvWxTczY0G7FbY_tQ2xOqllQrVdROnm_IdkBg,9573
|
69
71
|
plexflow/core/downloads/candidates/__pycache__/utils.cpython-312.pyc,sha256=Jwoj7R4TFzjoXc3uq_Wps3WitzFE9K_miKp9XuT_l8Y,2079
|
70
72
|
plexflow/core/downloads/candidates/download_candidate.py,sha256=6lQbtNw8uGr5B8qrkOOCxxvCKGHvFoEq8JjHGNB5FN8,5989
|
71
73
|
plexflow/core/downloads/candidates/filtered.py,sha256=HgUY0S3aWAeHASHTjND9hyjCtGNLhUzLOL90G2CDxKg,1842
|
@@ -76,7 +78,7 @@ plexflow/core/downloads/candidates/rank/utils.py,sha256=R4Ai4KmZRONo9vd2rf32DdGx
|
|
76
78
|
plexflow/core/downloads/candidates/utils.py,sha256=BnuDSRjU9mVYSh9ejKgfvlLi0bWEqc07uLyskC-bYhw,1874
|
77
79
|
plexflow/core/downloads/qbit/__pycache__/interface.cpython-312.pyc,sha256=szUoTWpZNpHwJ0OnXer8ZLeAYIvHND-rX1lB2Juv-J4,3335
|
78
80
|
plexflow/core/downloads/qbit/__pycache__/schedule.cpython-312.pyc,sha256=ESOLrk6sLpb1mtijuDGNKvAHaYopVQBwSDzdt8dFNow,1350
|
79
|
-
plexflow/core/downloads/qbit/interface.py,sha256=
|
81
|
+
plexflow/core/downloads/qbit/interface.py,sha256=QeBxe786H-JANSMEwueTE1t9xwYSZ3Ewkng8Me0_xC0,2440
|
80
82
|
plexflow/core/downloads/qbit/schedule.py,sha256=5w3JpbIGRc5xS_ZjfKXMXywi-2NXL_2y_Izx0DmUGnE,907
|
81
83
|
plexflow/core/env/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
84
|
plexflow/core/env/env.py,sha256=8cK49WiKD_H3B9K0QiMu7pkXTld40ojRB3sK7noQM44,953
|
@@ -381,6 +383,8 @@ plexflow/core/subtitles/results/__pycache__/__init__.cpython-312.pyc,sha256=pbtC
|
|
381
383
|
plexflow/core/subtitles/results/__pycache__/subtitle.cpython-311.pyc,sha256=CjeZEPM8DrolKN7eIIHM2kEN3gdc90yhdZssUN0ImdY,6400
|
382
384
|
plexflow/core/subtitles/results/__pycache__/subtitle.cpython-312.pyc,sha256=kDLEfwKiTgKMvis6GQ19lXs8Ybz09KV8tgMLx6D1BhE,5984
|
383
385
|
plexflow/core/subtitles/results/subtitle.py,sha256=1_xeg_l93b-gWRJEKrOSA8k1OlNOfJgotFWWsfgiUvM,3852
|
386
|
+
plexflow/core/subtitles/utils/__pycache__/plex_external_subtitle.cpython-312.pyc,sha256=942Iu0hDqZc33IGGI1ig8a9ToViytcAVYCGl8XsOkaQ,1069
|
387
|
+
plexflow/core/subtitles/utils/__pycache__/plex_subtitle.cpython-312.pyc,sha256=s9vex0jRTLFV3bpkoAEhlAaJyaqlVdgkPx6yl2r0kqk,1373
|
384
388
|
plexflow/core/subtitles/utils/plex_external_subtitle.py,sha256=LOhYDFZNgAhXROdJeqWwI1EeGLGpo5MQZtB0lwgIfbU,407
|
385
389
|
plexflow/core/subtitles/utils/plex_internal_subtitle.py,sha256=kFM789VRX7BuTldYmjCUG22E06xWgEej2L3U5Bp4JHI,185
|
386
390
|
plexflow/core/subtitles/utils/plex_subtitle.py,sha256=djARWfuKF7GXyeS0tm6yVtEtMATDoPl61_ja1NTWYUY,470
|
@@ -533,7 +537,7 @@ plexflow/core/torrents/results/__pycache__/__init__.cpython-311.pyc,sha256=FJHx4
|
|
533
537
|
plexflow/core/torrents/results/__pycache__/__init__.cpython-312.pyc,sha256=R6gHDW2Mf6MOoU7PPk7iLMe2kgPqao_Y6HbKAb5ZhUg,166
|
534
538
|
plexflow/core/torrents/results/__pycache__/torrent.cpython-311.pyc,sha256=SxfylbSxF9gpzXvNey4Fv9XdKLjwm0a0LYlGFhg7zAY,7655
|
535
539
|
plexflow/core/torrents/results/__pycache__/torrent.cpython-312.pyc,sha256=z8-iig6fvJcqj8R4C77wPLftziDCGuDg0uh_dlq2Qwc,8481
|
536
|
-
plexflow/core/torrents/results/__pycache__/universal.cpython-312.pyc,sha256=
|
540
|
+
plexflow/core/torrents/results/__pycache__/universal.cpython-312.pyc,sha256=jnFYw7Glwq9jgyOVTn9yDGWWDCgaM91KZgQmHU16KI8,14162
|
537
541
|
plexflow/core/torrents/results/__pycache__/utils.cpython-312.pyc,sha256=vqEt3jQLzZ-K_E9WV0kKz4K79AScvcg2xyOUTlAcu70,1136
|
538
542
|
plexflow/core/torrents/results/torrent.py,sha256=hSYlP_0Uktumi4wzXqIJ-WRRi5YAlvrZVhf_treXDrI,5203
|
539
543
|
plexflow/core/torrents/results/universal.py,sha256=ycprOMT1Px8IthmB82YhmnxeNt7P3GAcrOlEkpKoaQk,7706
|
@@ -694,7 +698,7 @@ plexflow/utils/video/__pycache__/audio.cpython-312.pyc,sha256=vXBnJwWgTDFdixMBs-
|
|
694
698
|
plexflow/utils/video/__pycache__/subtitle.cpython-312.pyc,sha256=PCjpCLydGXaRsQy6cikhgsEs8WlComfOoYPiLFqfVMA,2515
|
695
699
|
plexflow/utils/video/audio.py,sha256=tJ_lNwcjVuBQYD5cYOlXpr__eh8-hnReIgNRgIYOpqo,3380
|
696
700
|
plexflow/utils/video/subtitle.py,sha256=qPvvBjlPj0fynJJvGJgGeKt9ey26R-cF6EoLaYt9iXU,1333
|
697
|
-
plexflow-0.0.
|
698
|
-
plexflow-0.0.
|
699
|
-
plexflow-0.0.
|
700
|
-
plexflow-0.0.
|
701
|
+
plexflow-0.0.119.dist-info/METADATA,sha256=GfzyAhubItgqL_NBauP7ANbZNmvFiqhdpD_vsnIN1Hc,3094
|
702
|
+
plexflow-0.0.119.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
703
|
+
plexflow-0.0.119.dist-info/entry_points.txt,sha256=SSLjrLcZa2880346VUIsCG9vcLsquf-RTX9pkdNaTO8,1498
|
704
|
+
plexflow-0.0.119.dist-info/RECORD,,
|
File without changes
|
File without changes
|