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.
- StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py +143 -143
- StreamingCommunity/Api/Player/Helper/Vixcloud/util.py +136 -136
- StreamingCommunity/Api/Player/ddl.py +89 -89
- StreamingCommunity/Api/Player/maxstream.py +151 -151
- StreamingCommunity/Api/Player/supervideo.py +193 -193
- StreamingCommunity/Api/Player/vixcloud.py +272 -272
- StreamingCommunity/Api/Site/1337xx/__init__.py +51 -50
- StreamingCommunity/Api/Site/1337xx/costant.py +14 -14
- StreamingCommunity/Api/Site/1337xx/site.py +87 -89
- StreamingCommunity/Api/Site/1337xx/title.py +63 -64
- StreamingCommunity/Api/Site/altadefinizionegratis/__init__.py +74 -50
- StreamingCommunity/Api/Site/altadefinizionegratis/costant.py +21 -19
- StreamingCommunity/Api/Site/altadefinizionegratis/film.py +81 -72
- StreamingCommunity/Api/Site/altadefinizionegratis/site.py +116 -94
- StreamingCommunity/Api/Site/animeunity/__init__.py +75 -50
- StreamingCommunity/Api/Site/animeunity/costant.py +21 -19
- StreamingCommunity/Api/Site/animeunity/film_serie.py +172 -134
- StreamingCommunity/Api/Site/animeunity/site.py +191 -174
- StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +97 -97
- StreamingCommunity/Api/Site/cb01new/__init__.py +51 -51
- StreamingCommunity/Api/Site/cb01new/costant.py +19 -19
- StreamingCommunity/Api/Site/cb01new/film.py +61 -71
- StreamingCommunity/Api/Site/cb01new/site.py +82 -82
- StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py +55 -55
- StreamingCommunity/Api/Site/ddlstreamitaly/costant.py +20 -20
- StreamingCommunity/Api/Site/ddlstreamitaly/series.py +150 -145
- StreamingCommunity/Api/Site/ddlstreamitaly/site.py +98 -98
- StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +84 -84
- StreamingCommunity/Api/Site/guardaserie/__init__.py +50 -50
- StreamingCommunity/Api/Site/guardaserie/costant.py +19 -19
- StreamingCommunity/Api/Site/guardaserie/series.py +200 -198
- StreamingCommunity/Api/Site/guardaserie/site.py +89 -89
- StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +110 -110
- StreamingCommunity/Api/Site/ilcorsaronero/__init__.py +51 -51
- StreamingCommunity/Api/Site/ilcorsaronero/costant.py +18 -18
- StreamingCommunity/Api/Site/ilcorsaronero/site.py +71 -71
- StreamingCommunity/Api/Site/ilcorsaronero/title.py +44 -44
- StreamingCommunity/Api/Site/ilcorsaronero/util/ilCorsarScraper.py +149 -149
- StreamingCommunity/Api/Site/mostraguarda/__init__.py +48 -48
- StreamingCommunity/Api/Site/mostraguarda/costant.py +18 -18
- StreamingCommunity/Api/Site/mostraguarda/film.py +90 -101
- StreamingCommunity/Api/Site/streamingcommunity/__init__.py +79 -55
- StreamingCommunity/Api/Site/streamingcommunity/costant.py +21 -19
- StreamingCommunity/Api/Site/streamingcommunity/film.py +86 -75
- StreamingCommunity/Api/Site/streamingcommunity/series.py +260 -207
- StreamingCommunity/Api/Site/streamingcommunity/site.py +156 -142
- StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +124 -124
- StreamingCommunity/Api/Template/Class/SearchType.py +101 -101
- StreamingCommunity/Api/Template/Util/__init__.py +4 -4
- StreamingCommunity/Api/Template/Util/get_domain.py +201 -201
- StreamingCommunity/Api/Template/Util/manage_ep.py +178 -178
- StreamingCommunity/Api/Template/Util/recall_search.py +37 -37
- StreamingCommunity/Api/Template/__init__.py +2 -2
- StreamingCommunity/Api/Template/site.py +87 -87
- StreamingCommunity/Lib/Downloader/HLS/downloader.py +529 -1008
- StreamingCommunity/Lib/Downloader/HLS/proxyes.py +110 -110
- StreamingCommunity/Lib/Downloader/HLS/segments.py +446 -573
- StreamingCommunity/Lib/Downloader/MP4/downloader.py +181 -155
- StreamingCommunity/Lib/Downloader/TOR/downloader.py +297 -295
- StreamingCommunity/Lib/Downloader/__init__.py +4 -4
- StreamingCommunity/Lib/FFmpeg/__init__.py +4 -4
- StreamingCommunity/Lib/FFmpeg/capture.py +170 -170
- StreamingCommunity/Lib/FFmpeg/command.py +264 -296
- StreamingCommunity/Lib/FFmpeg/util.py +248 -248
- StreamingCommunity/Lib/M3U8/__init__.py +5 -5
- StreamingCommunity/Lib/M3U8/decryptor.py +164 -164
- StreamingCommunity/Lib/M3U8/estimator.py +146 -228
- StreamingCommunity/Lib/M3U8/parser.py +666 -666
- StreamingCommunity/Lib/M3U8/url_fixer.py +57 -57
- StreamingCommunity/Lib/TMBD/__init__.py +1 -1
- StreamingCommunity/Lib/TMBD/obj_tmbd.py +39 -39
- StreamingCommunity/Lib/TMBD/tmdb.py +345 -345
- StreamingCommunity/TelegramHelp/__init__.py +0 -0
- StreamingCommunity/TelegramHelp/request_manager.py +82 -0
- StreamingCommunity/TelegramHelp/session.py +56 -0
- StreamingCommunity/TelegramHelp/telegram_bot.py +561 -0
- StreamingCommunity/Upload/update.py +75 -67
- StreamingCommunity/Upload/version.py +5 -5
- StreamingCommunity/Util/_jsonConfig.py +227 -228
- StreamingCommunity/Util/call_stack.py +42 -42
- StreamingCommunity/Util/color.py +20 -20
- StreamingCommunity/Util/console.py +12 -12
- StreamingCommunity/Util/ffmpeg_installer.py +342 -370
- StreamingCommunity/Util/headers.py +159 -159
- StreamingCommunity/Util/logger.py +61 -61
- StreamingCommunity/Util/message.py +36 -64
- StreamingCommunity/Util/os.py +500 -507
- StreamingCommunity/Util/table.py +271 -228
- StreamingCommunity/run.py +352 -245
- {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/LICENSE +674 -674
- {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/METADATA +601 -543
- StreamingCommunity-2.5.6.dist-info/RECORD +96 -0
- {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/entry_points.txt +0 -1
- StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/js_parser.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/js_parser.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/util.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Player/Helper/Vixcloud/__pycache__/util.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/ddl.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/ddl.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/maxstream.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/maxstream.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/supervideo.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/supervideo.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/vixcloud.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Player/__pycache__/vixcloud.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/title.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/1337xx/__pycache__/title.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/film.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/film.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/altadefinizionegratis/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/film_serie.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/film_serie.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/animeunity/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/film.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/film.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/cb01new/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/series.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/series.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ddlstreamitaly/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/series.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/series.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/guardaserie/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/title.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/__pycache__/title.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/util/__pycache__/ilCorsarScraper.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/ilcorsaronero/util/__pycache__/ilCorsarScraper.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/mostraguarda/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/mostraguarda/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/mostraguarda/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/mostraguarda/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/mostraguarda/__pycache__/film.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/mostraguarda/__pycache__/film.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/costant.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/costant.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/film.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/film.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/series.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/series.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/util/__pycache__/ScrapeSerie.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Site/streamingcommunity/util/__pycache__/ScrapeSerie.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Template/Class/__pycache__/SearchType.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Template/Class/__pycache__/SearchType.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/get_domain.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/get_domain.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/manage_ep.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/manage_ep.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/recall_search.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Template/Util/__pycache__/recall_search.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Template/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Template/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Api/Template/__pycache__/site.cpython-313.pyc +0 -0
- StreamingCommunity/Api/Template/__pycache__/site.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/Downloader/HLS/__pycache__/downloader.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/Downloader/HLS/__pycache__/downloader.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/Downloader/HLS/__pycache__/proxyes.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/Downloader/HLS/__pycache__/proxyes.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/Downloader/HLS/__pycache__/segments.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/Downloader/HLS/__pycache__/segments.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/Downloader/MP4/__pycache__/downloader.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/Downloader/MP4/__pycache__/downloader.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/Downloader/TOR/__pycache__/downloader.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/Downloader/TOR/__pycache__/downloader.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/Downloader/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/Downloader/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/capture.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/capture.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/command.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/command.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/util.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/FFmpeg/__pycache__/util.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/decryptor.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/decryptor.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/estimator.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/estimator.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/parser.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/parser.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/url_fixer.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/M3U8/__pycache__/url_fixer.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/TMBD/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/TMBD/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/TMBD/__pycache__/obj_tmbd.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/TMBD/__pycache__/obj_tmbd.cpython-39.pyc +0 -0
- StreamingCommunity/Lib/TMBD/__pycache__/tmdb.cpython-313.pyc +0 -0
- StreamingCommunity/Lib/TMBD/__pycache__/tmdb.cpython-39.pyc +0 -0
- StreamingCommunity/Upload/__pycache__/update.cpython-313.pyc +0 -0
- StreamingCommunity/Upload/__pycache__/update.cpython-39.pyc +0 -0
- StreamingCommunity/Upload/__pycache__/version.cpython-313.pyc +0 -0
- StreamingCommunity/Upload/__pycache__/version.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/_jsonConfig.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/_jsonConfig.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/call_stack.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/call_stack.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/color.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/color.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/console.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/console.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/ffmpeg_installer.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/ffmpeg_installer.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/headers.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/headers.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/logger.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/logger.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/message.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/message.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/os.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/os.cpython-39.pyc +0 -0
- StreamingCommunity/Util/__pycache__/table.cpython-313.pyc +0 -0
- StreamingCommunity/Util/__pycache__/table.cpython-39.pyc +0 -0
- StreamingCommunity/__pycache__/__init__.cpython-313.pyc +0 -0
- StreamingCommunity/__pycache__/__init__.cpython-39.pyc +0 -0
- StreamingCommunity/__pycache__/run.cpython-313.pyc +0 -0
- StreamingCommunity/__pycache__/run.cpython-39.pyc +0 -0
- StreamingCommunity-2.5.2.dist-info/RECORD +0 -264
- {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/WHEEL +0 -0
- {StreamingCommunity-2.5.2.dist-info → StreamingCommunity-2.5.6.dist-info}/top_level.txt +0 -0
|
@@ -1,170 +1,170 @@
|
|
|
1
|
-
# 16.04.24
|
|
2
|
-
|
|
3
|
-
import re
|
|
4
|
-
import logging
|
|
5
|
-
import threading
|
|
6
|
-
import subprocess
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# Internal utilities
|
|
10
|
-
from StreamingCommunity.Util.console import console
|
|
11
|
-
from StreamingCommunity.Util.os import internet_manager
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# Variable
|
|
15
|
-
terminate_flag = threading.Event()
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def capture_output(process: subprocess.Popen, description: str) -> None:
|
|
19
|
-
"""
|
|
20
|
-
Function to capture and print output from a subprocess.
|
|
21
|
-
|
|
22
|
-
Parameters:
|
|
23
|
-
- process (subprocess.Popen): The subprocess whose output is captured.
|
|
24
|
-
- description (str): Description of the command being executed.
|
|
25
|
-
"""
|
|
26
|
-
try:
|
|
27
|
-
|
|
28
|
-
# Variable to store the length of the longest progress string
|
|
29
|
-
max_length = 0
|
|
30
|
-
|
|
31
|
-
for line in iter(process.stdout.readline, ''):
|
|
32
|
-
try:
|
|
33
|
-
line = line.strip()
|
|
34
|
-
if not line:
|
|
35
|
-
continue
|
|
36
|
-
|
|
37
|
-
logging.info(f"FFMPEG line: {line}")
|
|
38
|
-
|
|
39
|
-
# Capture only error
|
|
40
|
-
if "rror" in str(line):
|
|
41
|
-
console.log(f"[red]FFMPEG: {str(line).strip()}")
|
|
42
|
-
|
|
43
|
-
# Check if termination is requested
|
|
44
|
-
if terminate_flag.is_set():
|
|
45
|
-
break
|
|
46
|
-
|
|
47
|
-
if "size=" in line:
|
|
48
|
-
try:
|
|
49
|
-
|
|
50
|
-
# Parse the output line to extract relevant information
|
|
51
|
-
data = parse_output_line(line)
|
|
52
|
-
|
|
53
|
-
if 'q' in data:
|
|
54
|
-
is_end = (float(data.get('q', -1.0)) == -1.0)
|
|
55
|
-
size_key = 'Lsize' if is_end else 'size'
|
|
56
|
-
byte_size = int(re.findall(r'\d+', data.get(size_key, '0'))[0]) * 1000
|
|
57
|
-
else:
|
|
58
|
-
byte_size = int(re.findall(r'\d+', data.get('size', '0'))[0]) * 1000
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
# Construct the progress string with formatted output information
|
|
62
|
-
progress_string = (f"→ {description}[white]: "
|
|
63
|
-
f"([green]'speed': [yellow]{data.get('speed', 'N/A')}[white], "
|
|
64
|
-
f"[green]'size': [yellow]{internet_manager.format_file_size(byte_size)}[white])")
|
|
65
|
-
max_length = max(max_length, len(progress_string))
|
|
66
|
-
|
|
67
|
-
# Print the progress string to the console, overwriting the previous line
|
|
68
|
-
console.print(progress_string.ljust(max_length), end="\r")
|
|
69
|
-
|
|
70
|
-
except Exception as e:
|
|
71
|
-
logging.error(f"Error parsing output line: {line} - {e}")
|
|
72
|
-
|
|
73
|
-
except Exception as e:
|
|
74
|
-
logging.error(f"Error processing line from subprocess: {e}")
|
|
75
|
-
|
|
76
|
-
except Exception as e:
|
|
77
|
-
logging.error(f"Error in capture_output: {e}")
|
|
78
|
-
|
|
79
|
-
finally:
|
|
80
|
-
try:
|
|
81
|
-
terminate_process(process)
|
|
82
|
-
except Exception as e:
|
|
83
|
-
logging.error(f"Error terminating process: {e}")
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
def parse_output_line(line: str) -> dict:
|
|
87
|
-
"""
|
|
88
|
-
Function to parse the output line and extract relevant information.
|
|
89
|
-
|
|
90
|
-
Parameters:
|
|
91
|
-
- line (str): The output line to parse.
|
|
92
|
-
|
|
93
|
-
Returns:
|
|
94
|
-
dict: A dictionary containing parsed information.
|
|
95
|
-
"""
|
|
96
|
-
try:
|
|
97
|
-
|
|
98
|
-
data = {}
|
|
99
|
-
|
|
100
|
-
# Split the line by whitespace and extract key-value pairs
|
|
101
|
-
parts = line.replace(" ", "").replace("= ", "=").split()
|
|
102
|
-
|
|
103
|
-
for part in parts:
|
|
104
|
-
key_value = part.split('=')
|
|
105
|
-
|
|
106
|
-
if len(key_value) == 2:
|
|
107
|
-
key = key_value[0]
|
|
108
|
-
value = key_value[1]
|
|
109
|
-
data[key] = value
|
|
110
|
-
|
|
111
|
-
return data
|
|
112
|
-
|
|
113
|
-
except Exception as e:
|
|
114
|
-
logging.error(f"Error parsing line: {line} - {e}")
|
|
115
|
-
return {}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
def terminate_process(process):
|
|
119
|
-
"""
|
|
120
|
-
Function to terminate a subprocess if it's still running.
|
|
121
|
-
|
|
122
|
-
Parameters:
|
|
123
|
-
- process (subprocess.Popen): The subprocess to terminate.
|
|
124
|
-
"""
|
|
125
|
-
try:
|
|
126
|
-
if process.poll() is None: # Check if the process is still running
|
|
127
|
-
process.kill()
|
|
128
|
-
except Exception as e:
|
|
129
|
-
logging.error(f"Failed to terminate process: {e}")
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
def capture_ffmpeg_real_time(ffmpeg_command: list, description: str) -> None:
|
|
133
|
-
"""
|
|
134
|
-
Function to capture real-time output from ffmpeg process.
|
|
135
|
-
|
|
136
|
-
Parameters:
|
|
137
|
-
- ffmpeg_command (list): The command to execute ffmpeg.
|
|
138
|
-
- description (str): Description of the command being executed.
|
|
139
|
-
"""
|
|
140
|
-
|
|
141
|
-
global terminate_flag
|
|
142
|
-
|
|
143
|
-
# Clear the terminate_flag before starting a new capture
|
|
144
|
-
terminate_flag.clear()
|
|
145
|
-
|
|
146
|
-
try:
|
|
147
|
-
|
|
148
|
-
# Start the ffmpeg process with subprocess.Popen
|
|
149
|
-
process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
|
|
150
|
-
|
|
151
|
-
# Start a thread to capture and print output
|
|
152
|
-
output_thread = threading.Thread(target=capture_output, args=(process, description))
|
|
153
|
-
output_thread.start()
|
|
154
|
-
|
|
155
|
-
try:
|
|
156
|
-
# Wait for ffmpeg process to complete
|
|
157
|
-
process.wait()
|
|
158
|
-
|
|
159
|
-
except KeyboardInterrupt:
|
|
160
|
-
logging.error("Terminating ffmpeg process...")
|
|
161
|
-
|
|
162
|
-
except Exception as e:
|
|
163
|
-
logging.error(f"Error in ffmpeg process: {e}")
|
|
164
|
-
|
|
165
|
-
finally:
|
|
166
|
-
terminate_flag.set() # Signal the output capture thread to terminate
|
|
167
|
-
output_thread.join() # Wait for the output capture thread to complete
|
|
168
|
-
|
|
169
|
-
except Exception as e:
|
|
170
|
-
logging.error(f"Failed to start ffmpeg process: {e}")
|
|
1
|
+
# 16.04.24
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
import logging
|
|
5
|
+
import threading
|
|
6
|
+
import subprocess
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
# Internal utilities
|
|
10
|
+
from StreamingCommunity.Util.console import console
|
|
11
|
+
from StreamingCommunity.Util.os import internet_manager
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Variable
|
|
15
|
+
terminate_flag = threading.Event()
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def capture_output(process: subprocess.Popen, description: str) -> None:
|
|
19
|
+
"""
|
|
20
|
+
Function to capture and print output from a subprocess.
|
|
21
|
+
|
|
22
|
+
Parameters:
|
|
23
|
+
- process (subprocess.Popen): The subprocess whose output is captured.
|
|
24
|
+
- description (str): Description of the command being executed.
|
|
25
|
+
"""
|
|
26
|
+
try:
|
|
27
|
+
|
|
28
|
+
# Variable to store the length of the longest progress string
|
|
29
|
+
max_length = 0
|
|
30
|
+
|
|
31
|
+
for line in iter(process.stdout.readline, ''):
|
|
32
|
+
try:
|
|
33
|
+
line = line.strip()
|
|
34
|
+
if not line:
|
|
35
|
+
continue
|
|
36
|
+
|
|
37
|
+
logging.info(f"FFMPEG line: {line}")
|
|
38
|
+
|
|
39
|
+
# Capture only error
|
|
40
|
+
if "rror" in str(line):
|
|
41
|
+
console.log(f"[red]FFMPEG: {str(line).strip()}")
|
|
42
|
+
|
|
43
|
+
# Check if termination is requested
|
|
44
|
+
if terminate_flag.is_set():
|
|
45
|
+
break
|
|
46
|
+
|
|
47
|
+
if "size=" in line:
|
|
48
|
+
try:
|
|
49
|
+
|
|
50
|
+
# Parse the output line to extract relevant information
|
|
51
|
+
data = parse_output_line(line)
|
|
52
|
+
|
|
53
|
+
if 'q' in data:
|
|
54
|
+
is_end = (float(data.get('q', -1.0)) == -1.0)
|
|
55
|
+
size_key = 'Lsize' if is_end else 'size'
|
|
56
|
+
byte_size = int(re.findall(r'\d+', data.get(size_key, '0'))[0]) * 1000
|
|
57
|
+
else:
|
|
58
|
+
byte_size = int(re.findall(r'\d+', data.get('size', '0'))[0]) * 1000
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
# Construct the progress string with formatted output information
|
|
62
|
+
progress_string = (f"→ {description}[white]: "
|
|
63
|
+
f"([green]'speed': [yellow]{data.get('speed', 'N/A')}[white], "
|
|
64
|
+
f"[green]'size': [yellow]{internet_manager.format_file_size(byte_size)}[white])")
|
|
65
|
+
max_length = max(max_length, len(progress_string))
|
|
66
|
+
|
|
67
|
+
# Print the progress string to the console, overwriting the previous line
|
|
68
|
+
console.print(progress_string.ljust(max_length), end="\r")
|
|
69
|
+
|
|
70
|
+
except Exception as e:
|
|
71
|
+
logging.error(f"Error parsing output line: {line} - {e}")
|
|
72
|
+
|
|
73
|
+
except Exception as e:
|
|
74
|
+
logging.error(f"Error processing line from subprocess: {e}")
|
|
75
|
+
|
|
76
|
+
except Exception as e:
|
|
77
|
+
logging.error(f"Error in capture_output: {e}")
|
|
78
|
+
|
|
79
|
+
finally:
|
|
80
|
+
try:
|
|
81
|
+
terminate_process(process)
|
|
82
|
+
except Exception as e:
|
|
83
|
+
logging.error(f"Error terminating process: {e}")
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def parse_output_line(line: str) -> dict:
|
|
87
|
+
"""
|
|
88
|
+
Function to parse the output line and extract relevant information.
|
|
89
|
+
|
|
90
|
+
Parameters:
|
|
91
|
+
- line (str): The output line to parse.
|
|
92
|
+
|
|
93
|
+
Returns:
|
|
94
|
+
dict: A dictionary containing parsed information.
|
|
95
|
+
"""
|
|
96
|
+
try:
|
|
97
|
+
|
|
98
|
+
data = {}
|
|
99
|
+
|
|
100
|
+
# Split the line by whitespace and extract key-value pairs
|
|
101
|
+
parts = line.replace(" ", "").replace("= ", "=").split()
|
|
102
|
+
|
|
103
|
+
for part in parts:
|
|
104
|
+
key_value = part.split('=')
|
|
105
|
+
|
|
106
|
+
if len(key_value) == 2:
|
|
107
|
+
key = key_value[0]
|
|
108
|
+
value = key_value[1]
|
|
109
|
+
data[key] = value
|
|
110
|
+
|
|
111
|
+
return data
|
|
112
|
+
|
|
113
|
+
except Exception as e:
|
|
114
|
+
logging.error(f"Error parsing line: {line} - {e}")
|
|
115
|
+
return {}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def terminate_process(process):
|
|
119
|
+
"""
|
|
120
|
+
Function to terminate a subprocess if it's still running.
|
|
121
|
+
|
|
122
|
+
Parameters:
|
|
123
|
+
- process (subprocess.Popen): The subprocess to terminate.
|
|
124
|
+
"""
|
|
125
|
+
try:
|
|
126
|
+
if process.poll() is None: # Check if the process is still running
|
|
127
|
+
process.kill()
|
|
128
|
+
except Exception as e:
|
|
129
|
+
logging.error(f"Failed to terminate process: {e}")
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def capture_ffmpeg_real_time(ffmpeg_command: list, description: str) -> None:
|
|
133
|
+
"""
|
|
134
|
+
Function to capture real-time output from ffmpeg process.
|
|
135
|
+
|
|
136
|
+
Parameters:
|
|
137
|
+
- ffmpeg_command (list): The command to execute ffmpeg.
|
|
138
|
+
- description (str): Description of the command being executed.
|
|
139
|
+
"""
|
|
140
|
+
|
|
141
|
+
global terminate_flag
|
|
142
|
+
|
|
143
|
+
# Clear the terminate_flag before starting a new capture
|
|
144
|
+
terminate_flag.clear()
|
|
145
|
+
|
|
146
|
+
try:
|
|
147
|
+
|
|
148
|
+
# Start the ffmpeg process with subprocess.Popen
|
|
149
|
+
process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
|
|
150
|
+
|
|
151
|
+
# Start a thread to capture and print output
|
|
152
|
+
output_thread = threading.Thread(target=capture_output, args=(process, description))
|
|
153
|
+
output_thread.start()
|
|
154
|
+
|
|
155
|
+
try:
|
|
156
|
+
# Wait for ffmpeg process to complete
|
|
157
|
+
process.wait()
|
|
158
|
+
|
|
159
|
+
except KeyboardInterrupt:
|
|
160
|
+
logging.error("Terminating ffmpeg process...")
|
|
161
|
+
|
|
162
|
+
except Exception as e:
|
|
163
|
+
logging.error(f"Error in ffmpeg process: {e}")
|
|
164
|
+
|
|
165
|
+
finally:
|
|
166
|
+
terminate_flag.set() # Signal the output capture thread to terminate
|
|
167
|
+
output_thread.join() # Wait for the output capture thread to complete
|
|
168
|
+
|
|
169
|
+
except Exception as e:
|
|
170
|
+
logging.error(f"Failed to start ffmpeg process: {e}")
|