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.
@@ -1,16 +1,15 @@
1
1
  from plexflow.core.context.partial_context import PartialContext
2
- from datetime import datetime as dt
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[OSSSubtitle]:
9
+ def all(self) -> List[PlexExternalSubtitle]:
11
10
  return self.get("subtitles/oss")
12
11
 
13
- def update(self, subtitles: List[OSSSubtitle]):
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.results.subtitle import Subtitle
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[Subtitle]):
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.results.subtitle import Subtitle
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[Subtitle]) -> List[DownloadCandidate]:
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 Subtitle.
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[Subtitle]): An iterable of Subtitle objects.
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 Subtitle objects")
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
 
@@ -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.
@@ -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,6 @@
1
+
2
+ from plexflow.core.subtitles.utils.plex_subtitle import PlexSubtitle
3
+
4
+ class PlexInternalSubtitle(PlexSubtitle):
5
+ def __init__(self, path, name):
6
+ super().__init__(path, name)
@@ -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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: plexflow
3
- Version: 0.0.108
3
+ Version: 0.0.110
4
4
  Summary: A short description of the package.
5
5
  License: MIT
6
6
  Keywords: keyword1,keyword2,keyword3
@@ -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=Eax0rdGeTqEHkt9KNiyv097X3I1Drt9xb19VDalyA4Q,542
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=CUq56hnl624GvrXb5ET0-z1xnNGfbCdJu2MMPItkYnI,5927
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=ahI6bvk7CHT_O0BEXsd7FtC180Swlt9Phj6_op1mhYA,1777
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=sthMFfm9t9kxSn3dzo2wb4SjmPMlHwwwFSNvck84FJc,156
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=3Z-7Deo_fbXakjIz3wlqS-xCCbkdmxli8GSqNbiRw1I,1242
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=-Tauzv2qYQ6k2RzEatHFYMNfkg0CHZaQAmTJs4M3dok,3211
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=FNONeAwNBa5pBxgpmRPdbVi8g5lue8wOr1nosDa_XBY,162
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=wk6UddNJhqH4UfXllwZ2KANHA-jCrCDPo-9DdbH63ds,4236
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=o0h_DZgvEQGP0MxzqTX2cCZDI2czPCaoBp2BCbNY2lk,156
572
- plexflow/utils/api/context/__pycache__/http.cpython-312.pyc,sha256=ztzcErGCW78BeC0a9WlDfWkvM4If4NQn-ftUnQtaGIk,6438
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.108.dist-info/METADATA,sha256=47M47H4JC3eo95nNfFtR9jx9VBExCYSwR5MjbXR98Rc,3051
692
- plexflow-0.0.108.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
693
- plexflow-0.0.108.dist-info/entry_points.txt,sha256=uZc6ohXod3uudTgfeTqnkXBS4Cb7eajdjeqZc3P0PX4,1456
694
- plexflow-0.0.108.dist-info/RECORD,,
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