StreamingCommunity 2.5.2__py3-none-any.whl → 2.5.5__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 +171 -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 +149 -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 +199 -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 +259 -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.5.dist-info}/LICENSE +674 -674
  91. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.5.dist-info}/METADATA +601 -543
  92. StreamingCommunity-2.5.5.dist-info/RECORD +96 -0
  93. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.5.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.5.dist-info}/WHEEL +0 -0
  268. {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.5.dist-info}/top_level.txt +0 -0
@@ -1,207 +1,259 @@
1
- # 3.12.23
2
-
3
- import os
4
- import sys
5
- import time
6
-
7
-
8
- # Internal utilities
9
- from StreamingCommunity.Util.console import console, msg
10
- from StreamingCommunity.Util.message import start_message
11
- from StreamingCommunity.Util.call_stack import get_call_stack
12
- from StreamingCommunity.Util.table import TVShowManager
13
- from StreamingCommunity.Lib.Downloader import HLS_Downloader
14
-
15
-
16
- # Logic class
17
- from .util.ScrapeSerie import ScrapeSerie
18
- from StreamingCommunity.Api.Template.Util import manage_selection, map_episode_title, dynamic_format_number, validate_selection, validate_episode_selection, execute_search
19
- from StreamingCommunity.Api.Template.Class.SearchType import MediaItem
20
-
21
-
22
- # Player
23
- from StreamingCommunity.Api.Player.vixcloud import VideoSource
24
-
25
-
26
- # Variable
27
- from .costant import SITE_NAME, SERIES_FOLDER
28
-
29
-
30
-
31
- def download_video(index_season_selected: int, index_episode_selected: int, scrape_serie: ScrapeSerie, video_source: VideoSource) -> str:
32
- """
33
- Download a single episode video.
34
-
35
- Parameters:
36
- - index_season_selected (int): Index of the selected season.
37
- - index_episode_selected (int): Index of the selected episode.
38
-
39
- Return:
40
- - str: output path
41
- """
42
- start_message()
43
- index_season_selected = dynamic_format_number(index_season_selected)
44
-
45
- # Get info about episode
46
- obj_episode = scrape_serie.episode_manager.get(index_episode_selected - 1)
47
- console.print(f"[yellow]Download: [red]{index_season_selected}:{index_episode_selected} {obj_episode.name}")
48
- print()
49
-
50
- # Define filename and path for the downloaded video
51
- mp4_name = f"{map_episode_title(scrape_serie.series_name, index_season_selected, index_episode_selected, obj_episode.name)}.mp4"
52
- mp4_path = os.path.join(SERIES_FOLDER, scrape_serie.series_name, f"S{index_season_selected}")
53
-
54
- # Retrieve scws and if available master playlist
55
- video_source.get_iframe(obj_episode.id)
56
- video_source.get_content()
57
- master_playlist = video_source.get_playlist()
58
-
59
- # Download the episode
60
- r_proc = HLS_Downloader(
61
- m3u8_playlist=master_playlist,
62
- output_filename=os.path.join(mp4_path, mp4_name)
63
- ).start()
64
-
65
- """if r_proc == 404:
66
- time.sleep(2)
67
-
68
- # Re call search function
69
- if msg.ask("[green]Do you want to continue [white]([red]y[white])[green] or return at home[white]([red]n[white]) ", choices=['y', 'n'], default='y', show_choices=True) == "n":
70
- frames = get_call_stack()
71
- execute_search(frames[-4])"""
72
-
73
- if r_proc != None:
74
- console.print("[green]Result: ")
75
- console.print(r_proc)
76
-
77
- return os.path.join(mp4_path, mp4_name)
78
-
79
- def download_episode(index_season_selected: int, scrape_serie: ScrapeSerie, video_source: VideoSource, download_all: bool = False) -> None:
80
- """
81
- Download episodes of a selected season.
82
-
83
- Parameters:
84
- - index_season_selected (int): Index of the selected season.
85
- - download_all (bool): Download all episodes in the season.
86
- """
87
-
88
- # Clean memory of all episodes and get the number of the season
89
- scrape_serie.episode_manager.clear()
90
-
91
- # Start message and collect information about episodes
92
- start_message()
93
- scrape_serie.collect_info_season(index_season_selected)
94
- episodes_count = scrape_serie.episode_manager.length()
95
-
96
- if download_all:
97
-
98
- # Download all episodes without asking
99
- for i_episode in range(1, episodes_count + 1):
100
- download_video(index_season_selected, i_episode, scrape_serie, video_source)
101
- console.print(f"\n[red]End downloaded [yellow]season: [red]{index_season_selected}.")
102
-
103
- else:
104
-
105
- # Display episodes list and manage user selection
106
- last_command = display_episodes_list(scrape_serie)
107
- list_episode_select = manage_selection(last_command, episodes_count)
108
-
109
- try:
110
- list_episode_select = validate_episode_selection(list_episode_select, episodes_count)
111
- except ValueError as e:
112
- console.print(f"[red]{str(e)}")
113
- return
114
-
115
- # Download selected episodes
116
- for i_episode in list_episode_select:
117
- download_video(index_season_selected, i_episode, scrape_serie, video_source)
118
-
119
- def download_series(select_season: MediaItem, version: str) -> None:
120
- """
121
- Download episodes of a TV series based on user selection.
122
-
123
- Parameters:
124
- - select_season (MediaItem): Selected media item (TV series).
125
- - domain (str): Domain from which to download.
126
- - version (str): Version of the site.
127
- """
128
-
129
- # Start message and set up video source
130
- start_message()
131
-
132
- # Init class
133
- scrape_serie = ScrapeSerie(SITE_NAME)
134
- video_source = VideoSource(SITE_NAME, True)
135
-
136
- # Setup video source
137
- scrape_serie.setup(version, select_season.id, select_season.slug)
138
- video_source.setup(select_season.id)
139
-
140
- # Collect information about seasons
141
- scrape_serie.collect_info_title()
142
- seasons_count = scrape_serie.season_manager.seasons_count
143
-
144
- # Prompt user for season selection and download episodes
145
- console.print(f"\n[green]Seasons found: [red]{seasons_count}")
146
- index_season_selected = msg.ask(
147
- "\n[cyan]Insert season number [yellow](e.g., 1), [red]* [cyan]to download all seasons, "
148
- "[yellow](e.g., 1-2) [cyan]for a range of seasons, or [yellow](e.g., 3-*) [cyan]to download from a specific season to the end"
149
- )
150
-
151
- # Manage and validate the selection
152
- list_season_select = manage_selection(index_season_selected, seasons_count)
153
-
154
- try:
155
- list_season_select = validate_selection(list_season_select, seasons_count)
156
- except ValueError as e:
157
- console.print(f"[red]{str(e)}")
158
- return
159
-
160
- # Loop through the selected seasons and download episodes
161
- for i_season in list_season_select:
162
- if len(list_season_select) > 1 or index_season_selected == "*":
163
-
164
- # Download all episodes if multiple seasons are selected or if '*' is used
165
- download_episode(i_season, scrape_serie, video_source, download_all=True)
166
- else:
167
-
168
- # Otherwise, let the user select specific episodes for the single season
169
- download_episode(i_season, scrape_serie, video_source, download_all=False)
170
-
171
-
172
- def display_episodes_list(scrape_serie) -> str:
173
- """
174
- Display episodes list and handle user input.
175
-
176
- Returns:
177
- last_command (str): Last command entered by the user.
178
- """
179
-
180
- # Set up table for displaying episodes
181
- table_show_manager = TVShowManager()
182
- table_show_manager.set_slice_end(10)
183
-
184
- # Add columns to the table
185
- column_info = {
186
- "Index": {'color': 'red'},
187
- "Name": {'color': 'magenta'},
188
- "Duration": {'color': 'green'}
189
- }
190
- table_show_manager.add_column(column_info)
191
-
192
- # Populate the table with episodes information
193
- for i, media in enumerate(scrape_serie.episode_manager.episodes):
194
- table_show_manager.add_tv_show({
195
- 'Index': str(media.number),
196
- 'Name': media.name,
197
- 'Duration': str(media.duration)
198
- })
199
-
200
- # Run the table and handle user input
201
- last_command = table_show_manager.run()
202
-
203
- if last_command == "q" or last_command == "quit":
204
- console.print("\n[red]Quit [white]...")
205
- sys.exit(0)
206
-
207
- return last_command
1
+ # 3.12.23
2
+
3
+ import os
4
+ import sys
5
+
6
+
7
+ # Internal utilities
8
+ from StreamingCommunity.Util.console import console, msg
9
+ from StreamingCommunity.Util.message import start_message
10
+ from StreamingCommunity.Util.table import TVShowManager
11
+ from StreamingCommunity.Lib.Downloader import HLS_Downloader
12
+ from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
13
+ from StreamingCommunity.TelegramHelp.session import get_session, updateScriptId, deleteScriptId
14
+
15
+
16
+ # Logic class
17
+ from .util.ScrapeSerie import ScrapeSerie
18
+ from StreamingCommunity.Api.Template.Util import manage_selection, map_episode_title, dynamic_format_number, validate_selection, validate_episode_selection
19
+ from StreamingCommunity.Api.Template.Class.SearchType import MediaItem
20
+
21
+
22
+ # Player
23
+ from StreamingCommunity.Api.Player.vixcloud import VideoSource
24
+
25
+
26
+ # Variable
27
+ from .costant import SITE_NAME, SERIES_FOLDER, TELEGRAM_BOT
28
+
29
+
30
+ def download_video(index_season_selected: int, index_episode_selected: int, scrape_serie: ScrapeSerie, video_source: VideoSource) -> tuple[str,bool]:
31
+ """
32
+ Download a single episode video.
33
+
34
+ Parameters:
35
+ - index_season_selected (int): Index of the selected season.
36
+ - index_episode_selected (int): Index of the selected episode.
37
+
38
+ Return:
39
+ - str: output path
40
+ - bool: kill handler status
41
+ """
42
+ start_message()
43
+ index_season_selected = dynamic_format_number(index_season_selected)
44
+
45
+ # Get info about episode
46
+ obj_episode = scrape_serie.episode_manager.get(index_episode_selected - 1)
47
+ console.print(f"[yellow]Download: [red]{index_season_selected}:{index_episode_selected} {obj_episode.name}")
48
+ print()
49
+
50
+ if TELEGRAM_BOT:
51
+ bot = get_bot_instance()
52
+
53
+ # Invio a telegram
54
+ bot.send_message(
55
+ f"Download in corso\nSerie: {scrape_serie.series_name}\nStagione: {index_season_selected}\nEpisodio: {index_episode_selected}\nTitolo: {obj_episode.name}",
56
+ None
57
+ )
58
+
59
+ # Get script_id and update it
60
+ script_id = get_session()
61
+ if script_id != "unknown":
62
+ updateScriptId(script_id, f"{scrape_serie.series_name} - S{index_season_selected} - E{index_episode_selected} - {obj_episode.name}")
63
+
64
+ # Define filename and path for the downloaded video
65
+ mp4_name = f"{map_episode_title(scrape_serie.series_name, index_season_selected, index_episode_selected, obj_episode.name)}.mp4"
66
+ mp4_path = os.path.join(SERIES_FOLDER, scrape_serie.series_name, f"S{index_season_selected}")
67
+
68
+ # Retrieve scws and if available master playlist
69
+ video_source.get_iframe(obj_episode.id)
70
+ video_source.get_content()
71
+ master_playlist = video_source.get_playlist()
72
+
73
+ # Download the episode
74
+ r_proc = HLS_Downloader(
75
+ m3u8_url=master_playlist,
76
+ output_path=os.path.join(mp4_path, mp4_name)
77
+ ).start()
78
+
79
+ if "error" in r_proc.keys():
80
+ try:
81
+ os.remove(r_proc['path'])
82
+ except:
83
+ pass
84
+
85
+ return r_proc['path'], r_proc['stopped']
86
+
87
+ def download_episode(index_season_selected: int, scrape_serie: ScrapeSerie, video_source: VideoSource, download_all: bool = False) -> None:
88
+ """
89
+ Download episodes of a selected season.
90
+
91
+ Parameters:
92
+ - index_season_selected (int): Index of the selected season.
93
+ - download_all (bool): Download all episodes in the season.
94
+ """
95
+
96
+ # Clean memory of all episodes and get the number of the season
97
+ scrape_serie.episode_manager.clear()
98
+
99
+ # Start message and collect information about episodes
100
+ start_message()
101
+ scrape_serie.collect_info_season(index_season_selected)
102
+ episodes_count = scrape_serie.episode_manager.length()
103
+
104
+ if download_all:
105
+
106
+ # Download all episodes without asking
107
+ for i_episode in range(1, episodes_count + 1):
108
+ path, stopped = download_video(index_season_selected, i_episode, scrape_serie, video_source)
109
+
110
+ if stopped:
111
+ break
112
+
113
+ console.print(f"\n[red]End downloaded [yellow]season: [red]{index_season_selected}.")
114
+
115
+ else:
116
+
117
+ # Display episodes list and manage user selection
118
+ last_command = display_episodes_list(scrape_serie)
119
+ list_episode_select = manage_selection(last_command, episodes_count)
120
+
121
+ try:
122
+ list_episode_select = validate_episode_selection(list_episode_select, episodes_count)
123
+ except ValueError as e:
124
+ console.print(f"[red]{str(e)}")
125
+ return
126
+
127
+ # Download selected episodes if not stopped
128
+ for i_episode in list_episode_select:
129
+ path, stopped = download_video(index_season_selected, i_episode, scrape_serie, video_source)
130
+
131
+ if stopped:
132
+ break
133
+
134
+ def download_series(select_season: MediaItem, version: str) -> None:
135
+ """
136
+ Download episodes of a TV series based on user selection.
137
+
138
+ Parameters:
139
+ - select_season (MediaItem): Selected media item (TV series).
140
+ - domain (str): Domain from which to download.
141
+ - version (str): Version of the site.
142
+ """
143
+ if TELEGRAM_BOT:
144
+ bot = get_bot_instance()
145
+
146
+ # Start message and set up video source
147
+ start_message()
148
+
149
+ # Init class
150
+ scrape_serie = ScrapeSerie(SITE_NAME)
151
+ video_source = VideoSource(SITE_NAME, True)
152
+
153
+ # Setup video source
154
+ scrape_serie.setup(version, select_season.id, select_season.slug)
155
+ video_source.setup(select_season.id)
156
+
157
+ # Collect information about seasons
158
+ scrape_serie.collect_info_title()
159
+ seasons_count = scrape_serie.season_manager.seasons_count
160
+
161
+ # Prompt user for season selection and download episodes
162
+ console.print(f"\n[green]Seasons found: [red]{seasons_count}")
163
+
164
+ if TELEGRAM_BOT:
165
+ console.print("\n[cyan]Insert season number [yellow](e.g., 1), [red]* [cyan]to download all seasons, "
166
+ "[yellow](e.g., 1-2) [cyan]for a range of seasons, or [yellow](e.g., 3-*) [cyan]to download from a specific season to the end")
167
+
168
+ bot.send_message(f"Stagioni trovate: {seasons_count}", None)
169
+
170
+ index_season_selected = bot.ask(
171
+ "select_title_episode",
172
+ "Inserisci il numero della stagione (es. 1), * per scaricare tutte le stagioni, (es. 1-2) per un intervallo di stagioni, o (es. 3-*) per scaricare dalla stagione specificata fino alla fine",
173
+ None
174
+ )
175
+
176
+ else:
177
+ index_season_selected = msg.ask(
178
+ "\n[cyan]Insert season number [yellow](e.g., 1), [red]* [cyan]to download all seasons, "
179
+ "[yellow](e.g., 1-2) [cyan]for a range of seasons, or [yellow](e.g., 3-*) [cyan]to download from a specific season to the end"
180
+ )
181
+
182
+ # Manage and validate the selection
183
+ list_season_select = manage_selection(index_season_selected, seasons_count)
184
+
185
+ try:
186
+ list_season_select = validate_selection(list_season_select, seasons_count)
187
+ except ValueError as e:
188
+ console.print(f"[red]{str(e)}")
189
+ return
190
+
191
+ # Loop through the selected seasons and download episodes
192
+ for i_season in list_season_select:
193
+ if len(list_season_select) > 1 or index_season_selected == "*":
194
+
195
+ # Download all episodes if multiple seasons are selected or if '*' is used
196
+ download_episode(i_season, scrape_serie, video_source, download_all=True)
197
+ else:
198
+
199
+ # Otherwise, let the user select specific episodes for the single season
200
+ download_episode(i_season, scrape_serie, video_source, download_all=False)
201
+
202
+ if TELEGRAM_BOT:
203
+ bot.send_message(f"Finito di scaricare tutte le serie e episodi", None)
204
+
205
+ # Get script_id
206
+ script_id = get_session()
207
+ if script_id != "unknown":
208
+ deleteScriptId(script_id)
209
+
210
+
211
+ def display_episodes_list(scrape_serie) -> str:
212
+ """
213
+ Display episodes list and handle user input.
214
+
215
+ Returns:
216
+ last_command (str): Last command entered by the user.
217
+ """
218
+ if TELEGRAM_BOT:
219
+ bot = get_bot_instance()
220
+
221
+ # Set up table for displaying episodes
222
+ table_show_manager = TVShowManager()
223
+ table_show_manager.set_slice_end(10)
224
+
225
+ # Add columns to the table
226
+ column_info = {
227
+ "Index": {'color': 'red'},
228
+ "Name": {'color': 'magenta'},
229
+ "Duration": {'color': 'green'}
230
+ }
231
+ table_show_manager.add_column(column_info)
232
+
233
+ # Populate the table with episodes information
234
+ if TELEGRAM_BOT:
235
+ choices = []
236
+
237
+ for i, media in enumerate(scrape_serie.episode_manager.episodes):
238
+ table_show_manager.add_tv_show({
239
+ 'Index': str(media.number),
240
+ 'Name': media.name,
241
+ 'Duration': str(media.duration)
242
+ })
243
+
244
+ if TELEGRAM_BOT:
245
+ choice_text = f"{media.number} - {media.name} ({media.duration} min)"
246
+ choices.append(choice_text)
247
+
248
+ if TELEGRAM_BOT:
249
+ if choices:
250
+ bot.send_message(f"Lista episodi:", choices)
251
+
252
+ # Run the table and handle user input
253
+ last_command = table_show_manager.run()
254
+
255
+ if last_command == "q" or last_command == "quit":
256
+ console.print("\n[red]Quit [white]...")
257
+ sys.exit(0)
258
+
259
+ return last_command