plexflow 0.0.74__py3-none-any.whl → 0.0.76__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.
Files changed (23) hide show
  1. plexflow/core/context/partials/__init__.py +2 -0
  2. plexflow/core/context/partials/candidates.py +15 -0
  3. plexflow/core/context/partials/universal_torrents.py +23 -0
  4. plexflow/core/downloads/__pycache__/__init__.cpython-312.pyc +0 -0
  5. plexflow/core/downloads/candidates/__pycache__/__init__.cpython-312.pyc +0 -0
  6. plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc +0 -0
  7. plexflow/core/downloads/candidates/__pycache__/utils.cpython-312.pyc +0 -0
  8. plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-312.pyc +0 -0
  9. plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-312.pyc +0 -0
  10. plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-312.pyc +0 -0
  11. plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-312.pyc +0 -0
  12. plexflow/core/subtitles/providers/oss/oss_subtitle.py +6 -1
  13. plexflow/core/subtitles/providers/oss/unlimited_oss.py +1 -0
  14. plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-312.pyc +0 -0
  15. plexflow/core/subtitles/results/__pycache__/__init__.cpython-312.pyc +0 -0
  16. plexflow/core/subtitles/results/__pycache__/subtitle.cpython-312.pyc +0 -0
  17. plexflow/core/torrents/results/__pycache__/universal.cpython-312.pyc +0 -0
  18. plexflow/core/torrents/results/__pycache__/utils.cpython-312.pyc +0 -0
  19. plexflow/core/torrents/results/universal.py +16 -1
  20. {plexflow-0.0.74.dist-info → plexflow-0.0.76.dist-info}/METADATA +1 -1
  21. {plexflow-0.0.74.dist-info → plexflow-0.0.76.dist-info}/RECORD +23 -13
  22. {plexflow-0.0.74.dist-info → plexflow-0.0.76.dist-info}/entry_points.txt +1 -0
  23. {plexflow-0.0.74.dist-info → plexflow-0.0.76.dist-info}/WHEEL +0 -0
@@ -8,3 +8,5 @@ from plexflow.core.context.partials.tgx_context import TgxRequestContext
8
8
  from plexflow.core.context.partials.tgx_batch import TgxBatch
9
9
  from plexflow.core.context.partials.reports import TorrentAnalysisReports
10
10
  from plexflow.core.context.partials.subtitles import Subtitles
11
+ from plexflow.core.context.partials.universal_torrents import UniversalTorrents
12
+ from plexflow.core.context.partials.candidates import Candidates
@@ -0,0 +1,15 @@
1
+ from plexflow.core.context.partial_context import PartialContext
2
+ from plexflow.core.downloads.candidates.download_candidate import DownloadCandidate
3
+ from typing import List
4
+
5
+ class Candidates(PartialContext):
6
+ def __init__(self, **kwargs) -> None:
7
+ super().__init__(**kwargs)
8
+
9
+ def all(self) -> List[DownloadCandidate]:
10
+ return self.get("download/candidates")
11
+
12
+ def update(self, candidates: List[DownloadCandidate]):
13
+ if len(candidates) == 0:
14
+ return
15
+ self.set("download/candidates", candidates)
@@ -0,0 +1,23 @@
1
+ from plexflow.core.context.partial_context import PartialContext
2
+ from datetime import datetime as dt
3
+ from plexflow.core.torrents.results.universal import UniversalTorrent
4
+ from typing import List
5
+
6
+ class UniversalTorrents(PartialContext):
7
+ def __init__(self, **kwargs) -> None:
8
+ super().__init__(**kwargs)
9
+
10
+ @property
11
+ def sources(self) -> list[str]:
12
+ keys = self.get_keys("universal/torrents/*")
13
+ # extract the source from the key
14
+ return [key.split("/")[-1] for key in keys]
15
+
16
+ def from_source(self, source: str) -> List[UniversalTorrent]:
17
+ return self.get(f"universal/torrents/{source}")
18
+
19
+ def update(self, torrents: List[UniversalTorrent]):
20
+ if len(torrents) == 0:
21
+ return
22
+ source = next(iter(torrents)).source
23
+ self.set(f"universal/torrents/{source}", torrents)
@@ -1,6 +1,7 @@
1
1
  from plexflow.core.subtitles.providers.oss.utils.responses import Subtitle
2
2
  from datetime import datetime
3
3
  from plexflow.utils.imdb.imdb_codes import IMDbCode
4
+ import PTN
4
5
 
5
6
  class OSSSubtitle(Subtitle):
6
7
  def __init__(self, subtitle: Subtitle):
@@ -10,7 +11,11 @@ class OSSSubtitle(Subtitle):
10
11
  @property
11
12
  def release_name(self) -> str:
12
13
  return self.subtitle.release
13
-
14
+
15
+ @property
16
+ def parsed_release_name(self) -> str:
17
+ return PTN.parse(self.release_name)
18
+
14
19
  @property
15
20
  def uploader(self) -> str:
16
21
  return self.subtitle.uploader_name
@@ -84,6 +84,7 @@ class OpenSubtitlesManager:
84
84
  Returns:
85
85
  OpenSubtitlesManager: The created instance of the OpenSubtitlesManager class.
86
86
  """
87
+ print("YAML:", yaml_file)
87
88
  with open(yaml_file, 'r') as file:
88
89
  credentials = yaml.safe_load(file)
89
90
  return cls(credentials=credentials, r=r, **kwargs)
@@ -185,7 +185,22 @@ class UniversalTorrent:
185
185
  Returns:
186
186
  bool: True if the universal torrent is compatible with the subtitle, False otherwise.
187
187
  """
188
- return any(s.name == t.release_name or s.encoder == t.encoder_name for t in self.torrents)
188
+ torrent_parsed_release_names = [t.parsed_release_name for t in self.torrents]
189
+ subtitle_parsed_release_name = s.parsed_release_name
190
+
191
+ if any(s.release_name.lower().strip() == t.release_name.lower().strip() for t in self.torrents):
192
+ return True
193
+ elif any(subtitle_parsed_release_name.get('encoder', 'NO_ENCODER_SUBTITLE').strip().lower() == parsed_release_name.get('encoder', 'NO_ENCODER_TORRENT').strip().lower() for parsed_release_name in torrent_parsed_release_names):
194
+ return True
195
+ elif any((subtitle_parsed_release_name.get('encoder', 'NO_ENCODER_SUBTITLE').strip().lower() in parsed_release_name.get('encoder', 'NO_ENCODER_TORRENT').strip().lower()
196
+ or parsed_release_name.get('encoder', 'NO_ENCODER_TORRENT').strip().lower() in subtitle_parsed_release_name.get('encoder', 'NO_ENCODER_SUBTITLE').strip().lower())
197
+ for parsed_release_name in torrent_parsed_release_names):
198
+ return True
199
+ # check for YTS
200
+ elif 'yts' in s.release_name.strip().lower() and any('yts' in t.release_name.lower().strip() for t in self.torrents):
201
+ return True
202
+
203
+ return False
189
204
 
190
205
  def __eq__(self, other):
191
206
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: plexflow
3
- Version: 0.0.74
3
+ Version: 0.0.76
4
4
  Summary: A short description of the package.
5
5
  License: MIT
6
6
  Keywords: keyword1,keyword2,keyword3
@@ -20,11 +20,12 @@ 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=Ptad0ZLRgE0FPIJlYzPIGCtrOlxU1mJzScaXzENlgY8,2010
23
- plexflow/core/context/partials/__init__.py,sha256=RJP27rewrn4uKsanH3LSDb4dxg0p10D7uRfdJshXvSc,619
23
+ plexflow/core/context/partials/__init__.py,sha256=oLSaTaAGejMIB1DtBg8xaXUbA3qK43zv48-k0HWxhjI,764
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
27
27
  plexflow/core/context/partials/cache.py,sha256=1QQ6yP69wqJiacuc2idhHsXpyUUCqavqgLk25wQB_tI,508
28
+ plexflow/core/context/partials/candidates.py,sha256=0YiMUxITmJ9c37EtlLua9E5ghqrHH2lIPFyVFIcJ15s,543
28
29
  plexflow/core/context/partials/context.py,sha256=pFzpAFxwCJdqPuhXJqhs6j4Xyvf0GQtzPRMmL4fcjEA,314
29
30
  plexflow/core/context/partials/ids.py,sha256=QoQ6FbX1OIWrE-iuz-G6kSzBlTt1_I1jyfl2JgKge2o,913
30
31
  plexflow/core/context/partials/movie.py,sha256=VXQ2SspFgGSRgDefg4VlHrH2fns3KRuKlU72ps6527o,3861
@@ -33,6 +34,7 @@ plexflow/core/context/partials/subtitles.py,sha256=Eax0rdGeTqEHkt9KNiyv097X3I1Dr
33
34
  plexflow/core/context/partials/tgx_batch.py,sha256=TduB09oBOQ8CtmPYsHIeNe7AI-ypKw21zQAX-7qktEs,859
34
35
  plexflow/core/context/partials/tgx_context.py,sha256=_FuhOvKsFqi_uynHxgC9_QIR2CfYmz-uJCRFtGFJmXI,1641
35
36
  plexflow/core/context/partials/torrents.py,sha256=U6tjdsH0qIPwe9b7XZ5ChNIos68WEKn9VgCQe0A8MQ0,772
37
+ plexflow/core/context/partials/universal_torrents.py,sha256=YVykoSo61D_8_jLd6XgwWZ4Gy6sOzhIjTpJsyvPHxuE,846
36
38
  plexflow/core/context/partials/watchlist.py,sha256=XL4H3AXHhyuhuImm3OBfrOmlc9rMvVhBJJGumQijM-c,1108
37
39
  plexflow/core/context/plexflow_context.py,sha256=_Le01owaf_0hW6BwMCvMKrKX0IRHyWGWGYTzxCWmdSE,904
38
40
  plexflow/core/context/plexflow_property.py,sha256=9eLjyHlfKKUhFo_zRwUIq_QaAGE6An4B8_HOxVJbeUo,1169
@@ -58,7 +60,11 @@ plexflow/core/context/watchlist/__pycache__/__init__.cpython-311.pyc,sha256=iwUR
58
60
  plexflow/core/context/watchlist/__pycache__/context.cpython-311.pyc,sha256=NbmRe6tzqI4BljIUesvFYaMUfYdXkVHz68SwAQCBtxg,2640
59
61
  plexflow/core/context/watchlist/context.py,sha256=_JKr1tddYLD6gemKelj_LB5t-pev_6SUIaQnl1tPX8c,1548
60
62
  plexflow/core/downloads/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ plexflow/core/downloads/__pycache__/__init__.cpython-312.pyc,sha256=zUMxgNLYel7bBvNKnVb_QBn5GPVNLTKQn2do3Ra5gEU,159
61
64
  plexflow/core/downloads/candidates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
+ plexflow/core/downloads/candidates/__pycache__/__init__.cpython-312.pyc,sha256=kt2qFZ_JTsQjlaiDAeQN7-TwVB4oXGVLUGCC5ataZ8Y,170
66
+ plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc,sha256=SG09qzDMYM-bFFkLxU-S3nynDzI6Bxn5xBfpE_rZ-Hw,9142
67
+ plexflow/core/downloads/candidates/__pycache__/utils.cpython-312.pyc,sha256=Jwoj7R4TFzjoXc3uq_Wps3WitzFE9K_miKp9XuT_l8Y,2079
62
68
  plexflow/core/downloads/candidates/download_candidate.py,sha256=KlW4GhAbp2hhDuoAphuFj3uweJE4LjwRvUNe-R7h-es,5819
63
69
  plexflow/core/downloads/candidates/filtered.py,sha256=HgUY0S3aWAeHASHTjND9hyjCtGNLhUzLOL90G2CDxKg,1842
64
70
  plexflow/core/downloads/candidates/utils.py,sha256=ahI6bvk7CHT_O0BEXsd7FtC180Swlt9Phj6_op1mhYA,1777
@@ -302,29 +308,29 @@ plexflow/core/subtitles/providers/__pycache__/__init__.cpython-311.pyc,sha256=2z
302
308
  plexflow/core/subtitles/providers/__pycache__/__init__.cpython-312.pyc,sha256=gp9rHSu09WohhuFlVII26NTnqB9maGtEsjc8rKQ7pvo,171
303
309
  plexflow/core/subtitles/providers/__pycache__/auto_subtiltes.cpython-311.pyc,sha256=Coddhp2j6Ay3oA1H5qQEHbn1qqpBLrHaINC8K-TaZqI,3857
304
310
  plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-311.pyc,sha256=BEiGR-WcFPy0Lp4bgA8ykjs081bpT5m0L3sqy6Kqfdg,3893
305
- plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-312.pyc,sha256=JqzDzkfmfCe_2Oa_XKWtvGAb7s2QbYP3ExS0xQGXB6c,3463
311
+ plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-312.pyc,sha256=_hAilgddUB2JPMtU6TREs9hACj_F-MgcVfMKtK65BUU,3463
306
312
  plexflow/core/subtitles/providers/auto_subtitles.py,sha256=lq7pEBBkrrkVjieB7uPs89v-SDlrOGbMhUzkA0pzii0,2200
307
313
  plexflow/core/subtitles/providers/oss/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
308
314
  plexflow/core/subtitles/providers/oss/__pycache__/__init__.cpython-311.pyc,sha256=fisyzWOS6ZR67F7A-k7WEaapRbm2h0mapOixVKgavqs,187
309
315
  plexflow/core/subtitles/providers/oss/__pycache__/__init__.cpython-312.pyc,sha256=H2fhQnTvVsfRSfrDSReYATGTisbG-QEA6P-AHi8y-1U,175
310
316
  plexflow/core/subtitles/providers/oss/__pycache__/datatypes.cpython-311.pyc,sha256=wCE0qHCaISXvsiDdrakvfbW8_Fww3JeG8ep2wmfwgQ4,8771
311
317
  plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-311.pyc,sha256=qyfLK7z1Yb0r5aM8KvPLeu0P1hflX5zqHEvfLtmF_hw,3733
312
- plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-312.pyc,sha256=AJ3vVJBQKuvE0xI9CrhwXDyKm2bG-gfZWNbWfn9PWgg,3307
318
+ plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-312.pyc,sha256=sG-imk-qM-JFhKtphS0tLPTACdBhw7atgFiKmunkkAE,3380
313
319
  plexflow/core/subtitles/providers/oss/__pycache__/oss.cpython-311.pyc,sha256=tbcGIfaslOGnfjwoko8TSKIGRRO4sM86Gbmy7OG9occ,21609
314
320
  plexflow/core/subtitles/providers/oss/__pycache__/oss.cpython-312.pyc,sha256=UXRE-8qiUAEkB55aYFtWb7WL8jHXozdIDGHZWkyQKRM,19694
315
321
  plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-311.pyc,sha256=IfUEII4Khd7b4vs1Ag73irbmoulk1f9uKOX9xI0vtlo,2396
316
- plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-312.pyc,sha256=0PePMgbDM2KZPA7JUib_JjKtDziyICdBDU6xBc09Lz8,2287
322
+ plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-312.pyc,sha256=VBhKFDlVJlfe_Hn0J44d73WGoJjNXUhYvWCz1O1_Mx0,2576
317
323
  plexflow/core/subtitles/providers/oss/__pycache__/search.cpython-311.pyc,sha256=Hb6ZX9B0wjeOvOMNaw-eZnPBITsINQ3Cs8cYebq-dKs,3038
318
324
  plexflow/core/subtitles/providers/oss/__pycache__/search.cpython-312.pyc,sha256=nSqaXHXI1Fe9mncp492AhLr444SMze-6QrZkdz94wr8,2662
319
325
  plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-311.pyc,sha256=OUvBlMRcl1mDpT9UnhZl9g9YZgfJj5Y8Gff2oIto1V8,12587
320
- plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-312.pyc,sha256=Z4akT251BicN1_OsJ8VWq-7b5EoPyHL-JfalKVEi0xA,11705
326
+ plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-312.pyc,sha256=UUbEBl2ixwwSvXoDaG5kfo8Um-I58o10GHZHP6eCNGE,11756
321
327
  plexflow/core/subtitles/providers/oss/datatypes.py,sha256=7YvjS8a3riEJ4yqLKzTRv5g6vftcrcoYKGcBoq0MCLo,3620
322
328
  plexflow/core/subtitles/providers/oss/download.py,sha256=xEnmslFQnHhk8gDw35ePDGF-MZo47UUvivpHFhCzhsM,2121
323
329
  plexflow/core/subtitles/providers/oss/old.py,sha256=IoZ7iIRs3FoxxJgzGrgMGNJpVXqZ3aAaadjKJJ3Lw0o,5566
324
330
  plexflow/core/subtitles/providers/oss/oss.py,sha256=m0UGVMs50-et8_RfYCOOJXPDRabBZOW8UyLiPeq83AQ,15921
325
- plexflow/core/subtitles/providers/oss/oss_subtitle.py,sha256=SuFv90Z_KUELHnAm85SpZNsH0tXKJMMgFKODYgjDmzc,879
331
+ plexflow/core/subtitles/providers/oss/oss_subtitle.py,sha256=HTsOUxBxFtqF4Ds-C7ZSOTTcypvK26Hpibsh0UMOjoM,987
326
332
  plexflow/core/subtitles/providers/oss/search.py,sha256=VKMVgaZ67Juxlvf7IRqpo1QYKVKAaJg8Zhj-NQhjoy0,1865
327
- plexflow/core/subtitles/providers/oss/unlimited_oss.py,sha256=7PN6N5-1Pc9TNQqmnIPX5Q9ZQhEAnRTrO2ExlE2xOWc,9562
333
+ plexflow/core/subtitles/providers/oss/unlimited_oss.py,sha256=6ysiAElC4nuiqNJY233Kgd172RVm3584ReXrPd6Wtz4,9596
328
334
  plexflow/core/subtitles/providers/oss/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
329
335
  plexflow/core/subtitles/providers/oss/utils/__pycache__/__init__.cpython-311.pyc,sha256=nBHOv53UkuFjaPU3Zih_W5tvdRYEmZOeySSrsa3qsGo,193
330
336
  plexflow/core/subtitles/providers/oss/utils/__pycache__/__init__.cpython-312.pyc,sha256=nWQpxGf6NgdB_p8RS6e0DO4jYZ9h8xjAc8GGiJUs8wk,181
@@ -339,7 +345,7 @@ plexflow/core/subtitles/providers/oss/utils/__pycache__/file_utils.cpython-312.p
339
345
  plexflow/core/subtitles/providers/oss/utils/__pycache__/languages.cpython-311.pyc,sha256=0k4-Lqv1r5D3ZNxeo-xGbyLLFM_ZRvDheuO-WZtnP_s,2788
340
346
  plexflow/core/subtitles/providers/oss/utils/__pycache__/languages.cpython-312.pyc,sha256=rY8WBgZ40MSUZvvoFMsVm5aZcB64UGWXtlu5ZCKUGvc,2734
341
347
  plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-311.pyc,sha256=Xf9Lx6enEAsRsU1tBeNyR7E-TVJimX9C0V5qNYjJsL8,11167
342
- plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-312.pyc,sha256=nmd6BPGFRcn5qowE2VzZ7mHxiE3wedijDRKxzU-jUyU,10003
348
+ plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-312.pyc,sha256=FU7rAhL1o_uO3ipIAnZxcg9Tq3u86Tr18IUY6wQbb5w,9992
343
349
  plexflow/core/subtitles/providers/oss/utils/__pycache__/responses.cpython-311.pyc,sha256=I1CDautiTgrgGU-SdCxemjszBHhq85lxIMVBdfOOUDs,14585
344
350
  plexflow/core/subtitles/providers/oss/utils/__pycache__/responses.cpython-312.pyc,sha256=9dCyif_w_KUPIfjlysUfQ4WIZwoYwVTxMasfqXSBhKU,12499
345
351
  plexflow/core/subtitles/providers/oss/utils/__pycache__/srt.cpython-311.pyc,sha256=bp8nzSZkZ_751NHl6wiT5wFTO9R-WaZkaqHmON9FfXY,23929
@@ -353,7 +359,9 @@ plexflow/core/subtitles/providers/oss/utils/response_base.py,sha256=APjsR4OqYrKe
353
359
  plexflow/core/subtitles/providers/oss/utils/responses.py,sha256=QRTjZymSn3EWqMjteXy1apRtNDKej614D2YB1_m_v2c,7954
354
360
  plexflow/core/subtitles/providers/oss/utils/srt.py,sha256=riEuy9_1m4kZEu-Ey8bgvQUfr5ce0_Nu95GFe6Qh_u8,21041
355
361
  plexflow/core/subtitles/results/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
362
+ plexflow/core/subtitles/results/__pycache__/__init__.cpython-312.pyc,sha256=KSV9si5eK6ydXfjkOjJ24xK5kKeQYbw2_s38n-48Gvo,167
356
363
  plexflow/core/subtitles/results/__pycache__/subtitle.cpython-311.pyc,sha256=CjeZEPM8DrolKN7eIIHM2kEN3gdc90yhdZssUN0ImdY,6400
364
+ plexflow/core/subtitles/results/__pycache__/subtitle.cpython-312.pyc,sha256=p61FniRetRyEVqFapGtGt_r_8ldHG30XNyEl7iYx7wM,5984
357
365
  plexflow/core/subtitles/results/subtitle.py,sha256=1_xeg_l93b-gWRJEKrOSA8k1OlNOfJgotFWWsfgiUvM,3852
358
366
  plexflow/core/torrents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
359
367
  plexflow/core/torrents/__pycache__/__init__.cpython-311.pyc,sha256=Ak5TvWroVnHx7z-S-hqYzBrZyP5axDM85dpaSb4yI3o,172
@@ -491,8 +499,10 @@ plexflow/core/torrents/results/__pycache__/__init__.cpython-311.pyc,sha256=FJHx4
491
499
  plexflow/core/torrents/results/__pycache__/__init__.cpython-312.pyc,sha256=ZUXrXdVtbKDOsGXTY2h9h1GTk4atgBsFSsm-ffcVUUc,168
492
500
  plexflow/core/torrents/results/__pycache__/torrent.cpython-311.pyc,sha256=SxfylbSxF9gpzXvNey4Fv9XdKLjwm0a0LYlGFhg7zAY,7655
493
501
  plexflow/core/torrents/results/__pycache__/torrent.cpython-312.pyc,sha256=6-XcS5D4UMNkJEJ-tNn8DwSROZcLYA_jm3pR8Eu-hbY,7420
502
+ plexflow/core/torrents/results/__pycache__/universal.cpython-312.pyc,sha256=HlAiFLzyDC-7NpW1Nyzj6HPdAefkUTBgUtiMIg6QKWg,14162
503
+ plexflow/core/torrents/results/__pycache__/utils.cpython-312.pyc,sha256=vqEt3jQLzZ-K_E9WV0kKz4K79AScvcg2xyOUTlAcu70,1136
494
504
  plexflow/core/torrents/results/torrent.py,sha256=xsFFOG8Wh5YslQ4d5lhrhi2I5LHGBTCdC30CU06GAKs,4770
495
- plexflow/core/torrents/results/universal.py,sha256=eU0GyxewT9XkvFbtUIaNNB-Y_aXCl7XPvb5z8VVyE1o,6614
505
+ plexflow/core/torrents/results/universal.py,sha256=ycprOMT1Px8IthmB82YhmnxeNt7P3GAcrOlEkpKoaQk,7706
496
506
  plexflow/core/torrents/results/utils.py,sha256=abiiO_QQYDpA5aMyO8WFPxnGu5sL5xfACezE5bwrnJU,691
497
507
  plexflow/events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
498
508
  plexflow/events/download/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -644,7 +654,7 @@ plexflow/utils/video/__pycache__/audio.cpython-312.pyc,sha256=vXBnJwWgTDFdixMBs-
644
654
  plexflow/utils/video/__pycache__/subtitle.cpython-312.pyc,sha256=PCjpCLydGXaRsQy6cikhgsEs8WlComfOoYPiLFqfVMA,2515
645
655
  plexflow/utils/video/audio.py,sha256=tJ_lNwcjVuBQYD5cYOlXpr__eh8-hnReIgNRgIYOpqo,3380
646
656
  plexflow/utils/video/subtitle.py,sha256=LOGONGxs_RzmqtGP-DBKreOzS1eUFEKo75Q6AfnavW0,1290
647
- plexflow-0.0.74.dist-info/METADATA,sha256=hKPMZVSCZ8bGQFm0-_8YL-IRh5Od5b4L3_CXg38bbyw,2954
648
- plexflow-0.0.74.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
649
- plexflow-0.0.74.dist-info/entry_points.txt,sha256=A-_w_iUmjrSgDtOcX-G5H3NboAAZNzwiFoQbBf4bVjg,1302
650
- plexflow-0.0.74.dist-info/RECORD,,
657
+ plexflow-0.0.76.dist-info/METADATA,sha256=QEa4LdqmRplb7pYygd90qT3FkIIoq0vZDhdQI1D-X-w,2954
658
+ plexflow-0.0.76.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
659
+ plexflow-0.0.76.dist-info/entry_points.txt,sha256=aEqDHlozu_zjWrl2sibtrqtQHMgU8kSJZrE782CP47g,1362
660
+ plexflow-0.0.76.dist-info/RECORD,,
@@ -1,6 +1,7 @@
1
1
  [console_scripts]
2
2
  audio_extract=scripts.video.audio_extract:main
3
3
  auto_torrents=scripts.torrents.auto_torrents:main
4
+ candidate_matching=scripts.torrents.candidate_matching:main
4
5
  chat_with_plexa=scripts.plex.discover.chat_with_plexa:main
5
6
  download_subtitles=scripts.subtitles.download_subtitles:main
6
7
  find_torrents=scripts.torrents.find_torrents:main