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,67 +1,75 @@
1
- # 01.03.2023
2
-
3
- import os
4
- import sys
5
- import time
6
-
7
-
8
- # Internal utilities
9
- from .version import __version__, __author__, __title__
10
- from StreamingCommunity.Util.console import console
11
-
12
-
13
- # External library
14
- import httpx
15
-
16
-
17
- # Variable
18
- if getattr(sys, 'frozen', False): # Modalità PyInstaller
19
- base_path = os.path.join(sys._MEIPASS, "StreamingCommunity")
20
- else:
21
- base_path = os.path.dirname(__file__)
22
-
23
-
24
- def update():
25
- """
26
- Check for updates on GitHub and display relevant information.
27
- """
28
-
29
- console.print("[green]Checking GitHub version [white]...")
30
-
31
- # Make the GitHub API requests and handle potential errors
32
- try:
33
- response_reposity = httpx.get(f"https://api.github.com/repos/{__author__}/{__title__}").json()
34
- response_releases = httpx.get(f"https://api.github.com/repos/{__author__}/{__title__}/releases").json()
35
-
36
- except Exception as e:
37
- console.print(f"[red]Error accessing GitHub API: {e}")
38
- return
39
-
40
- # Get stargazers count from the repository
41
- stargazers_count = response_reposity.get('stargazers_count', 0)
42
-
43
- # Calculate total download count from all releases
44
- total_download_count = sum(asset['download_count'] for release in response_releases for asset in release.get('assets', []))
45
-
46
- # Get latest version name
47
- if response_releases:
48
- last_version = response_releases[0].get('name', 'Unknown')
49
- else:
50
- last_version = 'Unknown'
51
-
52
- # Calculate percentual of stars based on download count
53
- if total_download_count > 0 and stargazers_count > 0:
54
- percentual_stars = round(stargazers_count / total_download_count * 100, 2)
55
- else:
56
- percentual_stars = 0
57
-
58
- # Check installed version
59
- if str(__version__).replace('v', '') != str(last_version).replace('v', '') :
60
- console.print(f"[red]New version available: [yellow]{last_version} \n")
61
- else:
62
- console.print(f" [yellow]Everything is up to date \n")
63
-
64
- console.print(f"[red]{__title__} has been downloaded [yellow]{total_download_count} [red]times, but only [yellow]{percentual_stars}% [red]of users have starred it.\n\
65
- [cyan]Help the repository grow today by leaving a [yellow]star [cyan]and [yellow]sharing [cyan]it with others online!")
66
-
67
- time.sleep(3)
1
+ # 01.03.2023
2
+
3
+ import os
4
+ import sys
5
+ import time
6
+
7
+
8
+ # External library
9
+ import httpx
10
+
11
+
12
+ # Internal utilities
13
+ from .version import __version__, __author__, __title__
14
+ from StreamingCommunity.Util.console import console
15
+ from StreamingCommunity.Util._jsonConfig import config_manager
16
+ from StreamingCommunity.Util.headers import get_headers
17
+
18
+
19
+
20
+ # Variable
21
+ if getattr(sys, 'frozen', False): # Modalità PyInstaller
22
+ base_path = os.path.join(sys._MEIPASS, "StreamingCommunity")
23
+ else:
24
+ base_path = os.path.dirname(__file__)
25
+
26
+
27
+ def update():
28
+ """
29
+ Check for updates on GitHub and display relevant information.
30
+ """
31
+ try:
32
+ response_reposity = httpx.get(
33
+ url=f"https://api.github.com/repos/{__author__}/{__title__}",
34
+ headers={'user-agent': get_headers()},
35
+ timeout=config_manager.get_int("REQUESTS", "timeout"),
36
+ follow_redirects=True
37
+ ).json()
38
+
39
+ response_releases = httpx.get(
40
+ url=f"https://api.github.com/repos/{__author__}/{__title__}/releases",
41
+ headers={'user-agent': get_headers()},
42
+ timeout=config_manager.get_int("REQUESTS", "timeout"),
43
+ follow_redirects=True
44
+ ).json()
45
+
46
+ except Exception as e:
47
+ console.print(f"[red]Error accessing GitHub API: {e}")
48
+ return
49
+
50
+ # Get stargazers count from the repository
51
+ stargazers_count = response_reposity.get('stargazers_count', 0)
52
+
53
+ # Calculate total download count from all releases
54
+ total_download_count = sum(asset['download_count'] for release in response_releases for asset in release.get('assets', []))
55
+
56
+ # Get latest version name
57
+ if response_releases:
58
+ last_version = response_releases[0].get('name', 'Unknown')
59
+ else:
60
+ last_version = 'Unknown'
61
+
62
+ # Calculate percentual of stars based on download count
63
+ if total_download_count > 0 and stargazers_count > 0:
64
+ percentual_stars = round(stargazers_count / total_download_count * 100, 2)
65
+ else:
66
+ percentual_stars = 0
67
+
68
+ # Check installed version
69
+ if str(__version__).replace('v', '') != str(last_version).replace('v', '') :
70
+ console.print(f"\n[red]New version available: [yellow]{last_version}")
71
+
72
+ console.print(f"\n[red]{__title__} has been downloaded [yellow]{total_download_count} [red]times, but only [yellow]{percentual_stars}% [red]of users have starred it.\n\
73
+ [cyan]Help the repository grow today by leaving a [yellow]star [cyan]and [yellow]sharing [cyan]it with others online!")
74
+
75
+ time.sleep(3)
@@ -1,5 +1,5 @@
1
- __title__ = 'StreamingCommunity'
2
- __version__ = '2.5.0'
3
- __author__ = 'Lovi-0'
4
- __description__ = 'A command-line program to download film'
5
- __copyright__ = 'Copyright 2024'
1
+ __title__ = 'StreamingCommunity'
2
+ __version__ = '2.5.0'
3
+ __author__ = 'Arrowar'
4
+ __description__ = 'A command-line program to download film'
5
+ __copyright__ = 'Copyright 2024'
@@ -1,228 +1,227 @@
1
- # 29.01.24
2
-
3
- import os
4
- import sys
5
- import json
6
- import httpx
7
- import logging
8
- from typing import Any, List
9
-
10
-
11
- class ConfigManager:
12
- def __init__(self, file_path: str = 'config.json') -> None:
13
- """Initialize the ConfigManager.
14
-
15
- Parameters:
16
- - file_path (str, optional): The path to the configuration file. Default is 'config.json'.
17
- """
18
- self.file_path = file_path
19
- self.config = {}
20
- self.cache = {}
21
-
22
- def read_config(self) -> None:
23
- """Read the configuration file."""
24
- try:
25
- logging.info(f"Reading file: {self.file_path}")
26
-
27
- # Check if file exists
28
- if os.path.exists(self.file_path):
29
- with open(self.file_path, 'r') as f:
30
- self.config = json.load(f)
31
- logging.info("Configuration file loaded successfully.")
32
-
33
- # Download config.json if it doesn't exist locally
34
- else:
35
- logging.info("Configuration file does not exist. Downloading...")
36
- self.download_requirements(
37
- 'https://raw.githubusercontent.com/Lovi-0/StreamingCommunity/refs/heads/main/config.json',
38
- self.file_path
39
- )
40
-
41
- # Load the downloaded config.json into the config attribute
42
- with open(self.file_path, 'r') as f:
43
- self.config = json.load(f)
44
- logging.info("Configuration file downloaded and saved.")
45
-
46
- logging.info("Configuration file processed successfully.")
47
-
48
- except Exception as e:
49
- logging.error(f"Error reading configuration file: {e}")
50
-
51
- def download_requirements(self, url: str, filename: str):
52
- """
53
- Download the requirements.txt file from the specified URL if not found locally using requests.
54
-
55
- Args:
56
- url (str): The URL to download the requirements file from.
57
- filename (str): The local filename to save the requirements file as.
58
- """
59
- try:
60
- import requests
61
-
62
- logging.info(f"{filename} not found locally. Downloading from {url}...")
63
- response = requests.get(url)
64
-
65
- if response.status_code == 200:
66
- with open(filename, 'wb') as f:
67
- f.write(response.content)
68
-
69
- else:
70
- logging.error(f"Failed to download {filename}. HTTP Status code: {response.status_code}")
71
- sys.exit(0)
72
-
73
- except Exception as e:
74
- logging.error(f"Failed to download {filename}: {e}")
75
- sys.exit(0)
76
-
77
- def read_key(self, section: str, key: str, data_type: type = str) -> Any:
78
- """Read a key from the configuration file.
79
-
80
- Parameters:
81
- - section (str): The section in the configuration file.
82
- - key (str): The key to be read.
83
- - data_type (type, optional): The expected data type of the key's value. Default is str.
84
-
85
- Returns:
86
- The value of the key converted to the specified data type.
87
- """
88
- cache_key = f"{section}.{key}"
89
- logging.info(f"Read key: {cache_key}")
90
-
91
- if cache_key in self.cache:
92
- return self.cache[cache_key]
93
-
94
- if section in self.config and key in self.config[section]:
95
- value = self.config[section][key]
96
- else:
97
- raise ValueError(f"Key '{key}' not found in section '{section}'")
98
-
99
- value = self._convert_to_data_type(value, data_type)
100
- self.cache[cache_key] = value
101
-
102
- return value
103
-
104
- def _convert_to_data_type(self, value: str, data_type: type) -> Any:
105
- """Convert the value to the specified data type.
106
-
107
- Parameters:
108
- - value (str): The value to be converted.
109
- - data_type (type): The expected data type.
110
-
111
- Returns:
112
- The value converted to the specified data type.
113
- """
114
- if data_type == int:
115
- return int(value)
116
- elif data_type == bool:
117
- return bool(value)
118
- elif data_type == list:
119
- return value if isinstance(value, list) else [item.strip() for item in value.split(',')]
120
- elif data_type == type(None):
121
- return None
122
- else:
123
- return value
124
-
125
- def get(self, section: str, key: str) -> Any:
126
- """Read a value from the configuration file.
127
-
128
- Parameters:
129
- - section (str): The section in the configuration file.
130
- - key (str): The key to be read.
131
-
132
- Returns:
133
- The value associated with the key.
134
- """
135
- return self.read_key(section, key)
136
-
137
- def get_int(self, section: str, key: str) -> int:
138
- """Read an integer value from the configuration file.
139
-
140
- Parameters:
141
- - section (str): The section in the configuration file.
142
- - key (str): The key to be read.
143
-
144
- Returns:
145
- int: The integer value.
146
- """
147
- return self.read_key(section, key, int)
148
-
149
- def get_float(self, section: str, key: str) -> int:
150
- """Read an float value from the configuration file.
151
-
152
- Parameters:
153
- - section (str): The section in the configuration file.
154
- - key (str): The key to be read.
155
-
156
- Returns:
157
- float: The float value.
158
- """
159
- return self.read_key(section, key, float)
160
-
161
- def get_bool(self, section: str, key: str) -> bool:
162
- """Read a boolean value from the configuration file.
163
-
164
- Parameters:
165
- - section (str): The section in the configuration file.
166
- - key (str): The key to be read.
167
-
168
- Returns:
169
- bool: The boolean value.
170
- """
171
- return self.read_key(section, key, bool)
172
-
173
- def get_list(self, section: str, key: str) -> List[str]:
174
- """Read a list value from the configuration file.
175
-
176
- Parameters:
177
- - section (str): The section in the configuration file.
178
- - key (str): The key to be read.
179
-
180
- Returns:
181
- list: The list value.
182
- """
183
- return self.read_key(section, key, list)
184
-
185
- def get_dict(self, section: str, key: str) -> dict:
186
- """Read a dictionary value from the configuration file.
187
-
188
- Parameters:
189
- - section (str): The section in the configuration file.
190
- - key (str): The key to be read.
191
-
192
- Returns:
193
- dict: The dictionary value.
194
- """
195
- return self.read_key(section, key, dict)
196
-
197
- def set_key(self, section: str, key: str, value: Any) -> None:
198
- """Set a key in the configuration file.
199
-
200
- Parameters:
201
- - section (str): The section in the configuration file.
202
- - key (str): The key to be set.
203
- - value (Any): The value to be associated with the key.
204
- """
205
- try:
206
- if section not in self.config:
207
- self.config[section] = {}
208
-
209
- self.config[section][key] = value
210
- cache_key = f"{section}.{key}"
211
- self.cache[cache_key] = value
212
- self.write_config()
213
-
214
- except Exception as e:
215
- print(f"Error setting key '{key}' in section '{section}': {e}")
216
-
217
- def write_config(self) -> None:
218
- """Write the configuration to the file."""
219
- try:
220
- with open(self.file_path, 'w') as f:
221
- json.dump(self.config, f, indent=4)
222
- except Exception as e:
223
- print(f"Error writing configuration file: {e}")
224
-
225
-
226
- # Initialize
227
- config_manager = ConfigManager()
228
- config_manager.read_config()
1
+ # 29.01.24
2
+
3
+ import os
4
+ import sys
5
+ import json
6
+ import logging
7
+ from typing import Any, List
8
+
9
+
10
+ class ConfigManager:
11
+ def __init__(self, file_path: str = 'config.json') -> None:
12
+ """Initialize the ConfigManager.
13
+
14
+ Parameters:
15
+ - file_path (str, optional): The path to the configuration file. Default is 'config.json'.
16
+ """
17
+ self.file_path = file_path
18
+ self.config = {}
19
+ self.cache = {}
20
+
21
+ def read_config(self) -> None:
22
+ """Read the configuration file."""
23
+ try:
24
+ logging.info(f"Reading file: {self.file_path}")
25
+
26
+ # Check if file exists
27
+ if os.path.exists(self.file_path):
28
+ with open(self.file_path, 'r') as f:
29
+ self.config = json.load(f)
30
+ logging.info("Configuration file loaded successfully.")
31
+
32
+ # Download config.json if it doesn't exist locally
33
+ else:
34
+ logging.info("Configuration file does not exist. Downloading...")
35
+ self.download_requirements(
36
+ 'https://raw.githubusercontent.com/Arrowar/StreamingCommunity/refs/heads/main/config.json',
37
+ self.file_path
38
+ )
39
+
40
+ # Load the downloaded config.json into the config attribute
41
+ with open(self.file_path, 'r') as f:
42
+ self.config = json.load(f)
43
+ logging.info("Configuration file downloaded and saved.")
44
+
45
+ logging.info("Configuration file processed successfully.")
46
+
47
+ except Exception as e:
48
+ logging.error(f"Error reading configuration file: {e}")
49
+
50
+ def download_requirements(self, url: str, filename: str):
51
+ """
52
+ Download the requirements.txt file from the specified URL if not found locally using requests.
53
+
54
+ Args:
55
+ url (str): The URL to download the requirements file from.
56
+ filename (str): The local filename to save the requirements file as.
57
+ """
58
+ try:
59
+ import requests
60
+
61
+ logging.info(f"{filename} not found locally. Downloading from {url}...")
62
+ response = requests.get(url)
63
+
64
+ if response.status_code == 200:
65
+ with open(filename, 'wb') as f:
66
+ f.write(response.content)
67
+
68
+ else:
69
+ logging.error(f"Failed to download {filename}. HTTP Status code: {response.status_code}")
70
+ sys.exit(0)
71
+
72
+ except Exception as e:
73
+ logging.error(f"Failed to download {filename}: {e}")
74
+ sys.exit(0)
75
+
76
+ def read_key(self, section: str, key: str, data_type: type = str) -> Any:
77
+ """Read a key from the configuration file.
78
+
79
+ Parameters:
80
+ - section (str): The section in the configuration file.
81
+ - key (str): The key to be read.
82
+ - data_type (type, optional): The expected data type of the key's value. Default is str.
83
+
84
+ Returns:
85
+ The value of the key converted to the specified data type.
86
+ """
87
+ cache_key = f"{section}.{key}"
88
+ logging.info(f"Read key: {cache_key}")
89
+
90
+ if cache_key in self.cache:
91
+ return self.cache[cache_key]
92
+
93
+ if section in self.config and key in self.config[section]:
94
+ value = self.config[section][key]
95
+ else:
96
+ raise ValueError(f"Key '{key}' not found in section '{section}'")
97
+
98
+ value = self._convert_to_data_type(value, data_type)
99
+ self.cache[cache_key] = value
100
+
101
+ return value
102
+
103
+ def _convert_to_data_type(self, value: str, data_type: type) -> Any:
104
+ """Convert the value to the specified data type.
105
+
106
+ Parameters:
107
+ - value (str): The value to be converted.
108
+ - data_type (type): The expected data type.
109
+
110
+ Returns:
111
+ The value converted to the specified data type.
112
+ """
113
+ if data_type == int:
114
+ return int(value)
115
+ elif data_type == bool:
116
+ return bool(value)
117
+ elif data_type == list:
118
+ return value if isinstance(value, list) else [item.strip() for item in value.split(',')]
119
+ elif data_type == type(None):
120
+ return None
121
+ else:
122
+ return value
123
+
124
+ def get(self, section: str, key: str) -> Any:
125
+ """Read a value from the configuration file.
126
+
127
+ Parameters:
128
+ - section (str): The section in the configuration file.
129
+ - key (str): The key to be read.
130
+
131
+ Returns:
132
+ The value associated with the key.
133
+ """
134
+ return self.read_key(section, key)
135
+
136
+ def get_int(self, section: str, key: str) -> int:
137
+ """Read an integer value from the configuration file.
138
+
139
+ Parameters:
140
+ - section (str): The section in the configuration file.
141
+ - key (str): The key to be read.
142
+
143
+ Returns:
144
+ int: The integer value.
145
+ """
146
+ return self.read_key(section, key, int)
147
+
148
+ def get_float(self, section: str, key: str) -> int:
149
+ """Read an float value from the configuration file.
150
+
151
+ Parameters:
152
+ - section (str): The section in the configuration file.
153
+ - key (str): The key to be read.
154
+
155
+ Returns:
156
+ float: The float value.
157
+ """
158
+ return self.read_key(section, key, float)
159
+
160
+ def get_bool(self, section: str, key: str) -> bool:
161
+ """Read a boolean value from the configuration file.
162
+
163
+ Parameters:
164
+ - section (str): The section in the configuration file.
165
+ - key (str): The key to be read.
166
+
167
+ Returns:
168
+ bool: The boolean value.
169
+ """
170
+ return self.read_key(section, key, bool)
171
+
172
+ def get_list(self, section: str, key: str) -> List[str]:
173
+ """Read a list value from the configuration file.
174
+
175
+ Parameters:
176
+ - section (str): The section in the configuration file.
177
+ - key (str): The key to be read.
178
+
179
+ Returns:
180
+ list: The list value.
181
+ """
182
+ return self.read_key(section, key, list)
183
+
184
+ def get_dict(self, section: str, key: str) -> dict:
185
+ """Read a dictionary value from the configuration file.
186
+
187
+ Parameters:
188
+ - section (str): The section in the configuration file.
189
+ - key (str): The key to be read.
190
+
191
+ Returns:
192
+ dict: The dictionary value.
193
+ """
194
+ return self.read_key(section, key, dict)
195
+
196
+ def set_key(self, section: str, key: str, value: Any) -> None:
197
+ """Set a key in the configuration file.
198
+
199
+ Parameters:
200
+ - section (str): The section in the configuration file.
201
+ - key (str): The key to be set.
202
+ - value (Any): The value to be associated with the key.
203
+ """
204
+ try:
205
+ if section not in self.config:
206
+ self.config[section] = {}
207
+
208
+ self.config[section][key] = value
209
+ cache_key = f"{section}.{key}"
210
+ self.cache[cache_key] = value
211
+ self.write_config()
212
+
213
+ except Exception as e:
214
+ print(f"Error setting key '{key}' in section '{section}': {e}")
215
+
216
+ def write_config(self) -> None:
217
+ """Write the configuration to the file."""
218
+ try:
219
+ with open(self.file_path, 'w') as f:
220
+ json.dump(self.config, f, indent=4)
221
+ except Exception as e:
222
+ print(f"Error writing configuration file: {e}")
223
+
224
+
225
+ # Initialize
226
+ config_manager = ConfigManager()
227
+ config_manager.read_config()