StreamingCommunity 2.5.2__py3-none-any.whl → 2.5.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of StreamingCommunity might be problematic. Click here for more details.

Files changed (268) hide show
  1. StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py +143 -143
  2. StreamingCommunity/Api/Player/Helper/Vixcloud/util.py +136 -136
  3. StreamingCommunity/Api/Player/ddl.py +89 -89
  4. StreamingCommunity/Api/Player/maxstream.py +151 -151
  5. StreamingCommunity/Api/Player/supervideo.py +193 -193
  6. StreamingCommunity/Api/Player/vixcloud.py +272 -272
  7. StreamingCommunity/Api/Site/1337xx/__init__.py +51 -50
  8. StreamingCommunity/Api/Site/1337xx/costant.py +14 -14
  9. StreamingCommunity/Api/Site/1337xx/site.py +87 -89
  10. StreamingCommunity/Api/Site/1337xx/title.py +63 -64
  11. StreamingCommunity/Api/Site/altadefinizionegratis/__init__.py +74 -50
  12. StreamingCommunity/Api/Site/altadefinizionegratis/costant.py +21 -19
  13. StreamingCommunity/Api/Site/altadefinizionegratis/film.py +81 -72
  14. StreamingCommunity/Api/Site/altadefinizionegratis/site.py +116 -94
  15. StreamingCommunity/Api/Site/animeunity/__init__.py +75 -50
  16. StreamingCommunity/Api/Site/animeunity/costant.py +21 -19
  17. StreamingCommunity/Api/Site/animeunity/film_serie.py +172 -134
  18. StreamingCommunity/Api/Site/animeunity/site.py +191 -174
  19. StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +97 -97
  20. StreamingCommunity/Api/Site/cb01new/__init__.py +51 -51
  21. StreamingCommunity/Api/Site/cb01new/costant.py +19 -19
  22. StreamingCommunity/Api/Site/cb01new/film.py +61 -71
  23. StreamingCommunity/Api/Site/cb01new/site.py +82 -82
  24. StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py +55 -55
  25. StreamingCommunity/Api/Site/ddlstreamitaly/costant.py +20 -20
  26. StreamingCommunity/Api/Site/ddlstreamitaly/series.py +150 -145
  27. StreamingCommunity/Api/Site/ddlstreamitaly/site.py +98 -98
  28. StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +84 -84
  29. StreamingCommunity/Api/Site/guardaserie/__init__.py +50 -50
  30. StreamingCommunity/Api/Site/guardaserie/costant.py +19 -19
  31. StreamingCommunity/Api/Site/guardaserie/series.py +200 -198
  32. StreamingCommunity/Api/Site/guardaserie/site.py +89 -89
  33. StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +110 -110
  34. StreamingCommunity/Api/Site/ilcorsaronero/__init__.py +51 -51
  35. StreamingCommunity/Api/Site/ilcorsaronero/costant.py +18 -18
  36. StreamingCommunity/Api/Site/ilcorsaronero/site.py +71 -71
  37. StreamingCommunity/Api/Site/ilcorsaronero/title.py +44 -44
  38. StreamingCommunity/Api/Site/ilcorsaronero/util/ilCorsarScraper.py +149 -149
  39. StreamingCommunity/Api/Site/mostraguarda/__init__.py +48 -48
  40. StreamingCommunity/Api/Site/mostraguarda/costant.py +18 -18
  41. StreamingCommunity/Api/Site/mostraguarda/film.py +90 -101
  42. StreamingCommunity/Api/Site/streamingcommunity/__init__.py +79 -55
  43. StreamingCommunity/Api/Site/streamingcommunity/costant.py +21 -19
  44. StreamingCommunity/Api/Site/streamingcommunity/film.py +86 -75
  45. StreamingCommunity/Api/Site/streamingcommunity/series.py +260 -207
  46. StreamingCommunity/Api/Site/streamingcommunity/site.py +156 -142
  47. StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +124 -124
  48. StreamingCommunity/Api/Template/Class/SearchType.py +101 -101
  49. StreamingCommunity/Api/Template/Util/__init__.py +4 -4
  50. StreamingCommunity/Api/Template/Util/get_domain.py +201 -201
  51. StreamingCommunity/Api/Template/Util/manage_ep.py +178 -178
  52. StreamingCommunity/Api/Template/Util/recall_search.py +37 -37
  53. StreamingCommunity/Api/Template/__init__.py +2 -2
  54. StreamingCommunity/Api/Template/site.py +87 -87
  55. StreamingCommunity/Lib/Downloader/HLS/downloader.py +529 -1008
  56. StreamingCommunity/Lib/Downloader/HLS/proxyes.py +110 -110
  57. StreamingCommunity/Lib/Downloader/HLS/segments.py +446 -573
  58. StreamingCommunity/Lib/Downloader/MP4/downloader.py +181 -155
  59. StreamingCommunity/Lib/Downloader/TOR/downloader.py +297 -295
  60. StreamingCommunity/Lib/Downloader/__init__.py +4 -4
  61. StreamingCommunity/Lib/FFmpeg/__init__.py +4 -4
  62. StreamingCommunity/Lib/FFmpeg/capture.py +170 -170
  63. StreamingCommunity/Lib/FFmpeg/command.py +264 -296
  64. StreamingCommunity/Lib/FFmpeg/util.py +248 -248
  65. StreamingCommunity/Lib/M3U8/__init__.py +5 -5
  66. StreamingCommunity/Lib/M3U8/decryptor.py +164 -164
  67. StreamingCommunity/Lib/M3U8/estimator.py +146 -228
  68. StreamingCommunity/Lib/M3U8/parser.py +666 -666
  69. StreamingCommunity/Lib/M3U8/url_fixer.py +57 -57
  70. StreamingCommunity/Lib/TMBD/__init__.py +1 -1
  71. StreamingCommunity/Lib/TMBD/obj_tmbd.py +39 -39
  72. StreamingCommunity/Lib/TMBD/tmdb.py +345 -345
  73. StreamingCommunity/TelegramHelp/__init__.py +0 -0
  74. StreamingCommunity/TelegramHelp/request_manager.py +82 -0
  75. StreamingCommunity/TelegramHelp/session.py +56 -0
  76. StreamingCommunity/TelegramHelp/telegram_bot.py +561 -0
  77. StreamingCommunity/Upload/update.py +75 -67
  78. StreamingCommunity/Upload/version.py +5 -5
  79. StreamingCommunity/Util/_jsonConfig.py +227 -228
  80. StreamingCommunity/Util/call_stack.py +42 -42
  81. StreamingCommunity/Util/color.py +20 -20
  82. StreamingCommunity/Util/console.py +12 -12
  83. StreamingCommunity/Util/ffmpeg_installer.py +342 -370
  84. StreamingCommunity/Util/headers.py +159 -159
  85. StreamingCommunity/Util/logger.py +61 -61
  86. StreamingCommunity/Util/message.py +36 -64
  87. StreamingCommunity/Util/os.py +500 -507
  88. StreamingCommunity/Util/table.py +271 -228
  89. StreamingCommunity/run.py +352 -245
  90. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/LICENSE +674 -674
  91. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/METADATA +601 -543
  92. StreamingCommunity-2.5.6.dist-info/RECORD +96 -0
  93. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/entry_points.txt +0 -1
  94. StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/js_parser.cpython-313.pyc +0 -0
  95. StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/js_parser.cpython-39.pyc +0 -0
  96. StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/util.cpython-313.pyc +0 -0
  97. StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/util.cpython-39.pyc +0 -0
  98. StreamingCommunity/Api/Player/__pycache__/ddl.cpython-313.pyc +0 -0
  99. StreamingCommunity/Api/Player/__pycache__/ddl.cpython-39.pyc +0 -0
  100. StreamingCommunity/Api/Player/__pycache__/maxstream.cpython-313.pyc +0 -0
  101. StreamingCommunity/Api/Player/__pycache__/maxstream.cpython-39.pyc +0 -0
  102. StreamingCommunity/Api/Player/__pycache__/supervideo.cpython-313.pyc +0 -0
  103. StreamingCommunity/Api/Player/__pycache__/supervideo.cpython-39.pyc +0 -0
  104. StreamingCommunity/Api/Player/__pycache__/vixcloud.cpython-313.pyc +0 -0
  105. StreamingCommunity/Api/Player/__pycache__/vixcloud.cpython-39.pyc +0 -0
  106. StreamingCommunity/Api/Site/1337xx/__pycache__/__init__.cpython-313.pyc +0 -0
  107. StreamingCommunity/Api/Site/1337xx/__pycache__/__init__.cpython-39.pyc +0 -0
  108. StreamingCommunity/Api/Site/1337xx/__pycache__/costant.cpython-313.pyc +0 -0
  109. StreamingCommunity/Api/Site/1337xx/__pycache__/costant.cpython-39.pyc +0 -0
  110. StreamingCommunity/Api/Site/1337xx/__pycache__/site.cpython-313.pyc +0 -0
  111. StreamingCommunity/Api/Site/1337xx/__pycache__/site.cpython-39.pyc +0 -0
  112. StreamingCommunity/Api/Site/1337xx/__pycache__/title.cpython-313.pyc +0 -0
  113. StreamingCommunity/Api/Site/1337xx/__pycache__/title.cpython-39.pyc +0 -0
  114. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/__init__.cpython-313.pyc +0 -0
  115. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/__init__.cpython-39.pyc +0 -0
  116. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/costant.cpython-313.pyc +0 -0
  117. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/costant.cpython-39.pyc +0 -0
  118. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/film.cpython-313.pyc +0 -0
  119. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/film.cpython-39.pyc +0 -0
  120. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/site.cpython-313.pyc +0 -0
  121. StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/site.cpython-39.pyc +0 -0
  122. StreamingCommunity/Api/Site/animeunity/__pycache__/__init__.cpython-313.pyc +0 -0
  123. StreamingCommunity/Api/Site/animeunity/__pycache__/__init__.cpython-39.pyc +0 -0
  124. StreamingCommunity/Api/Site/animeunity/__pycache__/costant.cpython-313.pyc +0 -0
  125. StreamingCommunity/Api/Site/animeunity/__pycache__/costant.cpython-39.pyc +0 -0
  126. StreamingCommunity/Api/Site/animeunity/__pycache__/film_serie.cpython-313.pyc +0 -0
  127. StreamingCommunity/Api/Site/animeunity/__pycache__/film_serie.cpython-39.pyc +0 -0
  128. StreamingCommunity/Api/Site/animeunity/__pycache__/site.cpython-313.pyc +0 -0
  129. StreamingCommunity/Api/Site/animeunity/__pycache__/site.cpython-39.pyc +0 -0
  130. StreamingCommunity/Api/Site/animeunity/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
  131. StreamingCommunity/Api/Site/animeunity/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
  132. StreamingCommunity/Api/Site/cb01new/__pycache__/__init__.cpython-313.pyc +0 -0
  133. StreamingCommunity/Api/Site/cb01new/__pycache__/__init__.cpython-39.pyc +0 -0
  134. StreamingCommunity/Api/Site/cb01new/__pycache__/costant.cpython-313.pyc +0 -0
  135. StreamingCommunity/Api/Site/cb01new/__pycache__/costant.cpython-39.pyc +0 -0
  136. StreamingCommunity/Api/Site/cb01new/__pycache__/film.cpython-313.pyc +0 -0
  137. StreamingCommunity/Api/Site/cb01new/__pycache__/film.cpython-39.pyc +0 -0
  138. StreamingCommunity/Api/Site/cb01new/__pycache__/site.cpython-313.pyc +0 -0
  139. StreamingCommunity/Api/Site/cb01new/__pycache__/site.cpython-39.pyc +0 -0
  140. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/__init__.cpython-313.pyc +0 -0
  141. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/__init__.cpython-39.pyc +0 -0
  142. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/costant.cpython-313.pyc +0 -0
  143. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/costant.cpython-39.pyc +0 -0
  144. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/series.cpython-313.pyc +0 -0
  145. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/series.cpython-39.pyc +0 -0
  146. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/site.cpython-313.pyc +0 -0
  147. StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/site.cpython-39.pyc +0 -0
  148. StreamingCommunity/Api/Site/ddlstreamitaly/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
  149. StreamingCommunity/Api/Site/ddlstreamitaly/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
  150. StreamingCommunity/Api/Site/guardaserie/__pycache__/__init__.cpython-313.pyc +0 -0
  151. StreamingCommunity/Api/Site/guardaserie/__pycache__/__init__.cpython-39.pyc +0 -0
  152. StreamingCommunity/Api/Site/guardaserie/__pycache__/costant.cpython-313.pyc +0 -0
  153. StreamingCommunity/Api/Site/guardaserie/__pycache__/costant.cpython-39.pyc +0 -0
  154. StreamingCommunity/Api/Site/guardaserie/__pycache__/series.cpython-313.pyc +0 -0
  155. StreamingCommunity/Api/Site/guardaserie/__pycache__/series.cpython-39.pyc +0 -0
  156. StreamingCommunity/Api/Site/guardaserie/__pycache__/site.cpython-313.pyc +0 -0
  157. StreamingCommunity/Api/Site/guardaserie/__pycache__/site.cpython-39.pyc +0 -0
  158. StreamingCommunity/Api/Site/guardaserie/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
  159. StreamingCommunity/Api/Site/guardaserie/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
  160. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/__init__.cpython-313.pyc +0 -0
  161. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/__init__.cpython-39.pyc +0 -0
  162. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/costant.cpython-313.pyc +0 -0
  163. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/costant.cpython-39.pyc +0 -0
  164. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/site.cpython-313.pyc +0 -0
  165. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/site.cpython-39.pyc +0 -0
  166. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/title.cpython-313.pyc +0 -0
  167. StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/title.cpython-39.pyc +0 -0
  168. StreamingCommunity/Api/Site/ilcorsaronero/util/__pycache__/ilCorsarScraper.cpython-313.pyc +0 -0
  169. StreamingCommunity/Api/Site/ilcorsaronero/util/__pycache__/ilCorsarScraper.cpython-39.pyc +0 -0
  170. StreamingCommunity/Api/Site/mostraguarda/__pycache__/__init__.cpython-313.pyc +0 -0
  171. StreamingCommunity/Api/Site/mostraguarda/__pycache__/__init__.cpython-39.pyc +0 -0
  172. StreamingCommunity/Api/Site/mostraguarda/__pycache__/costant.cpython-313.pyc +0 -0
  173. StreamingCommunity/Api/Site/mostraguarda/__pycache__/costant.cpython-39.pyc +0 -0
  174. StreamingCommunity/Api/Site/mostraguarda/__pycache__/film.cpython-313.pyc +0 -0
  175. StreamingCommunity/Api/Site/mostraguarda/__pycache__/film.cpython-39.pyc +0 -0
  176. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/__init__.cpython-313.pyc +0 -0
  177. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/__init__.cpython-39.pyc +0 -0
  178. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/costant.cpython-313.pyc +0 -0
  179. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/costant.cpython-39.pyc +0 -0
  180. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/film.cpython-313.pyc +0 -0
  181. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/film.cpython-39.pyc +0 -0
  182. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/series.cpython-313.pyc +0 -0
  183. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/series.cpython-39.pyc +0 -0
  184. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/site.cpython-313.pyc +0 -0
  185. StreamingCommunity/Api/Site/streamingcommunity/__pycache__/site.cpython-39.pyc +0 -0
  186. StreamingCommunity/Api/Site/streamingcommunity/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
  187. StreamingCommunity/Api/Site/streamingcommunity/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
  188. StreamingCommunity/Api/Template/Class/__pycache__/SearchType.cpython-313.pyc +0 -0
  189. StreamingCommunity/Api/Template/Class/__pycache__/SearchType.cpython-39.pyc +0 -0
  190. StreamingCommunity/Api/Template/Util/__pycache__/__init__.cpython-313.pyc +0 -0
  191. StreamingCommunity/Api/Template/Util/__pycache__/__init__.cpython-39.pyc +0 -0
  192. StreamingCommunity/Api/Template/Util/__pycache__/get_domain.cpython-313.pyc +0 -0
  193. StreamingCommunity/Api/Template/Util/__pycache__/get_domain.cpython-39.pyc +0 -0
  194. StreamingCommunity/Api/Template/Util/__pycache__/manage_ep.cpython-313.pyc +0 -0
  195. StreamingCommunity/Api/Template/Util/__pycache__/manage_ep.cpython-39.pyc +0 -0
  196. StreamingCommunity/Api/Template/Util/__pycache__/recall_search.cpython-313.pyc +0 -0
  197. StreamingCommunity/Api/Template/Util/__pycache__/recall_search.cpython-39.pyc +0 -0
  198. StreamingCommunity/Api/Template/__pycache__/__init__.cpython-313.pyc +0 -0
  199. StreamingCommunity/Api/Template/__pycache__/__init__.cpython-39.pyc +0 -0
  200. StreamingCommunity/Api/Template/__pycache__/site.cpython-313.pyc +0 -0
  201. StreamingCommunity/Api/Template/__pycache__/site.cpython-39.pyc +0 -0
  202. StreamingCommunity/Lib/Downloader/HLS/__pycache__/downloader.cpython-313.pyc +0 -0
  203. StreamingCommunity/Lib/Downloader/HLS/__pycache__/downloader.cpython-39.pyc +0 -0
  204. StreamingCommunity/Lib/Downloader/HLS/__pycache__/proxyes.cpython-313.pyc +0 -0
  205. StreamingCommunity/Lib/Downloader/HLS/__pycache__/proxyes.cpython-39.pyc +0 -0
  206. StreamingCommunity/Lib/Downloader/HLS/__pycache__/segments.cpython-313.pyc +0 -0
  207. StreamingCommunity/Lib/Downloader/HLS/__pycache__/segments.cpython-39.pyc +0 -0
  208. StreamingCommunity/Lib/Downloader/MP4/__pycache__/downloader.cpython-313.pyc +0 -0
  209. StreamingCommunity/Lib/Downloader/MP4/__pycache__/downloader.cpython-39.pyc +0 -0
  210. StreamingCommunity/Lib/Downloader/TOR/__pycache__/downloader.cpython-313.pyc +0 -0
  211. StreamingCommunity/Lib/Downloader/TOR/__pycache__/downloader.cpython-39.pyc +0 -0
  212. StreamingCommunity/Lib/Downloader/__pycache__/__init__.cpython-313.pyc +0 -0
  213. StreamingCommunity/Lib/Downloader/__pycache__/__init__.cpython-39.pyc +0 -0
  214. StreamingCommunity/Lib/FFmpeg/__pycache__/__init__.cpython-313.pyc +0 -0
  215. StreamingCommunity/Lib/FFmpeg/__pycache__/__init__.cpython-39.pyc +0 -0
  216. StreamingCommunity/Lib/FFmpeg/__pycache__/capture.cpython-313.pyc +0 -0
  217. StreamingCommunity/Lib/FFmpeg/__pycache__/capture.cpython-39.pyc +0 -0
  218. StreamingCommunity/Lib/FFmpeg/__pycache__/command.cpython-313.pyc +0 -0
  219. StreamingCommunity/Lib/FFmpeg/__pycache__/command.cpython-39.pyc +0 -0
  220. StreamingCommunity/Lib/FFmpeg/__pycache__/util.cpython-313.pyc +0 -0
  221. StreamingCommunity/Lib/FFmpeg/__pycache__/util.cpython-39.pyc +0 -0
  222. StreamingCommunity/Lib/M3U8/__pycache__/__init__.cpython-313.pyc +0 -0
  223. StreamingCommunity/Lib/M3U8/__pycache__/__init__.cpython-39.pyc +0 -0
  224. StreamingCommunity/Lib/M3U8/__pycache__/decryptor.cpython-313.pyc +0 -0
  225. StreamingCommunity/Lib/M3U8/__pycache__/decryptor.cpython-39.pyc +0 -0
  226. StreamingCommunity/Lib/M3U8/__pycache__/estimator.cpython-313.pyc +0 -0
  227. StreamingCommunity/Lib/M3U8/__pycache__/estimator.cpython-39.pyc +0 -0
  228. StreamingCommunity/Lib/M3U8/__pycache__/parser.cpython-313.pyc +0 -0
  229. StreamingCommunity/Lib/M3U8/__pycache__/parser.cpython-39.pyc +0 -0
  230. StreamingCommunity/Lib/M3U8/__pycache__/url_fixer.cpython-313.pyc +0 -0
  231. StreamingCommunity/Lib/M3U8/__pycache__/url_fixer.cpython-39.pyc +0 -0
  232. StreamingCommunity/Lib/TMBD/__pycache__/__init__.cpython-313.pyc +0 -0
  233. StreamingCommunity/Lib/TMBD/__pycache__/__init__.cpython-39.pyc +0 -0
  234. StreamingCommunity/Lib/TMBD/__pycache__/obj_tmbd.cpython-313.pyc +0 -0
  235. StreamingCommunity/Lib/TMBD/__pycache__/obj_tmbd.cpython-39.pyc +0 -0
  236. StreamingCommunity/Lib/TMBD/__pycache__/tmdb.cpython-313.pyc +0 -0
  237. StreamingCommunity/Lib/TMBD/__pycache__/tmdb.cpython-39.pyc +0 -0
  238. StreamingCommunity/Upload/__pycache__/update.cpython-313.pyc +0 -0
  239. StreamingCommunity/Upload/__pycache__/update.cpython-39.pyc +0 -0
  240. StreamingCommunity/Upload/__pycache__/version.cpython-313.pyc +0 -0
  241. StreamingCommunity/Upload/__pycache__/version.cpython-39.pyc +0 -0
  242. StreamingCommunity/Util/__pycache__/_jsonConfig.cpython-313.pyc +0 -0
  243. StreamingCommunity/Util/__pycache__/_jsonConfig.cpython-39.pyc +0 -0
  244. StreamingCommunity/Util/__pycache__/call_stack.cpython-313.pyc +0 -0
  245. StreamingCommunity/Util/__pycache__/call_stack.cpython-39.pyc +0 -0
  246. StreamingCommunity/Util/__pycache__/color.cpython-313.pyc +0 -0
  247. StreamingCommunity/Util/__pycache__/color.cpython-39.pyc +0 -0
  248. StreamingCommunity/Util/__pycache__/console.cpython-313.pyc +0 -0
  249. StreamingCommunity/Util/__pycache__/console.cpython-39.pyc +0 -0
  250. StreamingCommunity/Util/__pycache__/ffmpeg_installer.cpython-313.pyc +0 -0
  251. StreamingCommunity/Util/__pycache__/ffmpeg_installer.cpython-39.pyc +0 -0
  252. StreamingCommunity/Util/__pycache__/headers.cpython-313.pyc +0 -0
  253. StreamingCommunity/Util/__pycache__/headers.cpython-39.pyc +0 -0
  254. StreamingCommunity/Util/__pycache__/logger.cpython-313.pyc +0 -0
  255. StreamingCommunity/Util/__pycache__/logger.cpython-39.pyc +0 -0
  256. StreamingCommunity/Util/__pycache__/message.cpython-313.pyc +0 -0
  257. StreamingCommunity/Util/__pycache__/message.cpython-39.pyc +0 -0
  258. StreamingCommunity/Util/__pycache__/os.cpython-313.pyc +0 -0
  259. StreamingCommunity/Util/__pycache__/os.cpython-39.pyc +0 -0
  260. StreamingCommunity/Util/__pycache__/table.cpython-313.pyc +0 -0
  261. StreamingCommunity/Util/__pycache__/table.cpython-39.pyc +0 -0
  262. StreamingCommunity/__pycache__/__init__.cpython-313.pyc +0 -0
  263. StreamingCommunity/__pycache__/__init__.cpython-39.pyc +0 -0
  264. StreamingCommunity/__pycache__/run.cpython-313.pyc +0 -0
  265. StreamingCommunity/__pycache__/run.cpython-39.pyc +0 -0
  266. StreamingCommunity-2.5.2.dist-info/RECORD +0 -264
  267. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/WHEEL +0 -0
  268. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/top_level.txt +0 -0
@@ -1,229 +1,272 @@
1
- # 03.03.24
2
-
3
- import os
4
- import sys
5
- import logging
6
- import importlib
7
-
8
-
9
- # External library
10
- from rich.console import Console
11
- from rich.table import Table
12
- from rich.prompt import Prompt
13
- from rich.style import Style
14
- from typing import Dict, List, Any
15
-
16
-
17
- # Internal utilities
18
- from .message import start_message
19
- from .call_stack import get_call_stack
20
-
21
-
22
- class TVShowManager:
23
- def __init__(self):
24
- """
25
- Initialize TVShowManager with provided column information.
26
- """
27
- self.console = Console()
28
- self.tv_shows: List[Dict[str, Any]] = [] # List to store TV show data as dictionaries
29
- self.slice_start: int = 0
30
- self.slice_end: int = 5
31
- self.step: int = self.slice_end
32
- self.column_info = []
33
-
34
- def set_slice_end(self, new_slice: int) -> None:
35
- """
36
- Set the end of the slice for displaying TV shows.
37
-
38
- Parameters:
39
- - new_slice (int): The new value for the slice end.
40
- """
41
- self.slice_end = new_slice
42
- self.step = new_slice
43
-
44
- def add_column(self, column_info: Dict[str, Dict[str, str]]) -> None:
45
- """
46
- Add column information.
47
-
48
- Parameters:
49
- - column_info (Dict[str, Dict[str, str]]): Dictionary containing column names, their colors, and justification.
50
- """
51
- self.column_info = column_info
52
-
53
- def add_tv_show(self, tv_show: Dict[str, Any]):
54
- """
55
- Add a TV show to the list of TV shows.
56
-
57
- Parameters:
58
- - tv_show (Dict[str, Any]): Dictionary containing TV show details.
59
- """
60
- self.tv_shows.append(tv_show)
61
-
62
- def display_data(self, data_slice: List[Dict[str, Any]]):
63
- """
64
- Display TV show data in a tabular format.
65
-
66
- Parameters:
67
- - data_slice (List[Dict[str, Any]]): List of dictionaries containing TV show details to display.
68
- """
69
- table = Table(border_style="white")
70
-
71
- # Add columns dynamically based on provided column information
72
- for col_name, col_style in self.column_info.items():
73
- color = col_style.get("color", None)
74
- if color:
75
- style = Style(color=color)
76
- else:
77
- style = None
78
- table.add_column(col_name, style=style, justify='center')
79
-
80
- # Add rows dynamically based on available TV show data
81
- for entry in data_slice:
82
- # Create row data while handling missing keys
83
- row_data = [entry.get(col_name, '') for col_name in self.column_info.keys()]
84
- table.add_row(*row_data)
85
-
86
- self.console.print(table)
87
-
88
- def run_back_command(self, research_func: dict):
89
- """
90
- Executes a back-end search command by dynamically importing a module and invoking its search function.
91
-
92
- Args:
93
- research_func (dict): A dictionary containing:
94
- - 'folder' (str): The absolute path to the directory containing the module to be executed.
95
- """
96
- try:
97
-
98
- # Get site name from folder
99
- site_name = (os.path.basename(research_func['folder']))
100
-
101
- # Find the project root directory
102
- current_path = research_func['folder']
103
- while not os.path.exists(os.path.join(current_path, 'StreamingCommunity')):
104
- current_path = os.path.dirname(current_path)
105
-
106
- # Add project root to Python path
107
- project_root = current_path
108
- #print(f"[DEBUG] Project Root: {project_root}")
109
-
110
- if project_root not in sys.path:
111
- sys.path.insert(0, project_root)
112
-
113
- # Import using full absolute import
114
- module_path = f'StreamingCommunity.Api.Site.{site_name}'
115
- #print(f"[DEBUG] Importing module: {module_path}")
116
-
117
- # Import the module
118
- module = importlib.import_module(module_path)
119
-
120
- # Get the search function
121
- search_func = getattr(module, 'search')
122
-
123
- # Call the search function with the search string
124
- search_func(None)
125
-
126
- except Exception as e:
127
- self.console.print(f"[red]Error during search: {e}")
128
-
129
- # Print detailed traceback
130
- import traceback
131
- traceback.print_exc()
132
-
133
- # Optionally remove the path if you want to clean up
134
- if project_root in sys.path:
135
- sys.path.remove(project_root)
136
-
137
-
138
- def run(self, force_int_input: bool = False, max_int_input: int = 0) -> str:
139
- """
140
- Run the TV show manager application.
141
-
142
- Parameters:
143
- - force_int_input(bool): If True, only accept integer inputs from 0 to max_int_input
144
- - max_int_input (int): range of row to show
145
-
146
- Returns:
147
- str: Last command executed before breaking out of the loop.
148
- """
149
- total_items = len(self.tv_shows)
150
- last_command = "" # Variable to store the last command executed
151
-
152
- while True:
153
- start_message()
154
-
155
- # Display table
156
- self.display_data(self.tv_shows[self.slice_start:self.slice_end])
157
-
158
- # Find research function from call stack
159
- research_func = None
160
- for reverse_fun in get_call_stack():
161
- if reverse_fun['function'] == 'search' and reverse_fun['script'] == '__init__.py':
162
- research_func = reverse_fun
163
- logging.info(f"Found research_func: {research_func}")
164
-
165
- # Handling user input for loading more items or quitting
166
- if self.slice_end < total_items:
167
- self.console.print(f"\n[green]Press [red]Enter [green]for next page, [red]'q' [green]to quit, or [red]'back' [green]to search.")
168
-
169
- if not force_int_input:
170
- key = Prompt.ask(
171
- "\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
172
- "[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
173
- )
174
-
175
- else:
176
- choices = [str(i) for i in range(0, max_int_input)]
177
- choices.extend(["q", "quit", "b", "back"])
178
-
179
- key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
180
- last_command = key
181
-
182
- if key.lower() == "q" or key.lower() == "quit":
183
- break
184
-
185
- elif key == "":
186
- self.slice_start += self.step
187
- self.slice_end += self.step
188
- if self.slice_end > total_items:
189
- self.slice_end = total_items
190
-
191
- elif (key.lower() == "b" or key.lower() == "back") and research_func:
192
- self.run_back_command(research_func)
193
-
194
- else:
195
- break
196
-
197
- else:
198
- # Last slice, ensure all remaining items are shown
199
- self.console.print(f"\n [green]You've reached the end. [red]Enter [green]for first page, [red]'q' [green]to quit, or [red]'back' [green]to search.")
200
- if not force_int_input:
201
- key = Prompt.ask(
202
- "\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
203
- "[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
204
- )
205
-
206
- else:
207
- choices = [str(i) for i in range(0, max_int_input)]
208
- choices.extend(["q", "quit", "b", "back"])
209
-
210
- key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
211
- last_command = key
212
-
213
- if key.lower() == "q" or key.lower() == "quit":
214
- break
215
-
216
- elif key == "":
217
- self.slice_start = 0
218
- self.slice_end = self.step
219
-
220
- elif (key.lower() == "b" or key.lower() == "back") and research_func:
221
- self.run_back_command(research_func)
222
-
223
- else:
224
- break
225
-
226
- return last_command
227
-
228
- def clear(self):
1
+ # 03.03.24
2
+
3
+ import os
4
+ import sys
5
+ import logging
6
+ import importlib
7
+
8
+
9
+ # External library
10
+ from rich.console import Console
11
+ from rich.table import Table
12
+ from rich.prompt import Prompt
13
+ from rich.style import Style
14
+ from typing import Dict, List, Any
15
+
16
+
17
+ # Internal utilities
18
+ from .message import start_message
19
+ from .call_stack import get_call_stack
20
+
21
+ # Telegram bot instance
22
+ from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
23
+ from StreamingCommunity.Util._jsonConfig import config_manager
24
+ TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot')
25
+
26
+
27
+ class TVShowManager:
28
+ def __init__(self):
29
+ """
30
+ Initialize TVShowManager with provided column information.
31
+ """
32
+ self.console = Console()
33
+ self.tv_shows: List[Dict[str, Any]] = [] # List to store TV show data as dictionaries
34
+ self.slice_start: int = 0
35
+ self.slice_end: int = 5
36
+ self.step: int = self.slice_end
37
+ self.column_info = []
38
+
39
+ def set_slice_end(self, new_slice: int) -> None:
40
+ """
41
+ Set the end of the slice for displaying TV shows.
42
+
43
+ Parameters:
44
+ - new_slice (int): The new value for the slice end.
45
+ """
46
+ self.slice_end = new_slice
47
+ self.step = new_slice
48
+
49
+ def add_column(self, column_info: Dict[str, Dict[str, str]]) -> None:
50
+ """
51
+ Add column information.
52
+
53
+ Parameters:
54
+ - column_info (Dict[str, Dict[str, str]]): Dictionary containing column names, their colors, and justification.
55
+ """
56
+ self.column_info = column_info
57
+
58
+ def add_tv_show(self, tv_show: Dict[str, Any]):
59
+ """
60
+ Add a TV show to the list of TV shows.
61
+
62
+ Parameters:
63
+ - tv_show (Dict[str, Any]): Dictionary containing TV show details.
64
+ """
65
+ self.tv_shows.append(tv_show)
66
+
67
+ def display_data(self, data_slice: List[Dict[str, Any]]):
68
+ """
69
+ Display TV show data in a tabular format.
70
+
71
+ Parameters:
72
+ - data_slice (List[Dict[str, Any]]): List of dictionaries containing TV show details to display.
73
+ """
74
+ table = Table(border_style="white")
75
+
76
+ # Add columns dynamically based on provided column information
77
+ for col_name, col_style in self.column_info.items():
78
+ color = col_style.get("color", None)
79
+ if color:
80
+ style = Style(color=color)
81
+ else:
82
+ style = None
83
+ table.add_column(col_name, style=style, justify='center')
84
+
85
+ # Add rows dynamically based on available TV show data
86
+ for entry in data_slice:
87
+ # Create row data while handling missing keys
88
+ row_data = [entry.get(col_name, '') for col_name in self.column_info.keys()]
89
+ table.add_row(*row_data)
90
+
91
+ self.console.print(table)
92
+
93
+ def run_back_command(self, research_func: dict):
94
+ """
95
+ Executes a back-end search command by dynamically importing a module and invoking its search function.
96
+
97
+ Args:
98
+ research_func (dict): A dictionary containing:
99
+ - 'folder' (str): The absolute path to the directory containing the module to be executed.
100
+ """
101
+ try:
102
+
103
+ # Get site name from folder
104
+ site_name = (os.path.basename(research_func['folder']))
105
+
106
+ # Find the project root directory
107
+ current_path = research_func['folder']
108
+ while not os.path.exists(os.path.join(current_path, 'StreamingCommunity')):
109
+ current_path = os.path.dirname(current_path)
110
+
111
+ # Add project root to Python path
112
+ project_root = current_path
113
+ #print(f"[DEBUG] Project Root: {project_root}")
114
+
115
+ if project_root not in sys.path:
116
+ sys.path.insert(0, project_root)
117
+
118
+ # Import using full absolute import
119
+ module_path = f'StreamingCommunity.Api.Site.{site_name}'
120
+ #print(f"[DEBUG] Importing module: {module_path}")
121
+
122
+ # Import the module
123
+ module = importlib.import_module(module_path)
124
+
125
+ # Get the search function
126
+ search_func = getattr(module, 'search')
127
+
128
+ # Call the search function with the search string
129
+ search_func(None)
130
+
131
+ except Exception as e:
132
+ self.console.print(f"[red]Error during search: {e}")
133
+
134
+ # Print detailed traceback
135
+ import traceback
136
+ traceback.print_exc()
137
+
138
+ # Optionally remove the path if you want to clean up
139
+ if project_root in sys.path:
140
+ sys.path.remove(project_root)
141
+
142
+
143
+ def run(self, force_int_input: bool = False, max_int_input: int = 0) -> str:
144
+ """
145
+ Run the TV show manager application.
146
+
147
+ Parameters:
148
+ - force_int_input(bool): If True, only accept integer inputs from 0 to max_int_input
149
+ - max_int_input (int): range of row to show
150
+
151
+ Returns:
152
+ str: Last command executed before breaking out of the loop.
153
+ """
154
+ total_items = len(self.tv_shows)
155
+ last_command = "" # Variable to store the last command executed
156
+
157
+ if TELEGRAM_BOT:
158
+ bot = get_bot_instance()
159
+
160
+ while True:
161
+ start_message()
162
+
163
+ # Display table
164
+ self.display_data(self.tv_shows[self.slice_start:self.slice_end])
165
+
166
+ # Find research function from call stack
167
+ research_func = None
168
+ for reverse_fun in get_call_stack():
169
+ if reverse_fun['function'] == 'search' and reverse_fun['script'] == '__init__.py':
170
+ research_func = reverse_fun
171
+ logging.info(f"Found research_func: {research_func}")
172
+
173
+ # Handling user input for loading more items or quitting
174
+ if self.slice_end < total_items:
175
+ self.console.print(f"\n[green]Press [red]Enter [green]for next page, [red]'q' [green]to quit, or [red]'back' [green]to search.")
176
+
177
+ if not force_int_input:
178
+ if TELEGRAM_BOT:
179
+ self.console.print(f"\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
180
+ "[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end")
181
+ key = bot.ask(
182
+ "select_title_episode",
183
+ f"Inserisci l'indice dei media (ad esempio, 1), * per scaricare tutti i media, (ad esempio, 1-2) per un intervallo di media, o (ad esempio, 3-*) per scaricare dal un indice specifico fino alla fine.",
184
+ None
185
+ )
186
+ else:
187
+ key = Prompt.ask(
188
+ "\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
189
+ "[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
190
+ )
191
+
192
+ else:
193
+ choices = [str(i) for i in range(0, max_int_input)]
194
+ choices.extend(["q", "quit", "b", "back"])
195
+ if TELEGRAM_BOT:
196
+ self.console.print(f"[cyan]Insert media [red]index")
197
+ key = bot.ask(
198
+ "select_title",
199
+ f"Scegli il contenuto da scaricare:\nšŸ“ŗ Serie TV - šŸŽžļø Film - šŸŒ€ Anime\noppure `back` per tornare indietro",
200
+ None
201
+ )
202
+ else:
203
+ key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
204
+
205
+ last_command = key
206
+
207
+ if key.lower() == "q" or key.lower() == "quit":
208
+ break
209
+
210
+ elif key == "":
211
+ self.slice_start += self.step
212
+ self.slice_end += self.step
213
+ if self.slice_end > total_items:
214
+ self.slice_end = total_items
215
+
216
+ elif (key.lower() == "b" or key.lower() == "back") and research_func:
217
+ self.run_back_command(research_func)
218
+
219
+ else:
220
+ break
221
+
222
+ else:
223
+ # Last slice, ensure all remaining items are shown
224
+ self.console.print(f"\n [green]You've reached the end. [red]Enter [green]for first page, [red]'q' [green]to quit, or [red]'back' [green]to search.")
225
+ if not force_int_input:
226
+ if TELEGRAM_BOT:
227
+ self.console.print(f"\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
228
+ "[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end")
229
+ key = bot.ask(
230
+ "select_title_episode",
231
+ f"Inserisci l'indice dei media (ad esempio, 1), * per scaricare tutti i media, (ad esempio, 1-2) per un intervallo di media, o (ad esempio, 3-*) per scaricare dal un indice specifico fino alla fine.",
232
+ None
233
+ )
234
+ else:
235
+ key = Prompt.ask(
236
+ "\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
237
+ "[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
238
+ )
239
+
240
+ else:
241
+ choices = [str(i) for i in range(0, max_int_input)]
242
+ choices.extend(["q", "quit", "b", "back"])
243
+
244
+ if TELEGRAM_BOT:
245
+ self.console.print(f"[cyan]Insert media [red]index")
246
+ key = bot.ask(
247
+ "select_title",
248
+ f"Scegli il contenuto da scaricare:\nšŸ“ŗ Serie TV - šŸŽžļø Film - šŸŒ€ Anime\n oppure `back` per tornare indietro",
249
+ None
250
+ )
251
+ else:
252
+ key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
253
+
254
+ last_command = key
255
+
256
+ if key.lower() == "q" or key.lower() == "quit":
257
+ break
258
+
259
+ elif key == "":
260
+ self.slice_start = 0
261
+ self.slice_end = self.step
262
+
263
+ elif (key.lower() == "b" or key.lower() == "back") and research_func:
264
+ self.run_back_command(research_func)
265
+
266
+ else:
267
+ break
268
+
269
+ return last_command
270
+
271
+ def clear(self):
229
272
  self.tv_shows = []