plexflow 0.0.108__py3-none-any.whl → 0.0.110__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/subtitles.py +3 -4
- plexflow/core/downloads/candidates/download_candidate.py +4 -4
- plexflow/core/downloads/candidates/utils.py +6 -6
- plexflow/core/plex/__pycache__/__init__.cpython-312.pyc +0 -0
- plexflow/core/plex/api/context/__pycache__/authorized.cpython-312.pyc +0 -0
- plexflow/core/plex/api/context/__pycache__/library.cpython-312.pyc +0 -0
- plexflow/core/plex/library/__pycache__/__init__.cpython-312.pyc +0 -0
- plexflow/core/plex/library/__pycache__/library.cpython-312.pyc +0 -0
- plexflow/core/plex/library/library.py +11 -0
- plexflow/core/plex/token/__pycache__/__init__.cpython-312.pyc +0 -0
- plexflow/core/plex/token/__pycache__/auto_token.cpython-312.pyc +0 -0
- plexflow/core/subtitles/utils/plex_external_subtitle.py +11 -0
- plexflow/core/subtitles/utils/plex_internal_subtitle.py +6 -0
- plexflow/core/subtitles/utils/plex_subtitle.py +21 -0
- plexflow/utils/api/__pycache__/__init__.cpython-312.pyc +0 -0
- plexflow/utils/api/context/__pycache__/http.cpython-312.pyc +0 -0
- {plexflow-0.0.108.dist-info → plexflow-0.0.110.dist-info}/METADATA +1 -1
- {plexflow-0.0.108.dist-info → plexflow-0.0.110.dist-info}/RECORD +20 -14
- {plexflow-0.0.108.dist-info → plexflow-0.0.110.dist-info}/entry_points.txt +1 -0
- {plexflow-0.0.108.dist-info → plexflow-0.0.110.dist-info}/WHEEL +0 -0
@@ -1,16 +1,15 @@
|
|
1
1
|
from plexflow.core.context.partial_context import PartialContext
|
2
|
-
from
|
3
|
-
from plexflow.core.subtitles.providers.oss.oss_subtitle import OSSSubtitle
|
2
|
+
from plexflow.core.subtitles.utils.plex_external_subtitle import PlexExternalSubtitle
|
4
3
|
from typing import List
|
5
4
|
|
6
5
|
class Subtitles(PartialContext):
|
7
6
|
def __init__(self, **kwargs) -> None:
|
8
7
|
super().__init__(**kwargs)
|
9
8
|
|
10
|
-
def all(self) -> List[
|
9
|
+
def all(self) -> List[PlexExternalSubtitle]:
|
11
10
|
return self.get("subtitles/oss")
|
12
11
|
|
13
|
-
def update(self, subtitles: List[
|
12
|
+
def update(self, subtitles: List[PlexExternalSubtitle]):
|
14
13
|
if len(subtitles) == 0:
|
15
14
|
return
|
16
15
|
self.set("subtitles/oss", subtitles)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import math
|
2
2
|
from typing import List, Optional, Set
|
3
3
|
from plexflow.core.torrents.results.universal import UniversalTorrent
|
4
|
-
from plexflow.core.subtitles.
|
4
|
+
from plexflow.core.subtitles.utils.plex_external_subtitle import PlexExternalSubtitle
|
5
5
|
from plexflow.utils.imdb.imdb_codes import IMDbCode
|
6
6
|
|
7
7
|
class DownloadCandidate:
|
@@ -9,7 +9,7 @@ class DownloadCandidate:
|
|
9
9
|
Represents a download candidate for a torrent with associated subtitles.
|
10
10
|
"""
|
11
11
|
|
12
|
-
def __init__(self, torrent: UniversalTorrent, subtitles: List[
|
12
|
+
def __init__(self, torrent: UniversalTorrent, subtitles: List[PlexExternalSubtitle]):
|
13
13
|
"""
|
14
14
|
Initializes a new instance of the DownloadCandidate class.
|
15
15
|
|
@@ -197,7 +197,7 @@ class DownloadCandidate:
|
|
197
197
|
"""
|
198
198
|
return any([
|
199
199
|
self.has_native_dutch_subtitles,
|
200
|
-
any(s.language == "nl" for s in self.subtitles),
|
200
|
+
any(s.oss_subtitle.language == "nl" for s in self.subtitles),
|
201
201
|
])
|
202
202
|
|
203
203
|
@property
|
@@ -210,5 +210,5 @@ class DownloadCandidate:
|
|
210
210
|
"""
|
211
211
|
return any([
|
212
212
|
self.has_native_english_subtitles,
|
213
|
-
any(s.language == "en" for s in self.subtitles),
|
213
|
+
any(s.oss_subtitle.language == "en" for s in self.subtitles),
|
214
214
|
])
|
@@ -1,16 +1,16 @@
|
|
1
1
|
from typing import Iterable, List
|
2
2
|
from plexflow.core.torrents.results.universal import UniversalTorrent
|
3
|
-
from plexflow.core.subtitles.
|
3
|
+
from plexflow.core.subtitles.utils.plex_external_subtitle import PlexExternalSubtitle
|
4
4
|
from plexflow.core.downloads.candidates.download_candidate import DownloadCandidate
|
5
5
|
|
6
|
-
def create_download_candidates(torrents: Iterable[UniversalTorrent], subtitles: Iterable[
|
6
|
+
def create_download_candidates(torrents: Iterable[UniversalTorrent], subtitles: Iterable[PlexExternalSubtitle]) -> List[DownloadCandidate]:
|
7
7
|
"""
|
8
|
-
This function creates a list of DownloadCandidate objects from an iterable of UniversalTorrent and an iterable of
|
8
|
+
This function creates a list of DownloadCandidate objects from an iterable of UniversalTorrent and an iterable of PlexExternalSubtitle.
|
9
9
|
All subtitles that are compatible with a torrent will become together a DownloadCandidate.
|
10
10
|
|
11
11
|
Parameters:
|
12
12
|
torrents (Iterable[UniversalTorrent]): An iterable of UniversalTorrent objects.
|
13
|
-
subtitles (Iterable[
|
13
|
+
subtitles (Iterable[PlexExternalSubtitle]): An iterable of PlexExternalSubtitle objects.
|
14
14
|
|
15
15
|
Returns:
|
16
16
|
List[DownloadCandidate]: A list of DownloadCandidate objects.
|
@@ -23,7 +23,7 @@ def create_download_candidates(torrents: Iterable[UniversalTorrent], subtitles:
|
|
23
23
|
if not isinstance(torrents, Iterable):
|
24
24
|
raise ValueError("torrents should be an iterable of UniversalTorrent objects")
|
25
25
|
if not isinstance(subtitles, Iterable):
|
26
|
-
raise ValueError("subtitles should be an iterable of
|
26
|
+
raise ValueError("subtitles should be an iterable of PlexExternalSubtitle objects")
|
27
27
|
|
28
28
|
download_candidates = []
|
29
29
|
|
@@ -32,7 +32,7 @@ def create_download_candidates(torrents: Iterable[UniversalTorrent], subtitles:
|
|
32
32
|
if not isinstance(torrent, UniversalTorrent):
|
33
33
|
raise ValueError("Each torrent should be an instance of UniversalTorrent")
|
34
34
|
|
35
|
-
compatible_subtitles = [subtitle for subtitle in subtitles if torrent.is_compatible_with(subtitle)]
|
35
|
+
compatible_subtitles = [subtitle for subtitle in subtitles if torrent.is_compatible_with(subtitle.oss_subtitle)]
|
36
36
|
download_candidate = DownloadCandidate(torrent, compatible_subtitles)
|
37
37
|
download_candidates.append(download_candidate)
|
38
38
|
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -29,6 +29,17 @@ def get_library_id(library_name: str) -> int:
|
|
29
29
|
return section["key"]
|
30
30
|
raise ValueError(f"Library '{library_name}' not found.")
|
31
31
|
|
32
|
+
def refresh_library(library_name: str) -> bool:
|
33
|
+
library_id = get_library_id(library_name)
|
34
|
+
context = PlexLibraryRequestContext()
|
35
|
+
context.get(f"/library/sections/{library_id}/refresh")
|
36
|
+
|
37
|
+
def refresh_movies_library(library_name: str = "Films") -> bool:
|
38
|
+
return refresh_library(library_name=library_name)
|
39
|
+
|
40
|
+
def refresh_tv_library(library_name: str = "Series") -> bool:
|
41
|
+
return refresh_library(library_name=library_name)
|
42
|
+
|
32
43
|
def is_media_in_library(guid: str, library_name: str, media_type: str) -> bool:
|
33
44
|
"""
|
34
45
|
Check if a media exists in a Plex library based on its GUID.
|
Binary file
|
Binary file
|
@@ -0,0 +1,11 @@
|
|
1
|
+
from plexflow.core.subtitles.providers.oss.oss_subtitle import OSSSubtitle
|
2
|
+
from plexflow.core.subtitles.utils.plex_subtitle import PlexSubtitle
|
3
|
+
|
4
|
+
class PlexExternalSubtitle(PlexSubtitle):
|
5
|
+
def __init__(self, path, name, subtitle: OSSSubtitle):
|
6
|
+
super().__init__(path, name)
|
7
|
+
self.subtitle = subtitle
|
8
|
+
|
9
|
+
@property
|
10
|
+
def oss_subtitle(self) -> OSSSubtitle:
|
11
|
+
return self.subtitle
|
@@ -0,0 +1,21 @@
|
|
1
|
+
|
2
|
+
class PlexSubtitle:
|
3
|
+
def __init__(self, path: str, name: str):
|
4
|
+
self.path = path
|
5
|
+
self.name = name
|
6
|
+
self.detected_language = None
|
7
|
+
|
8
|
+
@property
|
9
|
+
def filepath(self) -> str:
|
10
|
+
return self.path
|
11
|
+
|
12
|
+
@property
|
13
|
+
def filename(self) -> str:
|
14
|
+
return self.name
|
15
|
+
|
16
|
+
def set_detected_language(self, lang):
|
17
|
+
self.detected_language = lang
|
18
|
+
|
19
|
+
@property
|
20
|
+
def language(self) -> str:
|
21
|
+
return self.detected_language
|
Binary file
|
Binary file
|
@@ -32,7 +32,7 @@ plexflow/core/context/partials/ids.py,sha256=QoQ6FbX1OIWrE-iuz-G6kSzBlTt1_I1jyfl
|
|
32
32
|
plexflow/core/context/partials/movie.py,sha256=VXQ2SspFgGSRgDefg4VlHrH2fns3KRuKlU72ps6527o,3861
|
33
33
|
plexflow/core/context/partials/movie_assets.py,sha256=ZUgNpPDBDw_vjg3DcBP9OI2_zzbOh275GHkTBSuHbOc,1225
|
34
34
|
plexflow/core/context/partials/reports.py,sha256=0W58RwK3VSsVHbF0rhvMNNlZZr01eutwermyvdeEZIs,810
|
35
|
-
plexflow/core/context/partials/subtitles.py,sha256=
|
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
38
|
plexflow/core/context/partials/torrents.py,sha256=GtO4rlb7V2N-4QEWt-ODssEsdUlQ2o0lTo_BFI5i3lw,1109
|
@@ -67,13 +67,13 @@ plexflow/core/downloads/candidates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
|
|
67
67
|
plexflow/core/downloads/candidates/__pycache__/__init__.cpython-312.pyc,sha256=rukNX00PSteBonRk-cayzNRk17ypWfE4noOAR3Ibjn0,170
|
68
68
|
plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc,sha256=f4h0U6Cue2z5QaU_Ik7zHTqITe0SLVSeNRLvIVwsB3c,9487
|
69
69
|
plexflow/core/downloads/candidates/__pycache__/utils.cpython-312.pyc,sha256=Jwoj7R4TFzjoXc3uq_Wps3WitzFE9K_miKp9XuT_l8Y,2079
|
70
|
-
plexflow/core/downloads/candidates/download_candidate.py,sha256=
|
70
|
+
plexflow/core/downloads/candidates/download_candidate.py,sha256=6lQbtNw8uGr5B8qrkOOCxxvCKGHvFoEq8JjHGNB5FN8,5989
|
71
71
|
plexflow/core/downloads/candidates/filtered.py,sha256=HgUY0S3aWAeHASHTjND9hyjCtGNLhUzLOL90G2CDxKg,1842
|
72
72
|
plexflow/core/downloads/candidates/rank/__pycache__/ranking.cpython-312.pyc,sha256=Wz8hGAtLZNT0ThAPwloLBek5wflI6DKFDhr5_b7TzPI,4045
|
73
73
|
plexflow/core/downloads/candidates/rank/__pycache__/utils.cpython-312.pyc,sha256=5Q6q1kw62WCWlPVFpXgXYt6oqf2gWHK_DHaZ-CBADwk,426
|
74
74
|
plexflow/core/downloads/candidates/rank/ranking.py,sha256=p86f3DQmXJNE53gPk9E5RcKA7dgXI4wPQsIh9ae1uxY,2490
|
75
75
|
plexflow/core/downloads/candidates/rank/utils.py,sha256=R4Ai4KmZRONo9vd2rf32DdGxVkANHYFwSjrO5WVjX9U,100
|
76
|
-
plexflow/core/downloads/candidates/utils.py,sha256=
|
76
|
+
plexflow/core/downloads/candidates/utils.py,sha256=BnuDSRjU9mVYSh9ejKgfvlLi0bWEqc07uLyskC-bYhw,1874
|
77
77
|
plexflow/core/downloads/qbit/__pycache__/interface.cpython-312.pyc,sha256=szUoTWpZNpHwJ0OnXer8ZLeAYIvHND-rX1lB2Juv-J4,3335
|
78
78
|
plexflow/core/downloads/qbit/__pycache__/schedule.cpython-312.pyc,sha256=ESOLrk6sLpb1mtijuDGNKvAHaYopVQBwSDzdt8dFNow,1350
|
79
79
|
plexflow/core/downloads/qbit/interface.py,sha256=26--RLSWYnI8nx4UThF2qu3Lm7hqpOxKw5Sp47qqg2o,2435
|
@@ -251,10 +251,11 @@ plexflow/core/metadata/providers/universal/old.py,sha256=_o_BNDXJnSq5S6qTMsNNBy3
|
|
251
251
|
plexflow/core/metadata/providers/universal/show.py,sha256=wbOMO08hrJyX5WjY5hn7ZFU-nXmjZSIWXwjMgHHhCE4,3600
|
252
252
|
plexflow/core/plex/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
253
253
|
plexflow/core/plex/__pycache__/__init__.cpython-311.pyc,sha256=o4gGMMqIGn76K2SswHK_TRMj4Vu_qtdzr4hzsDGLjqo,168
|
254
|
-
plexflow/core/plex/__pycache__/__init__.cpython-312.pyc,sha256=
|
254
|
+
plexflow/core/plex/__pycache__/__init__.cpython-312.pyc,sha256=wPLlqh8DRnmJd2cth67496tklUb0uzxwZMMxdlnAdz0,154
|
255
255
|
plexflow/core/plex/__pycache__/library.cpython-311.pyc,sha256=drDZKEiegqRYaUC56CheL1uT95TzsYBkHOBZ_sd_Nec,1343
|
256
|
-
plexflow/core/plex/api/context/__pycache__/authorized.cpython-312.pyc,sha256=
|
256
|
+
plexflow/core/plex/api/context/__pycache__/authorized.cpython-312.pyc,sha256=CZa2V99SrIrCXYALIuGdGHeBV7j_4IAZ9YyyyeTMVqk,1240
|
257
257
|
plexflow/core/plex/api/context/__pycache__/discover.cpython-312.pyc,sha256=MnABH8Iy5vQZURiNWNhYDLyobDoArXMyb4VZuG0gtBE,1186
|
258
|
+
plexflow/core/plex/api/context/__pycache__/library.cpython-312.pyc,sha256=UkbC9hNCpujR9iKTzHrWpVysCqCYcd85VdDhn73O1sY,1323
|
258
259
|
plexflow/core/plex/api/context/authorized.py,sha256=o7SP1yOqiPjTNbAaeyDOHk7KRAqkWtRyCttgm4jyjK4,704
|
259
260
|
plexflow/core/plex/api/context/discover.py,sha256=WnglqoyysOEN6YmvT_O-nB1CbghJsL8flcruZ0Ovlak,714
|
260
261
|
plexflow/core/plex/api/context/library.py,sha256=b9m3K_KEIn_o6akwml0MQjgh-L7p8SZDWTKMjG1mFY4,742
|
@@ -275,18 +276,20 @@ plexflow/core/plex/hooks/plex_authorized.py,sha256=JQUNSCZssmP31EDJhHa0Y8eho4ib3
|
|
275
276
|
plexflow/core/plex/hooks/plexflow_database.py,sha256=ftdsrwT8AMogSqqfT_P1db5e69Fya7bnEszsvdCLZIo,316
|
276
277
|
plexflow/core/plex/library/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
277
278
|
plexflow/core/plex/library/__pycache__/__init__.cpython-311.pyc,sha256=9m-aTcoSl9y-zVp2COTYRH3moEp_MXOGs8xnpfGyyP4,176
|
279
|
+
plexflow/core/plex/library/__pycache__/__init__.cpython-312.pyc,sha256=WbfQgOztEHUetNJ0maAX2U1eYLdTqIuivfoejtjoaIc,162
|
278
280
|
plexflow/core/plex/library/__pycache__/library.cpython-311.pyc,sha256=yL69reegO6xlOsd_QA2uLQU0Eo7By8gE4ldB_X-0IDc,4559
|
281
|
+
plexflow/core/plex/library/__pycache__/library.cpython-312.pyc,sha256=6-TJWeb3YFArriMpzfMswXsBrlp3antN7QvUxr4LBaM,4518
|
279
282
|
plexflow/core/plex/library/folders/assets/plex_asset.py,sha256=awY8vhg3KoU2uCB18y5MleE3aAUdVDTnN1OaTmm2oJc,530
|
280
283
|
plexflow/core/plex/library/folders/assets/plex_subtitle_asset.py,sha256=51itoIUbHco2HW0Mh9mGNddqwMrZA2ajwuyhVzPcXkI,521
|
281
284
|
plexflow/core/plex/library/folders/assets/plex_video_asset.py,sha256=F_7RtdtblYQJc_gp9nUVxIfS4BeHl0eZDgYmTMg2zos,208
|
282
285
|
plexflow/core/plex/library/folders/plex_folder.py,sha256=GZnyQO6bzcire-2mxPjIPJrq8J0S_4uVsOfVCiHo2E0,387
|
283
286
|
plexflow/core/plex/library/folders/plex_movie_folder.py,sha256=zPdA8cfTEiLBXdU0IMfJ-v5NVYIHnUBzgdfNcWremRs,1526
|
284
|
-
plexflow/core/plex/library/library.py,sha256
|
287
|
+
plexflow/core/plex/library/library.py,sha256=taLi0e7iY0usZPDHXwPfLmxQI5vyMyo8eJtOSHNKtww,3644
|
285
288
|
plexflow/core/plex/token/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
286
289
|
plexflow/core/plex/token/__pycache__/__init__.cpython-311.pyc,sha256=trdQUL3OxH5EHEmWYV9U1xf7PK9ig9RDpauyqI7uh34,174
|
287
|
-
plexflow/core/plex/token/__pycache__/__init__.cpython-312.pyc,sha256=
|
290
|
+
plexflow/core/plex/token/__pycache__/__init__.cpython-312.pyc,sha256=rIQN9_UVduAPposcqZUJL1RZNmPZJ9MpTadq18aFAd4,160
|
288
291
|
plexflow/core/plex/token/__pycache__/auto_token.cpython-311.pyc,sha256=jqMgOohLLdzR1pwpl3XVnQ7exp5jftTwok7B_MxYW-s,4465
|
289
|
-
plexflow/core/plex/token/__pycache__/auto_token.cpython-312.pyc,sha256=
|
292
|
+
plexflow/core/plex/token/__pycache__/auto_token.cpython-312.pyc,sha256=1uRpJbyiWsDE7Vo1AQniVXp-YXnrkqMZuXDemoEaGrI,4234
|
290
293
|
plexflow/core/plex/token/auto_token.py,sha256=CcAd6KcnI7ul5TxpdYVw_7T0ab2K3YTi8DcqHtjKt4Q,3615
|
291
294
|
plexflow/core/plex/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
292
295
|
plexflow/core/plex/utils/__pycache__/__init__.cpython-311.pyc,sha256=2b2qu_365BZcXqAU5s34hzrvKC0s2_W8OReMDlBr3Sc,174
|
@@ -378,6 +381,9 @@ plexflow/core/subtitles/results/__pycache__/__init__.cpython-312.pyc,sha256=pbtC
|
|
378
381
|
plexflow/core/subtitles/results/__pycache__/subtitle.cpython-311.pyc,sha256=CjeZEPM8DrolKN7eIIHM2kEN3gdc90yhdZssUN0ImdY,6400
|
379
382
|
plexflow/core/subtitles/results/__pycache__/subtitle.cpython-312.pyc,sha256=kDLEfwKiTgKMvis6GQ19lXs8Ybz09KV8tgMLx6D1BhE,5984
|
380
383
|
plexflow/core/subtitles/results/subtitle.py,sha256=1_xeg_l93b-gWRJEKrOSA8k1OlNOfJgotFWWsfgiUvM,3852
|
384
|
+
plexflow/core/subtitles/utils/plex_external_subtitle.py,sha256=LOhYDFZNgAhXROdJeqWwI1EeGLGpo5MQZtB0lwgIfbU,407
|
385
|
+
plexflow/core/subtitles/utils/plex_internal_subtitle.py,sha256=kFM789VRX7BuTldYmjCUG22E06xWgEej2L3U5Bp4JHI,185
|
386
|
+
plexflow/core/subtitles/utils/plex_subtitle.py,sha256=djARWfuKF7GXyeS0tm6yVtEtMATDoPl61_ja1NTWYUY,470
|
381
387
|
plexflow/core/torrents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
382
388
|
plexflow/core/torrents/__pycache__/__init__.cpython-311.pyc,sha256=Ak5TvWroVnHx7z-S-hqYzBrZyP5axDM85dpaSb4yI3o,172
|
383
389
|
plexflow/core/torrents/__pycache__/__init__.cpython-312.pyc,sha256=Dh3-EcDVLfB2Sw6dG4fNzbkxJNbbXhby2kX0kE6VCdI,158
|
@@ -568,8 +574,8 @@ plexflow/utils/antibot/__pycache__/human_like_requests.cpython-312.pyc,sha256=6f
|
|
568
574
|
plexflow/utils/antibot/human_like_requests.py,sha256=-UKo2LgJtgp7CYggxPsUT74vfXyYosdbg5f-DzaEgQU,6116
|
569
575
|
plexflow/utils/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
570
576
|
plexflow/utils/api/__pycache__/__init__.cpython-311.pyc,sha256=h5sUevkaKlWYQz-ECxScMFrE-yT8mYwUQI6CEmHaMe8,168
|
571
|
-
plexflow/utils/api/__pycache__/__init__.cpython-312.pyc,sha256=
|
572
|
-
plexflow/utils/api/context/__pycache__/http.cpython-312.pyc,sha256=
|
577
|
+
plexflow/utils/api/__pycache__/__init__.cpython-312.pyc,sha256=0hh_Jx5MF9MfULyOW7p2g9u9eaZ6QxYX0fG8_lN46Ys,154
|
578
|
+
plexflow/utils/api/context/__pycache__/http.cpython-312.pyc,sha256=US7URBJb5VkC0tBqs6wIHihhBBHdXi0Tp9sZZ1TEECU,6440
|
573
579
|
plexflow/utils/api/context/http.py,sha256=TRpEe9_QUEfkVZIMqcAtDJ7Lu5Xl53KyiwBiTHVpbms,4120
|
574
580
|
plexflow/utils/api/rest/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
575
581
|
plexflow/utils/api/rest/__pycache__/__init__.cpython-311.pyc,sha256=WWFZn7TmRF2ToVVOLwB03WIieIZDONWxTGLNPu6Kz-o,173
|
@@ -688,7 +694,7 @@ plexflow/utils/video/__pycache__/audio.cpython-312.pyc,sha256=vXBnJwWgTDFdixMBs-
|
|
688
694
|
plexflow/utils/video/__pycache__/subtitle.cpython-312.pyc,sha256=PCjpCLydGXaRsQy6cikhgsEs8WlComfOoYPiLFqfVMA,2515
|
689
695
|
plexflow/utils/video/audio.py,sha256=tJ_lNwcjVuBQYD5cYOlXpr__eh8-hnReIgNRgIYOpqo,3380
|
690
696
|
plexflow/utils/video/subtitle.py,sha256=qPvvBjlPj0fynJJvGJgGeKt9ey26R-cF6EoLaYt9iXU,1333
|
691
|
-
plexflow-0.0.
|
692
|
-
plexflow-0.0.
|
693
|
-
plexflow-0.0.
|
694
|
-
plexflow-0.0.
|
697
|
+
plexflow-0.0.110.dist-info/METADATA,sha256=3L0x0raREmHUBONysCFZjiEEFrR_IY1CrxEVah8F6Yg,3051
|
698
|
+
plexflow-0.0.110.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
|
699
|
+
plexflow-0.0.110.dist-info/entry_points.txt,sha256=SSLjrLcZa2880346VUIsCG9vcLsquf-RTX9pkdNaTO8,1498
|
700
|
+
plexflow-0.0.110.dist-info/RECORD,,
|
@@ -19,6 +19,7 @@ plex_activity_feed=scripts.plex.discover.get_activity_feed:main
|
|
19
19
|
publish_hello_world=scripts.kafka.publish_hello_world:main
|
20
20
|
read_from_gmail=scripts.plex.discover.read_from_gmail:main
|
21
21
|
redis_hook=scripts.redis.redis_hook:main
|
22
|
+
refresh=scripts.plex.library.refresh:main
|
22
23
|
schedule=scripts.downloads.qbit.schedule:main
|
23
24
|
subscribe_hello_world=scripts.kafka.subscribe_hello_world:main
|
24
25
|
tgx_context=scripts.torrents.tgx_context:main
|
File without changes
|