plexflow 0.0.122__tar.gz → 0.0.124__tar.gz

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 (718) hide show
  1. {plexflow-0.0.122 → plexflow-0.0.124}/PKG-INFO +1 -1
  2. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/__init__.py +1 -0
  3. plexflow-0.0.124/plexflow/core/context/partials/show.py +107 -0
  4. plexflow-0.0.124/plexflow/core/metadata/auto/__pycache__/auto_meta.cpython-312.pyc +0 -0
  5. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_meta.py +4 -1
  6. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/show.cpython-312.pyc +0 -0
  7. plexflow-0.0.124/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/episode.cpython-312.pyc +0 -0
  8. plexflow-0.0.124/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/season.cpython-312.pyc +0 -0
  9. plexflow-0.0.124/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/show.cpython-312.pyc +0 -0
  10. plexflow-0.0.124/plexflow/core/metadata/auto/auto_providers/plex/episode.py +29 -0
  11. plexflow-0.0.124/plexflow/core/metadata/auto/auto_providers/plex/season.py +25 -0
  12. plexflow-0.0.124/plexflow/core/metadata/auto/auto_providers/plex/show.py +46 -0
  13. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/datatypes.cpython-312.pyc +0 -0
  14. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/datatypes.py +51 -11
  15. plexflow-0.0.124/plexflow/utils/video/__pycache__/__init__.cpython-312.pyc +0 -0
  16. plexflow-0.0.124/plexflow/utils/video/__pycache__/audio.cpython-312.pyc +0 -0
  17. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/video/audio.py +51 -1
  18. {plexflow-0.0.122 → plexflow-0.0.124}/pyproject.toml +1 -1
  19. plexflow-0.0.122/plexflow/core/metadata/auto/__pycache__/auto_meta.cpython-312.pyc +0 -0
  20. plexflow-0.0.122/plexflow/utils/video/__pycache__/__init__.cpython-312.pyc +0 -0
  21. plexflow-0.0.122/plexflow/utils/video/__pycache__/audio.cpython-312.pyc +0 -0
  22. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/__init__.py +0 -0
  23. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/__main__.py +0 -0
  24. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/.DS_Store +0 -0
  25. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/__init__.py +0 -0
  26. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/__pycache__/__init__.cpython-311.pyc +0 -0
  27. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/__pycache__/__init__.cpython-312.pyc +0 -0
  28. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__init__.py +0 -0
  29. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__pycache__/__init__.cpython-311.pyc +0 -0
  30. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__pycache__/__init__.cpython-312.pyc +0 -0
  31. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__pycache__/context.cpython-311.pyc +0 -0
  32. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__pycache__/partial_context.cpython-311.pyc +0 -0
  33. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__pycache__/partial_context.cpython-312.pyc +0 -0
  34. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__pycache__/plexflow_context.cpython-311.pyc +0 -0
  35. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/__pycache__/plexflow_property.cpython-311.pyc +0 -0
  36. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/metadata/__init__.py +0 -0
  37. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/metadata/__pycache__/__init__.cpython-311.pyc +0 -0
  38. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/metadata/__pycache__/context.cpython-311.pyc +0 -0
  39. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/metadata/context.py +0 -0
  40. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/metadata/tmdb/__init__.py +0 -0
  41. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/metadata/tmdb/__pycache__/context.cpython-311.pyc +0 -0
  42. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/metadata/tmdb/context.py +0 -0
  43. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partial_context.py +0 -0
  44. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/__pycache__/__init__.cpython-311.pyc +0 -0
  45. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/__pycache__/ids.cpython-311.pyc +0 -0
  46. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/__pycache__/watchlist.cpython-311.pyc +0 -0
  47. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/cache.py +0 -0
  48. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/candidates.py +0 -0
  49. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/completed_downloads.py +0 -0
  50. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/context.py +0 -0
  51. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/ids.py +0 -0
  52. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/movie.py +0 -0
  53. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/movie_assets.py +0 -0
  54. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/reports.py +0 -0
  55. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/subtitles.py +0 -0
  56. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/tgx_batch.py +0 -0
  57. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/tgx_context.py +0 -0
  58. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/torrent_blacklist.py +0 -0
  59. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/torrent_deadline.py +0 -0
  60. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/torrents.py +0 -0
  61. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/universal_torrents.py +0 -0
  62. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/partials/watchlist.py +0 -0
  63. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/plexflow_context.py +0 -0
  64. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/plexflow_property.py +0 -0
  65. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/root/__init__.py +0 -0
  66. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/root/__pycache__/context.cpython-311.pyc +0 -0
  67. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/root/context.py +0 -0
  68. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/select/__init__.py +0 -0
  69. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/select/__pycache__/__init__.cpython-311.pyc +0 -0
  70. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/select/__pycache__/context.cpython-311.pyc +0 -0
  71. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/select/context.py +0 -0
  72. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/__init__.py +0 -0
  73. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/__pycache__/__init__.cpython-311.pyc +0 -0
  74. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/__pycache__/context.cpython-311.pyc +0 -0
  75. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/context.py +0 -0
  76. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/tpb/__init__.py +0 -0
  77. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/tpb/__pycache__/context.cpython-311.pyc +0 -0
  78. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/tpb/context.py +0 -0
  79. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/yts/__init__.py +0 -0
  80. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/yts/__pycache__/context.cpython-311.pyc +0 -0
  81. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/torrent/yts/context.py +0 -0
  82. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/watchlist/__init__.py +0 -0
  83. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/watchlist/__pycache__/__init__.cpython-311.pyc +0 -0
  84. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/watchlist/__pycache__/context.cpython-311.pyc +0 -0
  85. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/context/watchlist/context.py +0 -0
  86. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/__init__.py +0 -0
  87. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/__pycache__/__init__.cpython-312.pyc +0 -0
  88. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/__init__.py +0 -0
  89. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/__pycache__/__init__.cpython-312.pyc +0 -0
  90. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc +0 -0
  91. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/__pycache__/utils.cpython-312.pyc +0 -0
  92. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/download_candidate.py +0 -0
  93. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/filtered.py +0 -0
  94. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/rank/__pycache__/ranking.cpython-312.pyc +0 -0
  95. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/rank/__pycache__/utils.cpython-312.pyc +0 -0
  96. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/rank/ranking.py +0 -0
  97. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/rank/utils.py +0 -0
  98. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/candidates/utils.py +0 -0
  99. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/qbit/__pycache__/interface.cpython-312.pyc +0 -0
  100. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/qbit/__pycache__/schedule.cpython-312.pyc +0 -0
  101. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/qbit/interface.py +0 -0
  102. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/downloads/qbit/schedule.py +0 -0
  103. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/env/__init__.py +0 -0
  104. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/env/env.py +0 -0
  105. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/__init__.py +0 -0
  106. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/__pycache__/__init__.cpython-311.pyc +0 -0
  107. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/__pycache__/bot.cpython-311.pyc +0 -0
  108. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/__pycache__/plexa.cpython-311.pyc +0 -0
  109. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/bot.py +0 -0
  110. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/plexa.py +0 -0
  111. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/torrent/__pycache__/imdb_verify.cpython-311.pyc +0 -0
  112. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/torrent/__pycache__/movie.cpython-311.pyc +0 -0
  113. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/torrent/imdb_verify.py +0 -0
  114. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/torrent/movie.py +0 -0
  115. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/utils/__init__.py +0 -0
  116. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  117. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/utils/__pycache__/loader.cpython-311.pyc +0 -0
  118. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/genai/utils/loader.py +0 -0
  119. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/__init__.py +0 -0
  120. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/__pycache__/__init__.cpython-311.pyc +0 -0
  121. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/__pycache__/__init__.cpython-312.pyc +0 -0
  122. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/__init__.py +0 -0
  123. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/__pycache__/__init__.cpython-311.pyc +0 -0
  124. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/__pycache__/__init__.cpython-312.pyc +0 -0
  125. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/__pycache__/auto_meta.cpython-311.pyc +0 -0
  126. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/__init__.py +0 -0
  127. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/__pycache__/__init__.cpython-311.pyc +0 -0
  128. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/__pycache__/__init__.cpython-312.pyc +0 -0
  129. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/__pycache__/tmdb.cpython-311.pyc +0 -0
  130. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__init__.py +0 -0
  131. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/__init__.cpython-311.pyc +0 -0
  132. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/__init__.cpython-312.pyc +0 -0
  133. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/episode.cpython-311.pyc +0 -0
  134. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/episode.cpython-312.pyc +0 -0
  135. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/item.cpython-311.pyc +0 -0
  136. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/item.cpython-312.pyc +0 -0
  137. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/movie.cpython-311.pyc +0 -0
  138. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/movie.cpython-312.pyc +0 -0
  139. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/season.cpython-311.pyc +0 -0
  140. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/season.cpython-312.pyc +0 -0
  141. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/show.cpython-311.pyc +0 -0
  142. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/episode.py +0 -0
  143. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/item.py +0 -0
  144. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/movie.py +0 -0
  145. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/season.py +0 -0
  146. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/auto/show.py +0 -0
  147. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__init__.py +0 -0
  148. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/__init__.cpython-311.pyc +0 -0
  149. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/__init__.cpython-312.pyc +0 -0
  150. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/episode.cpython-311.pyc +0 -0
  151. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/movie.cpython-311.pyc +0 -0
  152. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/movie.cpython-312.pyc +0 -0
  153. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/season.cpython-311.pyc +0 -0
  154. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/show.cpython-311.pyc +0 -0
  155. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/show.cpython-312.pyc +0 -0
  156. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/movie.py +0 -0
  157. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/imdb/show.py +0 -0
  158. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__init__.py +0 -0
  159. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/__init__.cpython-311.pyc +0 -0
  160. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/__init__.cpython-312.pyc +0 -0
  161. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/episode.cpython-311.pyc +0 -0
  162. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/movie.cpython-311.pyc +0 -0
  163. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/movie.cpython-312.pyc +0 -0
  164. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/season.cpython-311.pyc +0 -0
  165. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/show.cpython-311.pyc +0 -0
  166. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/moviemeter/movie.py +0 -0
  167. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__init__.py +0 -0
  168. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/__init__.cpython-311.pyc +0 -0
  169. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/__init__.cpython-312.pyc +0 -0
  170. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/episode.cpython-311.pyc +0 -0
  171. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/movie.cpython-311.pyc +0 -0
  172. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/movie.cpython-312.pyc +0 -0
  173. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/season.cpython-311.pyc +0 -0
  174. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/show.cpython-311.pyc +0 -0
  175. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/plex/movie.py +0 -0
  176. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__init__.py +0 -0
  177. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/__init__.cpython-311.pyc +0 -0
  178. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/__init__.cpython-312.pyc +0 -0
  179. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/episode.cpython-311.pyc +0 -0
  180. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/episode.cpython-312.pyc +0 -0
  181. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/movie.cpython-311.pyc +0 -0
  182. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/movie.cpython-312.pyc +0 -0
  183. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/season.cpython-311.pyc +0 -0
  184. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/season.cpython-312.pyc +0 -0
  185. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/show.cpython-311.pyc +0 -0
  186. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/show.cpython-312.pyc +0 -0
  187. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/episode.py +0 -0
  188. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/movie.py +0 -0
  189. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/season.py +0 -0
  190. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb/show.py +0 -0
  191. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tmdb.py +0 -0
  192. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__init__.py +0 -0
  193. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/__init__.cpython-311.pyc +0 -0
  194. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/__init__.cpython-312.pyc +0 -0
  195. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/episode.cpython-311.pyc +0 -0
  196. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/episode.cpython-312.pyc +0 -0
  197. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/movie.cpython-311.pyc +0 -0
  198. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/movie.cpython-312.pyc +0 -0
  199. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/season.cpython-311.pyc +0 -0
  200. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/season.cpython-312.pyc +0 -0
  201. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/show.cpython-311.pyc +0 -0
  202. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/show.cpython-312.pyc +0 -0
  203. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/episode.py +0 -0
  204. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/movie.py +0 -0
  205. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/season.py +0 -0
  206. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/auto/auto_providers/tvdb/show.py +0 -0
  207. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/__init__.py +0 -0
  208. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/__pycache__/__init__.cpython-311.pyc +0 -0
  209. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/__pycache__/__init__.cpython-312.pyc +0 -0
  210. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__init__.py +0 -0
  211. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__pycache__/__init__.cpython-311.pyc +0 -0
  212. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__pycache__/__init__.cpython-312.pyc +0 -0
  213. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__pycache__/datatypes.cpython-311.pyc +0 -0
  214. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__pycache__/datatypes.cpython-312.pyc +0 -0
  215. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__pycache__/imdb.cpython-311.pyc +0 -0
  216. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__pycache__/imdb.cpython-312.pyc +0 -0
  217. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/__pycache__/tmdb.cpython-311.pyc +0 -0
  218. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/datatypes.py +0 -0
  219. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/imdb/imdb.py +0 -0
  220. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__init__.py +0 -0
  221. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/__init__.cpython-311.pyc +0 -0
  222. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/__init__.cpython-312.pyc +0 -0
  223. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/datatypes.cpython-311.pyc +0 -0
  224. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/datatypes.cpython-312.pyc +0 -0
  225. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/imdb.cpython-311.pyc +0 -0
  226. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/moviemeter.cpython-311.pyc +0 -0
  227. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/moviemeter.cpython-312.pyc +0 -0
  228. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/__pycache__/tmdb.cpython-311.pyc +0 -0
  229. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/datatypes.py +0 -0
  230. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/moviemeter/moviemeter.py +0 -0
  231. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__init__.py +0 -0
  232. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/__init__.cpython-311.pyc +0 -0
  233. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/__init__.cpython-312.pyc +0 -0
  234. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/datatypes.cpython-311.pyc +0 -0
  235. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/imdb.cpython-311.pyc +0 -0
  236. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/moviemeter.cpython-311.pyc +0 -0
  237. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/plex.cpython-311.pyc +0 -0
  238. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/plex.cpython-312.pyc +0 -0
  239. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/__pycache__/tmdb.cpython-311.pyc +0 -0
  240. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/plex/plex.py +0 -0
  241. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/__init__.py +0 -0
  242. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/__pycache__/__init__.cpython-311.pyc +0 -0
  243. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/__pycache__/__init__.cpython-312.pyc +0 -0
  244. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/__pycache__/datatypes.cpython-311.pyc +0 -0
  245. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/__pycache__/datatypes.cpython-312.pyc +0 -0
  246. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/__pycache__/tmdb.cpython-311.pyc +0 -0
  247. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/__pycache__/tmdb.cpython-312.pyc +0 -0
  248. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/datatypes.py +0 -0
  249. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tmdb/tmdb.py +0 -0
  250. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__init__.py +0 -0
  251. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/__init__.cpython-311.pyc +0 -0
  252. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/__init__.cpython-312.pyc +0 -0
  253. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/datatypes.cpython-311.pyc +0 -0
  254. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/datatypes.cpython-312.pyc +0 -0
  255. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/tmdb.cpython-311.pyc +0 -0
  256. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/tv_datatypes.cpython-311.pyc +0 -0
  257. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/tv_datatypes.cpython-312.pyc +0 -0
  258. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/tvdb.cpython-311.pyc +0 -0
  259. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/__pycache__/tvdb.cpython-312.pyc +0 -0
  260. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/datatypes.py +0 -0
  261. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/tv_datatypes.py +0 -0
  262. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/tvdb/tvdb.py +0 -0
  263. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/universal/__init__.py +0 -0
  264. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/universal/__pycache__/__init__.cpython-311.pyc +0 -0
  265. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/universal/__pycache__/movie.cpython-311.pyc +0 -0
  266. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/universal/movie.py +0 -0
  267. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/universal/old.py +0 -0
  268. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/metadata/providers/universal/show.py +0 -0
  269. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/__init__.py +0 -0
  270. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/__pycache__/__init__.cpython-311.pyc +0 -0
  271. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/__pycache__/__init__.cpython-312.pyc +0 -0
  272. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/__pycache__/library.cpython-311.pyc +0 -0
  273. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/api/context/__pycache__/authorized.cpython-312.pyc +0 -0
  274. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/api/context/__pycache__/discover.cpython-312.pyc +0 -0
  275. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/api/context/__pycache__/library.cpython-312.pyc +0 -0
  276. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/api/context/authorized.py +0 -0
  277. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/api/context/discover.py +0 -0
  278. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/api/context/library.py +0 -0
  279. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/discover/__init__.py +0 -0
  280. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/discover/__pycache__/activity.cpython-311.pyc +0 -0
  281. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/discover/__pycache__/comment.cpython-311.pyc +0 -0
  282. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/discover/__pycache__/feed.cpython-311.pyc +0 -0
  283. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/discover/activity.py +0 -0
  284. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/discover/comment.py +0 -0
  285. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/discover/feed.py +0 -0
  286. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/__init__.py +0 -0
  287. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  288. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/__pycache__/__init__.cpython-312.pyc +0 -0
  289. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/__pycache__/plex_authorized.cpython-311.pyc +0 -0
  290. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/__pycache__/plex_authorized.cpython-312.pyc +0 -0
  291. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/__pycache__/plexflow_database.cpython-311.pyc +0 -0
  292. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/plex_authorized.py +0 -0
  293. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/hooks/plexflow_database.py +0 -0
  294. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/__init__.py +0 -0
  295. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/__pycache__/__init__.cpython-311.pyc +0 -0
  296. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/__pycache__/__init__.cpython-312.pyc +0 -0
  297. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/__pycache__/library.cpython-311.pyc +0 -0
  298. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/__pycache__/library.cpython-312.pyc +0 -0
  299. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/folders/assets/plex_asset.py +0 -0
  300. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/folders/assets/plex_subtitle_asset.py +0 -0
  301. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/folders/assets/plex_video_asset.py +0 -0
  302. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/folders/plex_folder.py +0 -0
  303. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/folders/plex_movie_folder.py +0 -0
  304. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/library/library.py +0 -0
  305. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/token/__init__.py +0 -0
  306. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/token/__pycache__/__init__.cpython-311.pyc +0 -0
  307. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/token/__pycache__/__init__.cpython-312.pyc +0 -0
  308. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/token/__pycache__/auto_token.cpython-311.pyc +0 -0
  309. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/token/__pycache__/auto_token.cpython-312.pyc +0 -0
  310. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/token/auto_token.py +0 -0
  311. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/utils/__init__.py +0 -0
  312. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  313. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  314. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/utils/__pycache__/paginated.cpython-311.pyc +0 -0
  315. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/utils/__pycache__/paginated.cpython-312.pyc +0 -0
  316. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/utils/paginated.py +0 -0
  317. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/__init__.py +0 -0
  318. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/__pycache__/__init__.cpython-311.pyc +0 -0
  319. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/__pycache__/__init__.cpython-312.pyc +0 -0
  320. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/__pycache__/datatypes.cpython-311.pyc +0 -0
  321. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/__pycache__/datatypes.cpython-312.pyc +0 -0
  322. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/__pycache__/watchlist.cpython-311.pyc +0 -0
  323. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/__pycache__/watchlist.cpython-312.pyc +0 -0
  324. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/datatypes.py +0 -0
  325. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/plex/watchlist/watchlist.py +0 -0
  326. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/__init__.py +0 -0
  327. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/__pycache__/__init__.cpython-311.pyc +0 -0
  328. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/__pycache__/__init__.cpython-312.pyc +0 -0
  329. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/__init__.py +0 -0
  330. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/__pycache__/__init__.cpython-311.pyc +0 -0
  331. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/__pycache__/__init__.cpython-312.pyc +0 -0
  332. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/__pycache__/plexflow_storage.cpython-311.pyc +0 -0
  333. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/__pycache__/plexflow_storage.cpython-312.pyc +0 -0
  334. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/__pycache__/redis_storage.cpython-311.pyc +0 -0
  335. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/__pycache__/redis_storage.cpython-312.pyc +0 -0
  336. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/plexflow_storage.py +0 -0
  337. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/storage/object/redis_storage.py +0 -0
  338. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/__init__.py +0 -0
  339. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/__pycache__/__init__.cpython-311.pyc +0 -0
  340. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/__pycache__/__init__.cpython-312.pyc +0 -0
  341. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/__init__.py +0 -0
  342. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/__pycache__/__init__.cpython-311.pyc +0 -0
  343. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/__pycache__/__init__.cpython-312.pyc +0 -0
  344. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/__pycache__/auto_subtiltes.cpython-311.pyc +0 -0
  345. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-311.pyc +0 -0
  346. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-312.pyc +0 -0
  347. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/auto_subtitles.py +0 -0
  348. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__init__.py +0 -0
  349. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/__init__.cpython-311.pyc +0 -0
  350. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/__init__.cpython-312.pyc +0 -0
  351. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/datatypes.cpython-311.pyc +0 -0
  352. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-311.pyc +0 -0
  353. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-312.pyc +0 -0
  354. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/oss.cpython-311.pyc +0 -0
  355. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/oss.cpython-312.pyc +0 -0
  356. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-311.pyc +0 -0
  357. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-312.pyc +0 -0
  358. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/search.cpython-311.pyc +0 -0
  359. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/search.cpython-312.pyc +0 -0
  360. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-311.pyc +0 -0
  361. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-312.pyc +0 -0
  362. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/datatypes.py +0 -0
  363. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/download.py +0 -0
  364. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/old.py +0 -0
  365. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/oss.py +0 -0
  366. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/oss_subtitle.py +0 -0
  367. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/search.py +0 -0
  368. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/unlimited_oss.py +0 -0
  369. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__init__.py +0 -0
  370. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  371. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  372. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/config.cpython-311.pyc +0 -0
  373. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/config.cpython-312.pyc +0 -0
  374. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/download_client.cpython-311.pyc +0 -0
  375. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/download_client.cpython-312.pyc +0 -0
  376. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/exceptions.cpython-311.pyc +0 -0
  377. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/exceptions.cpython-312.pyc +0 -0
  378. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/file_utils.cpython-311.pyc +0 -0
  379. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/file_utils.cpython-312.pyc +0 -0
  380. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/languages.cpython-311.pyc +0 -0
  381. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/languages.cpython-312.pyc +0 -0
  382. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-311.pyc +0 -0
  383. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-312.pyc +0 -0
  384. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/responses.cpython-311.pyc +0 -0
  385. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/responses.cpython-312.pyc +0 -0
  386. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/srt.cpython-311.pyc +0 -0
  387. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/__pycache__/srt.cpython-312.pyc +0 -0
  388. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/config.py +0 -0
  389. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/download_client.py +0 -0
  390. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/exceptions.py +0 -0
  391. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/file_utils.py +0 -0
  392. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/languages.py +0 -0
  393. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/response_base.py +0 -0
  394. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/responses.py +0 -0
  395. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/providers/oss/utils/srt.py +0 -0
  396. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/results/__init__.py +0 -0
  397. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/results/__pycache__/__init__.cpython-312.pyc +0 -0
  398. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/results/__pycache__/subtitle.cpython-311.pyc +0 -0
  399. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/results/__pycache__/subtitle.cpython-312.pyc +0 -0
  400. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/results/subtitle.py +0 -0
  401. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/utils/__pycache__/plex_external_subtitle.cpython-312.pyc +0 -0
  402. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/utils/__pycache__/plex_subtitle.cpython-312.pyc +0 -0
  403. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/utils/plex_external_subtitle.py +0 -0
  404. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/utils/plex_internal_subtitle.py +0 -0
  405. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/subtitles/utils/plex_subtitle.py +0 -0
  406. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/__init__.py +0 -0
  407. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/__pycache__/__init__.cpython-311.pyc +0 -0
  408. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/__pycache__/__init__.cpython-312.pyc +0 -0
  409. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/analyzers/__pycache__/analyzed_torrent.cpython-312.pyc +0 -0
  410. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/analyzers/__pycache__/analyzer.cpython-312.pyc +0 -0
  411. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/analyzers/analyzed_torrent.py +0 -0
  412. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/analyzers/analyzer.py +0 -0
  413. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/analyzers/torrentquest/__pycache__/analyzer.cpython-312.pyc +0 -0
  414. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/analyzers/torrentquest/analyzer.py +0 -0
  415. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/__pycache__/auto_torrents.cpython-312.pyc +0 -0
  416. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__init__.py +0 -0
  417. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/__init__.cpython-311.pyc +0 -0
  418. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/__init__.cpython-312.pyc +0 -0
  419. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/episode.cpython-311.pyc +0 -0
  420. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/episode.cpython-312.pyc +0 -0
  421. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/item.cpython-311.pyc +0 -0
  422. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/item.cpython-312.pyc +0 -0
  423. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/movie.cpython-311.pyc +0 -0
  424. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/movie.cpython-312.pyc +0 -0
  425. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/season.cpython-311.pyc +0 -0
  426. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/season.cpython-312.pyc +0 -0
  427. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/show.cpython-311.pyc +0 -0
  428. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/show.cpython-312.pyc +0 -0
  429. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/auto/torrent.py +0 -0
  430. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_providers/tpb/torrent.py +0 -0
  431. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/auto/auto_torrents.py +0 -0
  432. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/__init__.py +0 -0
  433. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/__pycache__/__init__.cpython-311.pyc +0 -0
  434. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/__pycache__/__init__.cpython-312.pyc +0 -0
  435. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__init__.py +0 -0
  436. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/__init__.cpython-311.pyc +0 -0
  437. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/__init__.cpython-312.pyc +0 -0
  438. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/ext.cpython-312.pyc +0 -0
  439. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/extratorrent.cpython-312.pyc +0 -0
  440. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/torrentquest.cpython-312.pyc +0 -0
  441. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/tpb.cpython-311.pyc +0 -0
  442. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/tpb.cpython-312.pyc +0 -0
  443. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/utils.cpython-311.pyc +0 -0
  444. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/__pycache__/utils.cpython-312.pyc +0 -0
  445. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/ext.py +0 -0
  446. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/ext/utils.py +0 -0
  447. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__init__.py +0 -0
  448. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/__init__.cpython-311.pyc +0 -0
  449. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/__init__.cpython-312.pyc +0 -0
  450. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/extratorrent.cpython-312.pyc +0 -0
  451. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/torrentquest.cpython-312.pyc +0 -0
  452. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/tpb.cpython-311.pyc +0 -0
  453. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/tpb.cpython-312.pyc +0 -0
  454. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/utils.cpython-311.pyc +0 -0
  455. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/__pycache__/utils.cpython-312.pyc +0 -0
  456. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/extratorrent.py +0 -0
  457. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/extratorrent/utils.py +0 -0
  458. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/eztv/__init__.py +0 -0
  459. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/eztv/__pycache__/__init__.cpython-311.pyc +0 -0
  460. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/eztv/__pycache__/eztv.cpython-311.pyc +0 -0
  461. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/eztv/__pycache__/tpb.cpython-311.pyc +0 -0
  462. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/eztv/__pycache__/utils.cpython-311.pyc +0 -0
  463. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/eztv/eztv.py +0 -0
  464. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/eztv/utils.py +0 -0
  465. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__init__.py +0 -0
  466. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/__init__.cpython-311.pyc +0 -0
  467. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/__init__.cpython-312.pyc +0 -0
  468. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/extratorrent.cpython-312.pyc +0 -0
  469. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/piratesparadise.cpython-312.pyc +0 -0
  470. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/therarbg.cpython-312.pyc +0 -0
  471. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/torrentquest.cpython-312.pyc +0 -0
  472. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/tpb.cpython-311.pyc +0 -0
  473. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/tpb.cpython-312.pyc +0 -0
  474. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/utils.cpython-311.pyc +0 -0
  475. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/__pycache__/utils.cpython-312.pyc +0 -0
  476. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/piratesparadise.py +0 -0
  477. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/piratesparadise/utils.py +0 -0
  478. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/__init__.py +0 -0
  479. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/__pycache__/__init__.cpython-311.pyc +0 -0
  480. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/__pycache__/__init__.cpython-312.pyc +0 -0
  481. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/__pycache__/rarbg2.cpython-311.pyc +0 -0
  482. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/__pycache__/rarbg2.cpython-312.pyc +0 -0
  483. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/__pycache__/utils.cpython-311.pyc +0 -0
  484. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/__pycache__/utils.cpython-312.pyc +0 -0
  485. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/rarbg2.py +0 -0
  486. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/rarbg2/utils.py +0 -0
  487. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__init__.py +0 -0
  488. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/__init__.cpython-311.pyc +0 -0
  489. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/__init__.cpython-312.pyc +0 -0
  490. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/snowfl.cpython-312.pyc +0 -0
  491. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/tpb.cpython-311.pyc +0 -0
  492. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/utils.cpython-311.pyc +0 -0
  493. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/utils.cpython-312.pyc +0 -0
  494. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/yts.cpython-311.pyc +0 -0
  495. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/__pycache__/yts.cpython-312.pyc +0 -0
  496. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/snowfl.py +0 -0
  497. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/snowfl/utils.py +0 -0
  498. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/__init__.py +0 -0
  499. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/__pycache__/__init__.cpython-311.pyc +0 -0
  500. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/__pycache__/__init__.cpython-312.pyc +0 -0
  501. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/__pycache__/context.cpython-312.pyc +0 -0
  502. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/__pycache__/dump.cpython-311.pyc +0 -0
  503. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/__pycache__/tgx.cpython-311.pyc +0 -0
  504. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/__pycache__/utils.cpython-311.pyc +0 -0
  505. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/context.py +0 -0
  506. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/dump.py +0 -0
  507. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/tgx.py +0 -0
  508. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgx/utils.py +0 -0
  509. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgxi/__init__.py +0 -0
  510. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgxi/tgxi.py +0 -0
  511. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tgxi/utils.py +0 -0
  512. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__init__.py +0 -0
  513. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/__init__.cpython-311.pyc +0 -0
  514. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/__init__.cpython-312.pyc +0 -0
  515. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/extratorrent.cpython-312.pyc +0 -0
  516. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/therarbg.cpython-312.pyc +0 -0
  517. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/torrentquest.cpython-312.pyc +0 -0
  518. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/tpb.cpython-311.pyc +0 -0
  519. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/tpb.cpython-312.pyc +0 -0
  520. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/utils.cpython-311.pyc +0 -0
  521. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/__pycache__/utils.cpython-312.pyc +0 -0
  522. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/therarbg.py +0 -0
  523. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/therarbg/utils.py +0 -0
  524. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__init__.py +0 -0
  525. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__pycache__/__init__.cpython-311.pyc +0 -0
  526. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__pycache__/__init__.cpython-312.pyc +0 -0
  527. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__pycache__/torrentquest.cpython-312.pyc +0 -0
  528. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__pycache__/tpb.cpython-311.pyc +0 -0
  529. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__pycache__/tpb.cpython-312.pyc +0 -0
  530. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__pycache__/utils.cpython-311.pyc +0 -0
  531. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/__pycache__/utils.cpython-312.pyc +0 -0
  532. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/torrentquest.py +0 -0
  533. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/torrentquest/utils.py +0 -0
  534. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/__init__.py +0 -0
  535. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/__pycache__/__init__.cpython-311.pyc +0 -0
  536. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/__pycache__/__init__.cpython-312.pyc +0 -0
  537. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/__pycache__/tpb.cpython-311.pyc +0 -0
  538. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/__pycache__/tpb.cpython-312.pyc +0 -0
  539. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/__pycache__/utils.cpython-311.pyc +0 -0
  540. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/__pycache__/utils.cpython-312.pyc +0 -0
  541. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/tpb.py +0 -0
  542. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/tpb/utils.py +0 -0
  543. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__init__.py +0 -0
  544. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__pycache__/__init__.cpython-311.pyc +0 -0
  545. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__pycache__/__init__.cpython-312.pyc +0 -0
  546. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__pycache__/tpb.cpython-311.pyc +0 -0
  547. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__pycache__/utils.cpython-311.pyc +0 -0
  548. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__pycache__/utils.cpython-312.pyc +0 -0
  549. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__pycache__/yts.cpython-311.pyc +0 -0
  550. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/__pycache__/yts.cpython-312.pyc +0 -0
  551. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/utils.py +0 -0
  552. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/providers/yts/yts.py +0 -0
  553. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/__init__.py +0 -0
  554. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/__pycache__/__init__.cpython-311.pyc +0 -0
  555. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/__pycache__/__init__.cpython-312.pyc +0 -0
  556. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/__pycache__/torrent.cpython-311.pyc +0 -0
  557. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/__pycache__/torrent.cpython-312.pyc +0 -0
  558. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/__pycache__/universal.cpython-312.pyc +0 -0
  559. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/__pycache__/utils.cpython-312.pyc +0 -0
  560. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/torrent.py +0 -0
  561. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/universal.py +0 -0
  562. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/core/torrents/results/utils.py +0 -0
  563. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/events/__init__.py +0 -0
  564. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/events/download/__init__.py +0 -0
  565. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/events/download/__pycache__/torrent_events.cpython-311.pyc +0 -0
  566. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/events/download/torrent_events.py +0 -0
  567. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/events/publish/__init__.py +0 -0
  568. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/events/publish/__pycache__/publish.cpython-311.pyc +0 -0
  569. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/events/publish/publish.py +0 -0
  570. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/logging/__init__.py +0 -0
  571. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/logging/__pycache__/__init__.cpython-311.pyc +0 -0
  572. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/logging/__pycache__/__init__.cpython-312.pyc +0 -0
  573. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/logging/__pycache__/log_setup.cpython-311.pyc +0 -0
  574. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/logging/__pycache__/log_setup.cpython-312.pyc +0 -0
  575. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/logging/log_setup.py +0 -0
  576. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/__pycache__/quiet_logger.cpython-312.pyc +0 -0
  577. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/quiet_logger.py +0 -0
  578. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/__pycache__/settings.cpython-312.pyc +0 -0
  579. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/__pycache__/spider.cpython-312.pyc +0 -0
  580. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/__pycache__/dump_json_pipeline.cpython-312.pyc +0 -0
  581. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/__pycache__/meta_pipeline.cpython-312.pyc +0 -0
  582. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/__pycache__/publish_pipeline.cpython-312.pyc +0 -0
  583. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/__pycache__/torrent_info_pipeline.cpython-312.pyc +0 -0
  584. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/__pycache__/validation_pipeline.cpython-312.pyc +0 -0
  585. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/dump_json_pipeline.py +0 -0
  586. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/meta_pipeline.py +0 -0
  587. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/publish_pipeline.py +0 -0
  588. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/torrent_info_pipeline.py +0 -0
  589. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/pipelines/validation_pipeline.py +0 -0
  590. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/settings.py +0 -0
  591. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/spiders/tgx/spider.py +0 -0
  592. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/__init__.py +0 -0
  593. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  594. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/__pycache__/__init__.cpython-312.pyc +0 -0
  595. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/antibot/__pycache__/human_like_requests.cpython-312.pyc +0 -0
  596. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/antibot/human_like_requests.py +0 -0
  597. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/__init__.py +0 -0
  598. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/__pycache__/__init__.cpython-311.pyc +0 -0
  599. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/__pycache__/__init__.cpython-312.pyc +0 -0
  600. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/context/__pycache__/http.cpython-312.pyc +0 -0
  601. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/context/http.py +0 -0
  602. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__init__.py +0 -0
  603. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__pycache__/__init__.cpython-311.pyc +0 -0
  604. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__pycache__/__init__.cpython-312.pyc +0 -0
  605. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__pycache__/antibot_restful.cpython-312.pyc +0 -0
  606. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__pycache__/plexful.cpython-312.pyc +0 -0
  607. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__pycache__/restful.cpython-311.pyc +0 -0
  608. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__pycache__/restful.cpython-312.pyc +0 -0
  609. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/__pycache__/url_builder.cpython-312.pyc +0 -0
  610. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/antibot_restful.py +0 -0
  611. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/plexful.py +0 -0
  612. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/restful.py +0 -0
  613. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/api/rest/url_builder.py +0 -0
  614. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/captcha/__init__.py +0 -0
  615. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/captcha/bypass/__init__.py +0 -0
  616. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/captcha/bypass/__pycache__/decode_audio.cpython-311.pyc +0 -0
  617. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/captcha/bypass/decode_audio.py +0 -0
  618. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/download/__init__.py +0 -0
  619. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/download/__pycache__/gz.cpython-311.pyc +0 -0
  620. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/download/gz.py +0 -0
  621. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/filesystem/__init__.py +0 -0
  622. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/filesystem/__pycache__/__init__.cpython-311.pyc +0 -0
  623. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/filesystem/__pycache__/__init__.cpython-312.pyc +0 -0
  624. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/filesystem/__pycache__/search.cpython-311.pyc +0 -0
  625. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/filesystem/__pycache__/search.cpython-312.pyc +0 -0
  626. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/filesystem/search.py +0 -0
  627. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/gmail/__init__.py +0 -0
  628. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/gmail/__pycache__/mails.cpython-311.pyc +0 -0
  629. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/gmail/mails.py +0 -0
  630. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/google/pubsub/consume.py +0 -0
  631. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/google/pubsub/produce.py +0 -0
  632. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__init__.py +0 -0
  633. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__pycache__/__init__.cpython-311.pyc +0 -0
  634. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__pycache__/__init__.cpython-312.pyc +0 -0
  635. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__pycache__/http.cpython-311.pyc +0 -0
  636. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__pycache__/http.cpython-312.pyc +0 -0
  637. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__pycache__/postgresql.cpython-311.pyc +0 -0
  638. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__pycache__/redis.cpython-311.pyc +0 -0
  639. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/__pycache__/redis.cpython-312.pyc +0 -0
  640. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/http.py +0 -0
  641. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/postgresql.py +0 -0
  642. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/hooks/redis.py +0 -0
  643. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/image/__pycache__/storage.cpython-312.pyc +0 -0
  644. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/image/storage.py +0 -0
  645. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/imdb/__init__.py +0 -0
  646. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/imdb/__pycache__/__init__.cpython-311.pyc +0 -0
  647. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/imdb/__pycache__/__init__.cpython-312.pyc +0 -0
  648. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/imdb/__pycache__/imdb_codes.cpython-311.pyc +0 -0
  649. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/imdb/__pycache__/imdb_codes.cpython-312.pyc +0 -0
  650. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/imdb/imdb_codes.py +0 -0
  651. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/llm/mistral.py +0 -0
  652. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/pubsub/__pycache__/consume.cpython-312.pyc +0 -0
  653. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/pubsub/__pycache__/produce.cpython-312.pyc +0 -0
  654. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/pubsub/consume.py +0 -0
  655. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/pubsub/produce.py +0 -0
  656. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/retry/__init__.py +0 -0
  657. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/retry/__pycache__/__init__.cpython-311.pyc +0 -0
  658. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/retry/__pycache__/__init__.cpython-312.pyc +0 -0
  659. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/retry/__pycache__/utils.cpython-311.pyc +0 -0
  660. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/retry/__pycache__/utils.cpython-312.pyc +0 -0
  661. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/retry/utils.py +0 -0
  662. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/__init__.py +0 -0
  663. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/__pycache__/__init__.cpython-312.pyc +0 -0
  664. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/__pycache__/filesize.cpython-311.pyc +0 -0
  665. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/__pycache__/filesize.cpython-312.pyc +0 -0
  666. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/__pycache__/json_extract.cpython-312.pyc +0 -0
  667. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/__pycache__/language.cpython-312.pyc +0 -0
  668. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/__pycache__/sanitize.cpython-312.pyc +0 -0
  669. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/filesize.py +0 -0
  670. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/json_extract.py +0 -0
  671. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/language.py +0 -0
  672. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/strings/sanitize.py +0 -0
  673. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/subtitle/__pycache__/search.cpython-312.pyc +0 -0
  674. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/subtitle/search.py +0 -0
  675. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/tasks/__pycache__/decorators.cpython-311.pyc +0 -0
  676. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/tasks/__pycache__/tasks.cpython-311.pyc +0 -0
  677. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/tasks/decorators.py +0 -0
  678. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/tasks/k8s/task.py +0 -0
  679. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/thread_safe/__pycache__/safe_list.cpython-312.pyc +0 -0
  680. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/thread_safe/__pycache__/safe_set.cpython-312.pyc +0 -0
  681. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/thread_safe/safe_list.py +0 -0
  682. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/thread_safe/safe_set.py +0 -0
  683. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/__init__.py +0 -0
  684. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/__pycache__/__init__.cpython-311.pyc +0 -0
  685. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/__pycache__/__init__.cpython-312.pyc +0 -0
  686. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/__pycache__/analyze.cpython-312.pyc +0 -0
  687. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/__pycache__/files.cpython-312.pyc +0 -0
  688. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/__pycache__/hash.cpython-311.pyc +0 -0
  689. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/__pycache__/hash.cpython-312.pyc +0 -0
  690. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/analyze.py +0 -0
  691. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/compare/__pycache__/with_subtitles.cpython-312.pyc +0 -0
  692. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/compare/with_subtitles.py +0 -0
  693. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/__pycache__/common.cpython-312.pyc +0 -0
  694. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/__pycache__/ext.cpython-312.pyc +0 -0
  695. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/__pycache__/extratorrent.cpython-312.pyc +0 -0
  696. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/__pycache__/piratesparadise.cpython-312.pyc +0 -0
  697. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/__pycache__/tgx.cpython-312.pyc +0 -0
  698. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/__pycache__/therarbg.cpython-312.pyc +0 -0
  699. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/__pycache__/torrentquest.cpython-312.pyc +0 -0
  700. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/common.py +0 -0
  701. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/ext.py +0 -0
  702. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/extratorrent.py +0 -0
  703. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/kat.py +0 -0
  704. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/piratesparadise.py +0 -0
  705. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/tgx.py +0 -0
  706. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/tgxi.py +0 -0
  707. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/therarbg.py +0 -0
  708. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/extract/torrentquest.py +0 -0
  709. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/files.py +0 -0
  710. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/torrent/hash.py +0 -0
  711. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/transcribe/__init__.py +0 -0
  712. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/transcribe/__pycache__/__init__.cpython-312.pyc +0 -0
  713. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/transcribe/__pycache__/speech2text.cpython-311.pyc +0 -0
  714. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/transcribe/__pycache__/speech2text.cpython-312.pyc +0 -0
  715. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/transcribe/speech2text.py +0 -0
  716. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/video/__init__.py +0 -0
  717. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/video/__pycache__/subtitle.cpython-312.pyc +0 -0
  718. {plexflow-0.0.122 → plexflow-0.0.124}/plexflow/utils/video/subtitle.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: plexflow
3
- Version: 0.0.122
3
+ Version: 0.0.124
4
4
  Summary: A short description of the package.
5
5
  License: MIT
6
6
  Keywords: keyword1,keyword2,keyword3
@@ -14,3 +14,4 @@ from plexflow.core.context.partials.completed_downloads import CompletedDownload
14
14
  from plexflow.core.context.partials.movie_assets import MovieAssets
15
15
  from plexflow.core.context.partials.torrent_deadline import TorrentDeadline
16
16
  from plexflow.core.context.partials.torrent_blacklist import TorrentBlacklist
17
+ from plexflow.core.context.partials.show import Show
@@ -0,0 +1,107 @@
1
+ from plexflow.core.context.partial_context import PartialContext
2
+ from datetime import datetime as dt
3
+ from plexflow.core.metadata.auto.auto_providers.auto.show import AutoShow
4
+ from plexflow.core.metadata.auto.auto_providers.tmdb.show import AutoTmdbShow
5
+ from plexflow.core.metadata.auto.auto_providers.tvdb.show import AutoTvdbShow
6
+ from plexflow.core.metadata.auto.auto_providers.imdb.show import AutoImdbShow
7
+ from plexflow.core.metadata.auto.auto_providers.plex.show import AutoPlexShow
8
+
9
+ class Show(PartialContext):
10
+ def __init__(self, **kwargs) -> None:
11
+ super().__init__(**kwargs)
12
+
13
+ @property
14
+ def sources(self) -> list:
15
+ keys = self.get_keys("show/*")
16
+ # extract the source from the key
17
+ return [key.split("/")[-1] for key in keys]
18
+
19
+ def from_source(self, source: str) -> AutoShow:
20
+ return self.get(f"show/{source}")
21
+
22
+ @property
23
+ def title(self) -> str:
24
+ for source in self.sources:
25
+ details = self.from_source(source)
26
+ if details and details.title:
27
+ return details.title
28
+
29
+ @property
30
+ def year(self) -> int:
31
+ for source in self.sources:
32
+ details = self.from_source(source)
33
+ if details and details.year:
34
+ return details.year
35
+
36
+ @property
37
+ def release_date(self) -> dt:
38
+ for source in self.sources:
39
+ details = self.from_source(source)
40
+ if details and details.release_date:
41
+ return details.release_date
42
+
43
+ @property
44
+ def rank(self) -> int:
45
+ return self.plex.rank
46
+
47
+ @property
48
+ def released(self) -> bool:
49
+ dates = []
50
+ for source in self.sources:
51
+ details = self.from_source(source)
52
+ if details and details.release_date:
53
+ dates.append(details.release_date)
54
+
55
+ sorted_dates = sorted(dates)
56
+ now = dt.now()
57
+ return all([date < now for date in sorted_dates])
58
+
59
+ @property
60
+ def runtime(self) -> int:
61
+ for source in self.sources:
62
+ details = self.from_source(source)
63
+ if details and details.runtime:
64
+ return details.runtime
65
+
66
+ @property
67
+ def titles(self) -> set:
68
+ titles = set()
69
+ for source in self.sources:
70
+ details = self.from_source(source)
71
+ if details and details.title:
72
+ titles.add(details.title)
73
+ titles.update(details.titles)
74
+ return titles
75
+
76
+ @property
77
+ def summary(self) -> str:
78
+ for source in self.sources:
79
+ details = self.from_source(source)
80
+ if details and details.summary:
81
+ return details.summary
82
+
83
+ @property
84
+ def language(self) -> str:
85
+ for source in self.sources:
86
+ details = self.from_source(source)
87
+ if details and details.language:
88
+ return details.language
89
+
90
+ @property
91
+ def plex(self) -> AutoPlexShow:
92
+ return self.from_source("plex")
93
+
94
+ @property
95
+ def tmdb(self) -> AutoTmdbShow:
96
+ return self.from_source("tmdb")
97
+
98
+ @property
99
+ def imdb(self) -> AutoImdbShow:
100
+ return self.from_source("imdb")
101
+
102
+ @property
103
+ def tvdb(self) -> AutoTvdbShow:
104
+ return self.from_source("tvdb")
105
+
106
+ def update(self, movie: AutoShow):
107
+ self.set(f"show/{movie.source}", movie)
@@ -7,6 +7,7 @@ from plexflow.core.metadata.auto.auto_providers.imdb.movie import AutoImdbMovie
7
7
  from plexflow.core.metadata.auto.auto_providers.tmdb.show import AutoTmdbShow
8
8
  from plexflow.core.metadata.auto.auto_providers.tvdb.show import AutoTvdbShow
9
9
  from plexflow.core.metadata.auto.auto_providers.imdb.show import AutoImdbShow
10
+ from plexflow.core.metadata.auto.auto_providers.plex.show import AutoPlexShow
10
11
  from plexflow.core.metadata.auto.auto_providers.plex.movie import AutoPlexMovie
11
12
 
12
13
  class AutoMeta:
@@ -29,12 +30,14 @@ class AutoMeta:
29
30
  raise ValueError(f"Invalid source: {source}")
30
31
 
31
32
  @staticmethod
32
- def show(imdb_id: str, source: str = 'tmdb') -> AutoShow:
33
+ def show(imdb_id: str, source: str = 'tmdb', rating_key: str = None) -> AutoShow:
33
34
  if source == 'tmdb':
34
35
  return AutoTmdbShow(imdb_id)
35
36
  elif source == 'tvdb':
36
37
  return AutoTvdbShow(imdb_id)
37
38
  elif source == 'imdb':
38
39
  return AutoImdbShow(imdb_id)
40
+ elif source == 'plex':
41
+ return AutoPlexShow(rating_key=rating_key)
39
42
  else:
40
43
  raise ValueError(f"Invalid source: {source}")
@@ -0,0 +1,29 @@
1
+ from datetime import datetime
2
+ from plexflow.core.metadata.auto.auto_providers.auto.episode import AutoEpisode
3
+ from plexflow.core.metadata.auto.auto_providers.auto.season import AutoSeason
4
+ from plexflow.core.metadata.providers.plex.datatypes import PlexEpisodeMetadata
5
+
6
+ class AutoPlexEpisode(AutoEpisode):
7
+ def __init__(self, parent: AutoSeason, data: PlexEpisodeMetadata) -> None:
8
+ super().__init__(parent=parent)
9
+ self._episode = data
10
+
11
+ @property
12
+ def release_date(self) -> datetime:
13
+ return datetime.strptime(self._episode.originallyAvailableAt, '%Y-%m-%d') if self._episode.originallyAvailableAt else None
14
+
15
+ @property
16
+ def episode_number(self) -> int:
17
+ return self._episode.index
18
+
19
+ @property
20
+ def title(self) -> str:
21
+ return self._episode.title
22
+
23
+ @property
24
+ def runtime(self) -> int:
25
+ return self._episode.duration
26
+
27
+ @property
28
+ def summary(self) -> str:
29
+ return self._episode.summary
@@ -0,0 +1,25 @@
1
+ from datetime import datetime
2
+ from plexflow.core.metadata.auto.auto_providers.auto.season import AutoSeason
3
+ from plexflow.core.metadata.auto.auto_providers.auto.show import AutoShow
4
+ from plexflow.core.metadata.auto.auto_providers.auto.episode import AutoEpisode
5
+ from plexflow.core.metadata.providers.plex.datatypes import PlexSeasonMetadata
6
+ from plexflow.core.metadata.providers.plex.plex import search_episodes_by_season_rating_key
7
+ from plexflow.core.metadata.auto.auto_providers.plex.episode import AutoPlexEpisode
8
+
9
+ class AutoPlexSeason(AutoSeason):
10
+ def __init__(self, parent: AutoShow, data: PlexSeasonMetadata) -> None:
11
+ super().__init__(parent)
12
+ self._season = data
13
+
14
+ @property
15
+ def episodes(self) -> list[AutoEpisode]:
16
+ episodes = search_episodes_by_season_rating_key(key=self._season.ratingKey)
17
+ return [AutoPlexEpisode(self, episode) for episode in episodes]
18
+
19
+ @property
20
+ def release_date(self) -> datetime:
21
+ return datetime.strptime(self._season.originallyAvailableAt, '%Y-%m-%d')
22
+
23
+ @property
24
+ def season_number(self) -> int:
25
+ return self._season.index
@@ -0,0 +1,46 @@
1
+ from plexflow.core.metadata.auto.auto_providers.auto.show import AutoShow
2
+ from plexflow.core.metadata.auto.auto_providers.auto.season import AutoSeason
3
+ from plexflow.core.metadata.providers.plex.plex import search_show_by_rating_key, search_seasons_by_show_rating_key
4
+ from datetime import datetime
5
+ from plexflow.utils.imdb.imdb_codes import extract_imdb_code
6
+ from plexflow.core.metadata.auto.auto_providers.plex.season import AutoPlexSeason
7
+
8
+ class AutoPlexShow(AutoShow):
9
+ def __init__(self, rating_key: str) -> None:
10
+ self._show = search_show_by_rating_key(rating_key)
11
+ imdb_id = next((next(extract_imdb_code(g.id), None) for g in self._show.Guid), None)
12
+
13
+ super().__init__(imdb_id, 'plex')
14
+
15
+ @property
16
+ def id(self) -> str:
17
+ return self._show.ratingKey
18
+
19
+ @property
20
+ def title(self) -> str:
21
+ return self._show.title
22
+
23
+ @property
24
+ def release_date(self) -> datetime:
25
+ return datetime.strptime(self._show.originallyAvailableAt, '%Y-%m-%d')
26
+
27
+ @property
28
+ def runtime(self) -> int:
29
+ return self._show.duration // 60000 if isinstance(self._show.duration, int) else None
30
+
31
+ @property
32
+ def titles(self) -> list:
33
+ return []
34
+
35
+ @property
36
+ def summary(self) -> str:
37
+ return self._show.summary
38
+
39
+ @property
40
+ def language(self) -> str:
41
+ return None
42
+
43
+ @property
44
+ def seasons(self) -> list[AutoSeason]:
45
+ seasons = search_seasons_by_show_rating_key(key=self.id)
46
+ return [AutoPlexSeason(self, season) for season in seasons]
@@ -368,17 +368,57 @@ class PlexShowMetadata:
368
368
  _catchall (dict): A catch-all dictionary for any additional attributes.
369
369
  """
370
370
 
371
+ art: Optional[str] = None,
372
+ guid: Optional[str] = None,
373
+ key: Optional[str] = None,
374
+ primaryExtraKey: Optional[str] = None,
375
+ rating: Optional[float] = None,
376
+ ratingKey: Optional[str] = None,
377
+ studio: Optional[str] = None,
378
+ subtype: Optional[str] = None,
379
+ summary: Optional[str] = None,
380
+ tagline: Optional[str] = None,
381
+ type: Optional[str] = None,
382
+ thumb: Optional[str] = None,
383
+ addedAt: Optional[int] = None,
384
+ duration: Optional[int] = None,
385
+ publicPagesURL: Optional[str] = None,
386
+ slug: Optional[str] = None,
387
+ userState: Optional[bool] = None,
388
+ title: Optional[str] = None,
389
+ leafCount: Optional[int] = None,
390
+ childCount: Optional[int] = None,
391
+ skipChildren: Optional[bool] = None,
392
+ isContinuingSeries: Optional[bool] = None,
393
+ contentRating: Optional[str] = None,
394
+ originallyAvailableAt: Optional[str] = None,
395
+ year: Optional[int] = None,
396
+ ratingImage: Optional[str] = None,
397
+ imdbRatingCount: Optional[int] = None,
398
+ source: Optional[str] = None
399
+ Image: Optional[List[PlexImage]] = None
400
+ Guid: Optional[List[PlexGuid]] = None
401
+ Role: Optional[List[PlexRole]] = None
402
+ Country: Optional[List[PlexCountry]] = None
403
+ Director: Optional[List[PlexDirector]] = None
404
+ Writer: Optional[List[PlexWriter]] = None
405
+ Rating: Optional[List[PlexRating]] = None
406
+ Studio: Optional[List[PlexStudio]] = None
407
+ Producer: Optional[List[PlexProducer]] = None
408
+ Genre: Optional[List[PlexGenre]] = None
409
+ _catchall: dict = field(default_factory=dict)
410
+
371
411
  def __post_init__(self):
372
- self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image]
373
- self.Genre = [PlexGenre(**genre) if isinstance(genre, dict) else genre for genre in self.Genre]
374
- self.Guid = [PlexGuid(**guid) if isinstance(guid, dict) else guid for guid in self.Guid]
375
- self.Country = [PlexCountry(**country) if isinstance(country, dict) else country for country in self.Country]
376
- self.Role = [PlexRole(**role) if isinstance(role, dict) else role for role in self.Role]
377
- self.Director = [PlexDirector(**director) if isinstance(director, dict) else director for director in self.Director]
378
- self.Producer = [PlexProducer(**producer) if isinstance(producer, dict) else producer for producer in self.Producer]
379
- self.Writer = [PlexWriter(**writer) if isinstance(writer, dict) else writer for writer in self.Writer]
380
- self.Rating = [PlexRating(**rating) if isinstance(rating, dict) else rating for rating in self.Rating]
381
- self.Studio = [PlexStudio(**studio) if isinstance(studio, dict) else studio for studio in self.Studio]
412
+ self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image] if self.Image else []
413
+ self.Genre = [PlexGenre(**genre) if isinstance(genre, dict) else genre for genre in self.Genre] if self.Genre else []
414
+ self.Guid = [PlexGuid(**guid) if isinstance(guid, dict) else guid for guid in self.Guid] if self.Guid else []
415
+ self.Country = [PlexCountry(**country) if isinstance(country, dict) else country for country in self.Country] if self.Country else []
416
+ self.Role = [PlexRole(**role) if isinstance(role, dict) else role for role in self.Role] if self.Role else []
417
+ self.Director = [PlexDirector(**director) if isinstance(director, dict) else director for director in self.Director] if self.Director else []
418
+ self.Producer = [PlexProducer(**producer) if isinstance(producer, dict) else producer for producer in self.Producer] if self.Producer else []
419
+ self.Writer = [PlexWriter(**writer) if isinstance(writer, dict) else writer for writer in self.Writer] if self.Writer else []
420
+ self.Rating = [PlexRating(**rating) if isinstance(rating, dict) else rating for rating in self.Rating] if self.Rating else []
421
+ self.Studio = [PlexStudio(**studio) if isinstance(studio, dict) else studio for studio in self.Studio] if self.Studio else []
382
422
 
383
423
 
384
424
  @dataclass_json(undefined=Undefined.EXCLUDE)
@@ -614,7 +654,7 @@ class PlexEpisodeMetadata:
614
654
  _catchall: dict = field(default_factory=dict)
615
655
 
616
656
  def __post_init__(self):
617
- self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image]
657
+ self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image] if self.Image else []
618
658
  self.Guid = [PlexGuid(**guid) if isinstance(guid, dict) else guid for guid in self.Guid]
619
659
  self.Role = [PlexRole(**role) if isinstance(role, dict) else role for role in self.Role] if self.Role else []
620
660
  self.Director = [PlexDirector(**director) if isinstance(director, dict) else director for director in self.Director] if self.Director else []
@@ -2,6 +2,9 @@ import subprocess
2
2
  from pathlib import Path
3
3
  from typing import List, Optional
4
4
  import re
5
+ import json
6
+ from typing import Tuple
7
+
5
8
 
6
9
  class FFmpegError(Exception):
7
10
  """Custom exception for FFmpeg errors."""
@@ -74,6 +77,9 @@ def get_audio_stream_indices(video_path: Path) -> List[int]:
74
77
  - FileNotFoundError: If the video file does not exist.
75
78
  - FFmpegError: If ffmpeg encounters an error during processing.
76
79
  """
80
+ if isinstance(video_path, str):
81
+ video_path = Path(video_path)
82
+
77
83
  if not video_path.exists():
78
84
  raise FileNotFoundError(f"The video file {video_path} does not exist.")
79
85
 
@@ -95,4 +101,48 @@ def get_audio_stream_indices(video_path: Path) -> List[int]:
95
101
  stream_index = int(match.group(1))
96
102
  audio_indices.append(stream_index)
97
103
 
98
- return audio_indices
104
+ return audio_indices
105
+
106
+ def get_audio_stream_info(video_path: Path) -> List[Tuple[int, Optional[str]]]:
107
+ """
108
+ Retrieves the indices and language tags of audio streams in a video file using ffprobe.
109
+
110
+ Parameters:
111
+ - video_path (Path): Path to the input video file.
112
+
113
+ Returns:
114
+ - List[Tuple[int, Optional[str]]]: A list of tuples, where each tuple contains
115
+ (stream_index, language_code). language_code will be None if not found.
116
+
117
+ Raises:
118
+ - FileNotFoundError: If the video file does not exist.
119
+ - FFmpegError: If ffprobe encounters an error during processing or JSON parsing.
120
+ """
121
+ if isinstance(video_path, str):
122
+ video_path = Path(video_path)
123
+
124
+ if not video_path.exists():
125
+ raise FileNotFoundError(f"The video file {video_path} does not exist.")
126
+
127
+ command = [
128
+ 'ffprobe',
129
+ '-v', 'error', # Suppress verbose output
130
+ '-select_streams', 'a', # Select only audio streams
131
+ '-show_entries', 'stream=index:stream_tags=language', # Show index and language tag
132
+ '-of', 'json', # Output in JSON format
133
+ str(video_path)
134
+ ]
135
+
136
+ try:
137
+ result = subprocess.run(command, check=True, capture_output=True, text=True)
138
+ data = json.loads(result.stdout)
139
+
140
+ audio_stream_info = []
141
+ for s in data.get('streams', []):
142
+ index = s.get('index')
143
+ language = s.get('tags', {}).get('language')
144
+ if index is not None:
145
+ audio_stream_info.append((index, language))
146
+ return audio_stream_info
147
+ except (subprocess.CalledProcessError, json.JSONDecodeError) as e:
148
+ raise FFmpegError(f"FFprobe error: {e.stderr if isinstance(e, subprocess.CalledProcessError) else e}")
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "plexflow"
3
- version = "0.0.122"
3
+ version = "0.0.124"
4
4
  description = "A short description of the package."
5
5
  authors = ["Your Name <you@example.com>"]
6
6
  license = "MIT"