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,147 @@
1
- # 21.04.25
2
-
3
- import os
4
- import time
5
- import logging
6
- import threading
7
- from collections import deque
8
-
9
-
10
- # External libraries
11
- import psutil
12
- from tqdm import tqdm
13
-
14
-
15
- # Internal utilities
16
- from StreamingCommunity.Util.color import Colors
17
- from StreamingCommunity.Util.os import internet_manager
18
- from StreamingCommunity.Util._jsonConfig import config_manager
19
-
20
-
21
- # Variable
22
- TQDM_USE_LARGE_BAR = config_manager.get_int('M3U8_DOWNLOAD', 'tqdm_use_large_bar')
23
-
24
-
25
- class M3U8_Ts_Estimator:
26
- def __init__(self, total_segments: int):
27
- """
28
- Initialize the M3U8_Ts_Estimator object.
29
-
30
- Parameters:
31
- - total_segments (int): Length of total segments to download.
32
- """
33
- self.ts_file_sizes = []
34
- self.now_downloaded_size = 0
35
- self.total_segments = total_segments
36
- self.lock = threading.Lock()
37
- self.speed = {"upload": "N/A", "download": "N/A"}
38
- self.process_pid = os.getpid() # Get current process PID
39
- logging.debug(f"Initializing M3U8_Ts_Estimator with PID: {self.process_pid}")
40
-
41
- # Start the speed capture thread if TQDM_USE_LARGE_BAR is True
42
- if TQDM_USE_LARGE_BAR:
43
- logging.debug("TQDM_USE_LARGE_BAR is True, starting speed capture thread")
44
- self.speed_thread = threading.Thread(target=self.capture_speed, args=(1, self.process_pid))
45
- self.speed_thread.daemon = True
46
- self.speed_thread.start()
47
-
48
- else:
49
- logging.debug("TQDM_USE_LARGE_BAR is False, speed capture thread not started")
50
-
51
- def add_ts_file(self, size: int, size_download: int, duration: float):
52
- """Add a file size to the list of file sizes."""
53
- logging.debug(f"Adding ts file - size: {size}, download size: {size_download}, duration: {duration}")
54
-
55
- if size <= 0 or size_download <= 0 or duration <= 0:
56
- logging.error(f"Invalid input values: size={size}, size_download={size_download}, duration={duration}")
57
- return
58
-
59
- self.ts_file_sizes.append(size)
60
- self.now_downloaded_size += size_download
61
- logging.debug(f"Current total downloaded size: {self.now_downloaded_size}")
62
-
63
- def capture_speed(self, interval: float = 1, pid: int = None):
64
- """Capture the internet speed periodically."""
65
- logging.debug(f"Starting speed capture with interval {interval}s for PID: {pid}")
66
-
67
- def get_network_io(process=None):
68
- try:
69
- if process:
70
-
71
- # For process-specific monitoring
72
- connections = process.connections(kind='inet')
73
- if connections:
74
- io_counters = process.io_counters()
75
- logging.debug(f"Process IO counters: {io_counters}")
76
- return io_counters
77
-
78
- else:
79
- logging.debug("No active internet connections found for process")
80
- return None
81
- else:
82
-
83
- # For system-wide monitoring
84
- io_counters = psutil.net_io_counters()
85
- logging.debug(f"System IO counters: {io_counters}")
86
- return io_counters
87
-
88
- except Exception as e:
89
- logging.error(f"Error getting network IO: {str(e)}")
90
- return None
91
-
92
- try:
93
- process = psutil.Process(pid) if pid else None
94
- logging.debug(f"Monitoring process: {process}")
95
-
96
- except Exception as e:
97
- logging.error(f"Failed to get process with PID {pid}: {str(e)}")
98
- process = None
99
-
100
- last_upload = None
101
- last_download = None
102
- first_run = True
103
-
104
- # Buffer circolare per le ultime N misurazioni
105
- speed_buffer_size = 3
106
- speed_buffer = deque(maxlen=speed_buffer_size)
107
-
108
- while True:
109
- try:
110
- io_counters = get_network_io()
111
-
112
- if io_counters:
113
- current_upload = io_counters.bytes_sent
114
- current_download = io_counters.bytes_recv
115
-
116
- if not first_run and last_upload is not None and last_download is not None:
117
-
118
- # Calcola la velocità istantanea
119
- upload_speed = max(0, (current_upload - last_upload) / interval)
120
- download_speed = max(0, (current_download - last_download) / interval)
121
-
122
- # Aggiungi al buffer
123
- speed_buffer.append(download_speed)
124
-
125
- # Calcola la media mobile delle velocità
126
- if len(speed_buffer) > 0:
127
- avg_download_speed = sum(speed_buffer) / len(speed_buffer)
128
-
129
- if avg_download_speed > 0:
130
- with self.lock:
131
- self.speed = {
132
- "upload": internet_manager.format_transfer_speed(upload_speed),
133
- "download": internet_manager.format_transfer_speed(avg_download_speed)
134
- }
135
- logging.debug(f"Updated speeds - Upload: {self.speed['upload']}, Download: {self.speed['download']}")
136
-
137
- last_upload = current_upload
138
- last_download = current_download
139
- first_run = False
140
-
141
- time.sleep(interval)
142
- except Exception as e:
143
- logging.error(f"Error in speed capture loop: {str(e)}")
144
- logging.exception("Full traceback:")
145
- logging.sleep(interval)
146
-
147
- def get_average_speed(self) -> list:
148
- """Calculate the average internet speed."""
149
- with self.lock:
150
- logging.debug(f"Current speed data: {self.speed}")
151
- return self.speed['download'].split(" ")
152
-
153
- def calculate_total_size(self) -> str:
154
- """
155
- Calculate the total size of the files.
156
-
157
- Returns:
158
- str: The mean size of the files in a human-readable format.
159
- """
160
- try:
161
- if len(self.ts_file_sizes) == 0:
162
- raise ValueError("No file sizes available to calculate total size.")
163
-
164
- total_size = sum(self.ts_file_sizes)
165
- mean_size = total_size / len(self.ts_file_sizes)
166
-
167
- # Return formatted mean size
168
- return internet_manager.format_file_size(mean_size)
169
-
170
- except ZeroDivisionError as e:
171
- logging.error("Division by zero error occurred: %s", e)
172
- return "0B"
173
-
174
- except Exception as e:
175
- logging.error("An unexpected error occurred: %s", e)
176
- return "Error"
177
-
178
- def get_downloaded_size(self) -> str:
179
- """
180
- Get the total downloaded size formatted as a human-readable string.
181
-
182
- Returns:
183
- str: The total downloaded size as a human-readable string.
184
- """
185
- return internet_manager.format_file_size(self.now_downloaded_size)
186
-
187
- def update_progress_bar(self, total_downloaded: int, duration: float, progress_counter: tqdm) -> None:
188
- """Updates the progress bar with download information."""
189
- try:
190
- self.add_ts_file(total_downloaded * self.total_segments, total_downloaded, duration)
191
-
192
- downloaded_file_size_str = self.get_downloaded_size()
193
- file_total_size = self.calculate_total_size()
194
-
195
- number_file_downloaded = downloaded_file_size_str.split(' ')[0]
196
- number_file_total_size = file_total_size.split(' ')[0]
197
- units_file_downloaded = downloaded_file_size_str.split(' ')[1]
198
- units_file_total_size = file_total_size.split(' ')[1]
199
-
200
- if TQDM_USE_LARGE_BAR:
201
- speed_data = self.get_average_speed()
202
- #logging.debug(f"Speed data for progress bar: {speed_data}")
203
-
204
- if len(speed_data) >= 2:
205
- average_internet_speed = speed_data[0]
206
- average_internet_unit = speed_data[1]
207
-
208
- else:
209
- logging.warning(f"Invalid speed data format: {speed_data}")
210
- average_internet_speed = "N/A"
211
- average_internet_unit = ""
212
-
213
- progress_str = (
214
- f"{Colors.WHITE}[ {Colors.GREEN}{number_file_downloaded} {Colors.WHITE}< "
215
- f"{Colors.GREEN}{number_file_total_size} {Colors.RED}{units_file_total_size} "
216
- f"{Colors.WHITE}| {Colors.CYAN}{average_internet_speed} {Colors.RED}{average_internet_unit}"
217
- )
218
-
219
- else:
220
- progress_str = (
221
- f"{Colors.WHITE}[ {Colors.GREEN}{number_file_downloaded} {Colors.WHITE}< "
222
- f"{Colors.GREEN}{number_file_total_size} {Colors.RED}{units_file_total_size}"
223
- )
224
-
225
- progress_counter.set_postfix_str(progress_str)
226
- #logging.debug(f"Updated progress bar: {progress_str}")
227
-
228
- except Exception as e:
1
+ # 21.04.25
2
+
3
+ import sys
4
+ import time
5
+ import logging
6
+ import threading
7
+ from collections import deque
8
+
9
+
10
+ # External libraries
11
+ import psutil
12
+ from tqdm import tqdm
13
+
14
+
15
+ # Internal utilities
16
+ from StreamingCommunity.Util.color import Colors
17
+ from StreamingCommunity.Util.os import internet_manager
18
+
19
+
20
+ # Variable
21
+ USE_LARGE_BAR = not ("android" in sys.platform or "ios" in sys.platform)
22
+
23
+
24
+ class M3U8_Ts_Estimator:
25
+ def __init__(self, total_segments: int, segments_instance=None):
26
+ """
27
+ Initialize the M3U8_Ts_Estimator object.
28
+
29
+ Parameters:
30
+ - total_segments (int): Length of total segments to download.
31
+ """
32
+ self.ts_file_sizes = []
33
+ self.now_downloaded_size = 0
34
+ self.total_segments = total_segments
35
+ self.segments_instance = segments_instance
36
+ self.lock = threading.Lock()
37
+ self.speed = {"upload": "N/A", "download": "N/A"}
38
+
39
+ if USE_LARGE_BAR:
40
+ logging.debug("USE_LARGE_BAR is True, starting speed capture thread")
41
+ self.speed_thread = threading.Thread(target=self.capture_speed)
42
+ self.speed_thread.daemon = True
43
+ self.speed_thread.start()
44
+
45
+ else:
46
+ logging.debug("USE_LARGE_BAR is False, speed capture thread not started")
47
+
48
+ def add_ts_file(self, size: int, size_download: int, duration: float):
49
+ """Add a file size to the list of file sizes."""
50
+ if size <= 0 or size_download <= 0 or duration <= 0:
51
+ logging.error(f"Invalid input values: size={size}, size_download={size_download}, duration={duration}")
52
+ return
53
+
54
+ self.ts_file_sizes.append(size)
55
+ self.now_downloaded_size += size_download
56
+ logging.debug(f"Current total downloaded size: {self.now_downloaded_size}")
57
+
58
+ def capture_speed(self, interval: float = 1):
59
+ """Capture the internet speed periodically."""
60
+ last_upload, last_download = 0, 0
61
+ speed_buffer = deque(maxlen=3)
62
+
63
+ while True:
64
+ try:
65
+ io_counters = psutil.net_io_counters()
66
+ if not io_counters:
67
+ raise ValueError("No IO counters available")
68
+
69
+ current_upload, current_download = io_counters.bytes_sent, io_counters.bytes_recv
70
+ if last_upload and last_download:
71
+ upload_speed = (current_upload - last_upload) / interval
72
+ download_speed = (current_download - last_download) / interval
73
+ speed_buffer.append(max(0, download_speed))
74
+
75
+ with self.lock:
76
+ self.speed = {
77
+ "upload": internet_manager.format_transfer_speed(max(0, upload_speed)),
78
+ "download": internet_manager.format_transfer_speed(sum(speed_buffer) / len(speed_buffer))
79
+ }
80
+ logging.debug(f"Updated speeds - Upload: {self.speed['upload']}, Download: {self.speed['download']}")
81
+
82
+ last_upload, last_download = current_upload, current_download
83
+ except Exception as e:
84
+ logging.error(f"Error in speed capture: {str(e)}")
85
+ self.speed = {"upload": "N/A", "download": "N/A"}
86
+
87
+ time.sleep(interval)
88
+
89
+ def calculate_total_size(self) -> str:
90
+ """
91
+ Calculate the total size of the files.
92
+
93
+ Returns:
94
+ str: The mean size of the files in a human-readable format.
95
+ """
96
+ try:
97
+ total_size = sum(self.ts_file_sizes)
98
+ mean_size = total_size / len(self.ts_file_sizes)
99
+ return internet_manager.format_file_size(mean_size)
100
+
101
+ except Exception as e:
102
+ logging.error("An unexpected error occurred: %s", e)
103
+ return "Error"
104
+
105
+ def update_progress_bar(self, total_downloaded: int, duration: float, progress_counter: tqdm) -> None:
106
+ try:
107
+ self.add_ts_file(total_downloaded * self.total_segments, total_downloaded, duration)
108
+
109
+ downloaded_file_size_str = internet_manager.format_file_size(self.now_downloaded_size)
110
+ file_total_size = self.calculate_total_size()
111
+
112
+ number_file_downloaded = downloaded_file_size_str.split(' ')[0]
113
+ number_file_total_size = file_total_size.split(' ')[0]
114
+ units_file_downloaded = downloaded_file_size_str.split(' ')[1]
115
+ units_file_total_size = file_total_size.split(' ')[1]
116
+
117
+ if USE_LARGE_BAR:
118
+ speed_data = self.speed['download'].split(" ")
119
+
120
+ if len(speed_data) >= 2:
121
+ average_internet_speed = speed_data[0]
122
+ average_internet_unit = speed_data[1]
123
+ else:
124
+ average_internet_speed = "N/A"
125
+ average_internet_unit = ""
126
+
127
+ # Retrieve retry count from segments_instance
128
+ retry_count = self.segments_instance.active_retries if self.segments_instance else 0
129
+ progress_str = (
130
+ f"{Colors.WHITE}[ {Colors.GREEN}{number_file_downloaded} {Colors.WHITE}< "
131
+ f"{Colors.GREEN}{number_file_total_size} {Colors.RED}{units_file_total_size} "
132
+ f"{Colors.WHITE}| {Colors.CYAN}{average_internet_speed} {Colors.RED}{average_internet_unit} "
133
+ f"{Colors.WHITE}| {Colors.GREEN}CRR {Colors.RED}{retry_count}"
134
+ )
135
+ else:
136
+ # Retrieve retry count from segments_instance
137
+ retry_count = self.segments_instance.active_retries if self.segments_instance else 0
138
+ progress_str = (
139
+ f"{Colors.WHITE}[ {Colors.GREEN}{number_file_downloaded} {Colors.WHITE}< "
140
+ f"{Colors.GREEN}{number_file_total_size} {Colors.RED}{units_file_total_size} "
141
+ f"{Colors.WHITE}| {Colors.GREEN}CRR {Colors.RED}{retry_count}"
142
+ )
143
+
144
+ progress_counter.set_postfix_str(progress_str)
145
+
146
+ except Exception as e:
229
147
  logging.error(f"Error updating progress bar: {str(e)}")