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,273 +1,273 @@
1
- # 01.03.24
2
-
3
- import sys
4
- import logging
5
- from urllib.parse import urlparse, parse_qs, urlencode, urlunparse
6
-
7
-
8
- # External libraries
9
- import httpx
10
- from bs4 import BeautifulSoup
11
-
12
-
13
- # Internal utilities
14
- from StreamingCommunity.Util.headers import get_headers
15
- from StreamingCommunity.Util.console import console
16
- from StreamingCommunity.Util._jsonConfig import config_manager
17
- from .Helper.Vixcloud.util import WindowVideo, WindowParameter, StreamsCollection
18
- from .Helper.Vixcloud.js_parser import JavaScriptParser
19
-
20
-
21
- # Variable
22
- max_timeout = config_manager.get_int("REQUESTS", "timeout")
23
-
24
-
25
- class VideoSource:
26
- def __init__(self, site_name: str, is_series: bool):
27
- """
28
- Initialize video source for streaming site.
29
-
30
- Args:
31
- site_name (str): Name of streaming site
32
- is_series (bool): Flag for series or movie content
33
- """
34
- self.headers = {'user-agent': get_headers()}
35
- self.base_name = site_name
36
- self.domain = config_manager.get_dict('SITE', self.base_name)['domain']
37
- self.is_series = is_series
38
-
39
- def setup(self, media_id: int):
40
- """
41
- Configure media-specific context.
42
-
43
- Args:
44
- media_id (int): Unique identifier for media item
45
- """
46
- self.media_id = media_id
47
-
48
- def get_iframe(self, episode_id: int) -> None:
49
- """
50
- Retrieve iframe source for specified episode.
51
-
52
- Args:
53
- episode_id (int): Unique identifier for episode
54
- """
55
- params = {}
56
-
57
- if self.is_series:
58
- params = {
59
- 'episode_id': episode_id,
60
- 'next_episode': '1'
61
- }
62
-
63
- try:
64
-
65
- # Make a request to get iframe source
66
- response = httpx.get(
67
- url=f"https://{self.base_name}.{self.domain}/iframe/{self.media_id}",
68
- params=params,
69
- timeout=max_timeout
70
- )
71
- response.raise_for_status()
72
-
73
- # Parse response with BeautifulSoup to get iframe source
74
- soup = BeautifulSoup(response.text, "html.parser")
75
- self.iframe_src = soup.find("iframe").get("src")
76
-
77
- except Exception as e:
78
- logging.error(f"Error getting iframe source: {e}")
79
- raise
80
-
81
- def parse_script(self, script_text: str) -> None:
82
- """
83
- Convert raw script to structured video metadata.
84
-
85
- Args:
86
- script_text (str): Raw JavaScript/HTML script content
87
- """
88
- try:
89
- converter = JavaScriptParser.parse(js_string=str(script_text))
90
-
91
- # Create window video, streams and parameter objects
92
- self.canPlayFHD = bool(converter.get('canPlayFHD'))
93
- self.window_video = WindowVideo(converter.get('video'))
94
- self.window_streams = StreamsCollection(converter.get('streams'))
95
- self.window_parameter = WindowParameter(converter.get('masterPlaylist'))
96
-
97
- except Exception as e:
98
- logging.error(f"Error parsing script: {e}")
99
- raise
100
-
101
- def get_content(self) -> None:
102
- """
103
- Fetch and process video content from iframe source.
104
-
105
- Workflow:
106
- - Validate iframe source
107
- - Retrieve content
108
- - Parse embedded script
109
- """
110
- try:
111
- if self.iframe_src is not None:
112
-
113
- # Make a request to get content
114
- try:
115
- response = httpx.get(
116
- url=self.iframe_src,
117
- headers=self.headers,
118
- timeout=max_timeout
119
- )
120
- response.raise_for_status()
121
-
122
- except Exception as e:
123
- logging.error(f"Failed to get vixcloud contente with error: {e}")
124
- sys.exit(0)
125
-
126
- # Parse response with BeautifulSoup to get content
127
- soup = BeautifulSoup(response.text, "html.parser")
128
- script = soup.find("body").find("script").text
129
-
130
- # Parse script to get video information
131
- self.parse_script(script_text=script)
132
-
133
- except Exception as e:
134
- logging.error(f"Error getting content: {e}")
135
- raise
136
-
137
- def get_playlist(self) -> str:
138
- """
139
- Generate authenticated playlist URL.
140
-
141
- Returns:
142
- str: Fully constructed playlist URL with authentication parameters
143
- """
144
- # Initialize parameters dictionary
145
- params = {}
146
-
147
- # Add 'h' parameter if video quality is 1080p
148
- if self.canPlayFHD:
149
- params['h'] = 1
150
-
151
- # Parse the original URL
152
- parsed_url = urlparse(self.window_parameter.url)
153
- query_params = parse_qs(parsed_url.query)
154
-
155
- # Check specifically for 'b=1' in the query parameters
156
- if 'b' in query_params and query_params['b'] == ['1']:
157
- params['b'] = 1
158
-
159
- # Add authentication parameters (token and expiration)
160
- params.update({
161
- "token": self.window_parameter.token,
162
- "expires": self.window_parameter.expires
163
- })
164
-
165
- # Build the updated query string
166
- query_string = urlencode(params)
167
-
168
- # Construct the new URL with updated query parameters
169
- return urlunparse(parsed_url._replace(query=query_string))
170
-
171
- def get_mp4(self, url_to_download: str, scws_id: str) -> list:
172
- """
173
- Generate download links for the specified resolutions from StreamingCommunity.
174
-
175
- Args:
176
- url_to_download (str): URL of the video page.
177
- scws_id (str): SCWS ID of the title.
178
-
179
- Returns:
180
- list: A list of video download URLs.
181
- """
182
- headers = {
183
- 'referer': url_to_download,
184
- 'user-agent': get_headers(),
185
- }
186
-
187
- # API request to get video details
188
- video_api_url = f'https://{self.base_name}.{self.domain}/api/video/{scws_id}'
189
- response = httpx.get(video_api_url, headers=headers)
190
-
191
- if response.status_code == 200:
192
- response_json = response.json()
193
-
194
- video_tracks = response_json.get('video_tracks', [])
195
- track = video_tracks[-1]
196
- console.print(f"[cyan]Available resolutions: [red]{[str(track['quality']) for track in video_tracks]}")
197
-
198
- # Request download link generation for each track
199
- download_response = httpx.post(
200
- url=f'https://{self.base_name}.{self.domain}/api/download/generate_link?scws_id={track["video_id"]}&rendition={track["quality"]}',
201
- headers={
202
- 'referer': url_to_download,
203
- 'user-agent': get_headers(),
204
- 'x-xsrf-token': config_manager.get("SITE", self.base_name)['extra']['x-xsrf-token']
205
- },
206
- cookies={
207
- 'streamingcommunity_session': config_manager.get("SITE", self.base_name)['extra']['streamingcommunity_session']
208
- }
209
- )
210
-
211
- if download_response.status_code == 200:
212
- return {'url': download_response.text, 'quality': track["quality"]}
213
-
214
- else:
215
- logging.error(f"Failed to generate link for resolution {track['quality']} (HTTP {download_response.status_code}).")
216
-
217
- else:
218
- logging.error(f"Error fetching video API URL (HTTP {response.status_code}).")
219
- return []
220
-
221
-
222
- class VideoSourceAnime(VideoSource):
223
- def __init__(self, site_name: str):
224
- """
225
- Initialize anime-specific video source.
226
-
227
- Args:
228
- site_name (str): Name of anime streaming site
229
-
230
- Extends base VideoSource with anime-specific initialization
231
- """
232
- self.headers = {'user-agent': get_headers()}
233
- self.base_name = site_name
234
- self.domain = config_manager.get_dict('SITE', self.base_name)['domain']
235
- self.src_mp4 = None
236
-
237
- def get_embed(self, episode_id: int):
238
- """
239
- Retrieve embed URL and extract video source.
240
-
241
- Args:
242
- episode_id (int): Unique identifier for episode
243
-
244
- Returns:
245
- str: Parsed script content
246
- """
247
- try:
248
-
249
- response = httpx.get(
250
- url=f"https://www.{self.base_name}.{self.domain}/embed-url/{episode_id}",
251
- headers=self.headers,
252
- timeout=max_timeout
253
- )
254
- response.raise_for_status()
255
-
256
- # Extract and clean embed URL
257
- embed_url = response.text.strip()
258
- self.iframe_src = embed_url
259
-
260
- # Fetch video content using embed URL
261
- video_response = httpx.get(embed_url)
262
- video_response.raise_for_status()
263
-
264
- # Parse response with BeautifulSoup to get content of the scriot
265
- soup = BeautifulSoup(video_response.text, "html.parser")
266
- script = soup.find("body").find("script").text
267
- self.src_mp4 = soup.find("body").find_all("script")[1].text.split(" = ")[1].replace("'", "")
268
-
269
- return script
270
-
271
- except Exception as e:
272
- logging.error(f"Error fetching embed URL: {e}")
1
+ # 01.03.24
2
+
3
+ import sys
4
+ import logging
5
+ from urllib.parse import urlparse, parse_qs, urlencode, urlunparse
6
+
7
+
8
+ # External libraries
9
+ import httpx
10
+ from bs4 import BeautifulSoup
11
+
12
+
13
+ # Internal utilities
14
+ from StreamingCommunity.Util.headers import get_headers
15
+ from StreamingCommunity.Util.console import console
16
+ from StreamingCommunity.Util._jsonConfig import config_manager
17
+ from .Helper.Vixcloud.util import WindowVideo, WindowParameter, StreamsCollection
18
+ from .Helper.Vixcloud.js_parser import JavaScriptParser
19
+
20
+
21
+ # Variable
22
+ max_timeout = config_manager.get_int("REQUESTS", "timeout")
23
+
24
+
25
+ class VideoSource:
26
+ def __init__(self, site_name: str, is_series: bool):
27
+ """
28
+ Initialize video source for streaming site.
29
+
30
+ Args:
31
+ site_name (str): Name of streaming site
32
+ is_series (bool): Flag for series or movie content
33
+ """
34
+ self.headers = {'user-agent': get_headers()}
35
+ self.base_name = site_name
36
+ self.domain = config_manager.get_dict('SITE', self.base_name)['domain']
37
+ self.is_series = is_series
38
+
39
+ def setup(self, media_id: int):
40
+ """
41
+ Configure media-specific context.
42
+
43
+ Args:
44
+ media_id (int): Unique identifier for media item
45
+ """
46
+ self.media_id = media_id
47
+
48
+ def get_iframe(self, episode_id: int) -> None:
49
+ """
50
+ Retrieve iframe source for specified episode.
51
+
52
+ Args:
53
+ episode_id (int): Unique identifier for episode
54
+ """
55
+ params = {}
56
+
57
+ if self.is_series:
58
+ params = {
59
+ 'episode_id': episode_id,
60
+ 'next_episode': '1'
61
+ }
62
+
63
+ try:
64
+
65
+ # Make a request to get iframe source
66
+ response = httpx.get(
67
+ url=f"https://{self.base_name}.{self.domain}/iframe/{self.media_id}",
68
+ params=params,
69
+ timeout=max_timeout
70
+ )
71
+ response.raise_for_status()
72
+
73
+ # Parse response with BeautifulSoup to get iframe source
74
+ soup = BeautifulSoup(response.text, "html.parser")
75
+ self.iframe_src = soup.find("iframe").get("src")
76
+
77
+ except Exception as e:
78
+ logging.error(f"Error getting iframe source: {e}")
79
+ raise
80
+
81
+ def parse_script(self, script_text: str) -> None:
82
+ """
83
+ Convert raw script to structured video metadata.
84
+
85
+ Args:
86
+ script_text (str): Raw JavaScript/HTML script content
87
+ """
88
+ try:
89
+ converter = JavaScriptParser.parse(js_string=str(script_text))
90
+
91
+ # Create window video, streams and parameter objects
92
+ self.canPlayFHD = bool(converter.get('canPlayFHD'))
93
+ self.window_video = WindowVideo(converter.get('video'))
94
+ self.window_streams = StreamsCollection(converter.get('streams'))
95
+ self.window_parameter = WindowParameter(converter.get('masterPlaylist'))
96
+
97
+ except Exception as e:
98
+ logging.error(f"Error parsing script: {e}")
99
+ raise
100
+
101
+ def get_content(self) -> None:
102
+ """
103
+ Fetch and process video content from iframe source.
104
+
105
+ Workflow:
106
+ - Validate iframe source
107
+ - Retrieve content
108
+ - Parse embedded script
109
+ """
110
+ try:
111
+ if self.iframe_src is not None:
112
+
113
+ # Make a request to get content
114
+ try:
115
+ response = httpx.get(
116
+ url=self.iframe_src,
117
+ headers=self.headers,
118
+ timeout=max_timeout
119
+ )
120
+ response.raise_for_status()
121
+
122
+ except Exception as e:
123
+ logging.error(f"Failed to get vixcloud contente with error: {e}")
124
+ sys.exit(0)
125
+
126
+ # Parse response with BeautifulSoup to get content
127
+ soup = BeautifulSoup(response.text, "html.parser")
128
+ script = soup.find("body").find("script").text
129
+
130
+ # Parse script to get video information
131
+ self.parse_script(script_text=script)
132
+
133
+ except Exception as e:
134
+ logging.error(f"Error getting content: {e}")
135
+ raise
136
+
137
+ def get_playlist(self) -> str:
138
+ """
139
+ Generate authenticated playlist URL.
140
+
141
+ Returns:
142
+ str: Fully constructed playlist URL with authentication parameters
143
+ """
144
+ # Initialize parameters dictionary
145
+ params = {}
146
+
147
+ # Add 'h' parameter if video quality is 1080p
148
+ if self.canPlayFHD:
149
+ params['h'] = 1
150
+
151
+ # Parse the original URL
152
+ parsed_url = urlparse(self.window_parameter.url)
153
+ query_params = parse_qs(parsed_url.query)
154
+
155
+ # Check specifically for 'b=1' in the query parameters
156
+ if 'b' in query_params and query_params['b'] == ['1']:
157
+ params['b'] = 1
158
+
159
+ # Add authentication parameters (token and expiration)
160
+ params.update({
161
+ "token": self.window_parameter.token,
162
+ "expires": self.window_parameter.expires
163
+ })
164
+
165
+ # Build the updated query string
166
+ query_string = urlencode(params)
167
+
168
+ # Construct the new URL with updated query parameters
169
+ return urlunparse(parsed_url._replace(query=query_string))
170
+
171
+ def get_mp4(self, url_to_download: str, scws_id: str) -> list:
172
+ """
173
+ Generate download links for the specified resolutions from StreamingCommunity.
174
+
175
+ Args:
176
+ url_to_download (str): URL of the video page.
177
+ scws_id (str): SCWS ID of the title.
178
+
179
+ Returns:
180
+ list: A list of video download URLs.
181
+ """
182
+ headers = {
183
+ 'referer': url_to_download,
184
+ 'user-agent': get_headers(),
185
+ }
186
+
187
+ # API request to get video details
188
+ video_api_url = f'https://{self.base_name}.{self.domain}/api/video/{scws_id}'
189
+ response = httpx.get(video_api_url, headers=headers)
190
+
191
+ if response.status_code == 200:
192
+ response_json = response.json()
193
+
194
+ video_tracks = response_json.get('video_tracks', [])
195
+ track = video_tracks[-1]
196
+ console.print(f"[cyan]Available resolutions: [red]{[str(track['quality']) for track in video_tracks]}")
197
+
198
+ # Request download link generation for each track
199
+ download_response = httpx.post(
200
+ url=f'https://{self.base_name}.{self.domain}/api/download/generate_link?scws_id={track["video_id"]}&rendition={track["quality"]}',
201
+ headers={
202
+ 'referer': url_to_download,
203
+ 'user-agent': get_headers(),
204
+ 'x-xsrf-token': config_manager.get("SITE", self.base_name)['extra']['x-xsrf-token']
205
+ },
206
+ cookies={
207
+ 'streamingcommunity_session': config_manager.get("SITE", self.base_name)['extra']['streamingcommunity_session']
208
+ }
209
+ )
210
+
211
+ if download_response.status_code == 200:
212
+ return {'url': download_response.text, 'quality': track["quality"]}
213
+
214
+ else:
215
+ logging.error(f"Failed to generate link for resolution {track['quality']} (HTTP {download_response.status_code}).")
216
+
217
+ else:
218
+ logging.error(f"Error fetching video API URL (HTTP {response.status_code}).")
219
+ return []
220
+
221
+
222
+ class VideoSourceAnime(VideoSource):
223
+ def __init__(self, site_name: str):
224
+ """
225
+ Initialize anime-specific video source.
226
+
227
+ Args:
228
+ site_name (str): Name of anime streaming site
229
+
230
+ Extends base VideoSource with anime-specific initialization
231
+ """
232
+ self.headers = {'user-agent': get_headers()}
233
+ self.base_name = site_name
234
+ self.domain = config_manager.get_dict('SITE', self.base_name)['domain']
235
+ self.src_mp4 = None
236
+
237
+ def get_embed(self, episode_id: int):
238
+ """
239
+ Retrieve embed URL and extract video source.
240
+
241
+ Args:
242
+ episode_id (int): Unique identifier for episode
243
+
244
+ Returns:
245
+ str: Parsed script content
246
+ """
247
+ try:
248
+
249
+ response = httpx.get(
250
+ url=f"https://www.{self.base_name}.{self.domain}/embed-url/{episode_id}",
251
+ headers=self.headers,
252
+ timeout=max_timeout
253
+ )
254
+ response.raise_for_status()
255
+
256
+ # Extract and clean embed URL
257
+ embed_url = response.text.strip()
258
+ self.iframe_src = embed_url
259
+
260
+ # Fetch video content using embed URL
261
+ video_response = httpx.get(embed_url)
262
+ video_response.raise_for_status()
263
+
264
+ # Parse response with BeautifulSoup to get content of the scriot
265
+ soup = BeautifulSoup(video_response.text, "html.parser")
266
+ script = soup.find("body").find("script").text
267
+ self.src_mp4 = soup.find("body").find_all("script")[1].text.split(" = ")[1].replace("'", "")
268
+
269
+ return script
270
+
271
+ except Exception as e:
272
+ logging.error(f"Error fetching embed URL: {e}")
273
273
  return None
@@ -1,51 +1,52 @@
1
- # 02.07.24
2
-
3
- from urllib.parse import quote_plus
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util.console import console, msg
8
-
9
-
10
- # Logic class
11
- from .site import title_search, run_get_select_title, media_search_manager
12
- from .title import download_title
13
-
14
-
15
- # Variable
16
- indice = 8
17
- _useFor = "film_serie"
18
- _deprecate = False
19
- _priority = 2
20
- _engineDownload = "tor"
21
- from .costant import SITE_NAME
22
-
23
-
24
- def search(string_to_search: str = None, get_onylDatabase: bool = False):
25
- """
26
- Main function of the application for film and series.
27
- """
28
-
29
- if string_to_search is None:
30
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
31
-
32
- # Search on database
33
- len_database = title_search(quote_plus(string_to_search))
34
-
35
- # Return list of elements
36
- if get_onylDatabase:
37
- return media_search_manager
38
-
39
- if len_database > 0:
40
-
41
- # Select title from list
42
- select_title = run_get_select_title()
43
-
44
- # Download title
45
- download_title(select_title)
46
-
47
- else:
48
- console.print(f"\n[red]Nothing matching was found for[white]: [purple]{string_to_search}")
49
-
50
- # Retry
1
+ # 02.07.24
2
+
3
+ import sys
4
+ import subprocess
5
+ from urllib.parse import quote_plus
6
+
7
+
8
+ # Internal utilities
9
+ from StreamingCommunity.Util.console import console, msg
10
+
11
+
12
+ # Logic class
13
+ from .site import title_search, run_get_select_title, media_search_manager
14
+ from .title import download_title
15
+
16
+
17
+ # Variable
18
+ indice = 8
19
+ _useFor = "film_serie"
20
+ _deprecate = False
21
+ _priority = 2
22
+ _engineDownload = "tor"
23
+ from .costant import SITE_NAME
24
+
25
+
26
+ def search(string_to_search: str = None, get_onylDatabase: bool = False):
27
+ """
28
+ Main function of the application for film and series.
29
+ """
30
+ if string_to_search is None:
31
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
32
+
33
+ # Search on database
34
+ len_database = title_search(quote_plus(string_to_search))
35
+
36
+ # Return list of elements
37
+ if get_onylDatabase:
38
+ return media_search_manager
39
+
40
+ if len_database > 0:
41
+
42
+ # Select title from list
43
+ select_title = run_get_select_title()
44
+
45
+ # Download title
46
+ download_title(select_title)
47
+
48
+ else:
49
+ console.print(f"\n[red]Nothing matching was found for[white]: [purple]{string_to_search}")
50
+
51
+ # Retry
51
52
  search()