StreamingCommunity 3.3.1__tar.gz → 3.3.3__tar.gz
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-3.3.1/StreamingCommunity.egg-info → streamingcommunity-3.3.3}/PKG-INFO +295 -532
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/README.md +290 -527
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/mediasetinfinity/util/get_license.py +28 -1
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/raiplay/site.py +6 -4
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/raiplay/util/ScrapeSerie.py +6 -2
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingcommunity/site.py +0 -3
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingwatch/site.py +0 -3
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/DASH/cdm_helpher.py +1 -18
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/DASH/downloader.py +18 -14
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/HLS/downloader.py +22 -10
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/HLS/segments.py +126 -72
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/M3U8/decryptor.py +0 -14
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/M3U8/estimator.py +44 -34
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/TMBD/tmdb.py +0 -12
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Upload/update.py +1 -1
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Upload/version.py +1 -1
- streamingcommunity-3.3.1/StreamingCommunity/Util/bento4_installer.py → streamingcommunity-3.3.3/StreamingCommunity/Util/installer/bento4_install.py +56 -44
- streamingcommunity-3.3.3/StreamingCommunity/Util/installer/binary_paths.py +83 -0
- streamingcommunity-3.3.3/StreamingCommunity/Util/installer/device_install.py +133 -0
- streamingcommunity-3.3.1/StreamingCommunity/Util/ffmpeg_installer.py → streamingcommunity-3.3.3/StreamingCommunity/Util/installer/ffmpeg_install.py +100 -138
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/logger.py +3 -8
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/os.py +34 -150
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/run.py +2 -3
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3/StreamingCommunity.egg-info}/PKG-INFO +295 -532
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity.egg-info/SOURCES.txt +5 -6
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/setup.py +4 -4
- streamingcommunity-3.3.1/StreamingCommunity/Api/Player/ddl.py +0 -82
- streamingcommunity-3.3.1/StreamingCommunity/Api/Player/maxstream.py +0 -141
- streamingcommunity-3.3.1/StreamingCommunity/Api/Player/mixdrop.py +0 -146
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/LICENSE +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/MANIFEST.in +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Player/Helper/Vixcloud/util.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Player/hdplayer.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Player/mediapolisvod.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Player/supervideo.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Player/sweetpixel.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Player/vixcloud.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/altadefinizione/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/altadefinizione/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/altadefinizione/series.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/altadefinizione/site.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/altadefinizione/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeunity/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeunity/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeunity/serie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeunity/site.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeworld/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeworld/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeworld/serie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeworld/site.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/animeworld/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/crunchyroll/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/crunchyroll/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/crunchyroll/series.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/crunchyroll/site.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/crunchyroll/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/crunchyroll/util/get_license.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/guardaserie/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/guardaserie/series.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/guardaserie/site.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/mediasetinfinity/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/mediasetinfinity/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/mediasetinfinity/series.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/mediasetinfinity/site.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/mediasetinfinity/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/mediasetinfinity/util/fix_mpd.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/raiplay/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/raiplay/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/raiplay/series.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/raiplay/util/get_license.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingcommunity/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingcommunity/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingcommunity/series.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingwatch/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingwatch/film.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingwatch/series.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Site/streamingwatch/util/ScrapeSerie.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Template/Class/SearchType.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Template/Util/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Template/Util/manage_ep.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Template/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Template/config_loader.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Api/Template/site.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/DASH/decrypt.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/DASH/parser.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/DASH/segments.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/MP4/downloader.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/TOR/downloader.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/Downloader/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/FFmpeg/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/FFmpeg/capture.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/FFmpeg/command.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/FFmpeg/util.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/M3U8/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/M3U8/parser.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/M3U8/url_fixer.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/TMBD/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Lib/TMBD/obj_tmbd.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/TelegramHelp/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/TelegramHelp/config.json +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/TelegramHelp/telegram_bot.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/color.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/config_json.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/headers.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/http_client.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/message.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/Util/table.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/__init__.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity/global_search.py +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity.egg-info/dependency_links.txt +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity.egg-info/entry_points.txt +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity.egg-info/requires.txt +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/StreamingCommunity.egg-info/top_level.txt +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/requirements.txt +0 -0
- {streamingcommunity-3.3.1 → streamingcommunity-3.3.3}/setup.cfg +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: StreamingCommunity
|
|
3
|
-
Version: 3.3.
|
|
4
|
-
Home-page: https://github.com/
|
|
5
|
-
Author:
|
|
6
|
-
Project-URL: Bug Reports, https://github.com/
|
|
7
|
-
Project-URL: Source, https://github.com/
|
|
3
|
+
Version: 3.3.3
|
|
4
|
+
Home-page: https://github.com/Arrowar/StreamingCommunity
|
|
5
|
+
Author: Arrowar
|
|
6
|
+
Project-URL: Bug Reports, https://github.com/Arrowar/StreamingCommunity/issues
|
|
7
|
+
Project-URL: Source, https://github.com/Arrowar/StreamingCommunity
|
|
8
8
|
Keywords: streaming community
|
|
9
9
|
Requires-Python: >=3.8
|
|
10
10
|
Description-Content-Type: text/markdown
|
|
@@ -45,181 +45,156 @@ Dynamic: requires-python
|
|
|
45
45
|
[](https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE)
|
|
46
46
|
|
|
47
47
|
## 💝 Support the Project
|
|
48
|
-
|
|
49
48
|
[](https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C)
|
|
50
|
-
## 🚀 Download & Install
|
|
51
49
|
|
|
50
|
+
## 🚀 Download & Install
|
|
52
51
|
[](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe)
|
|
53
52
|
[](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac)
|
|
54
53
|
[](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_latest)
|
|
55
54
|
[](https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux_previous)
|
|
55
|
+
|
|
56
56
|
---
|
|
57
57
|
|
|
58
|
-
*⚡ **Quick Start:** `pip install
|
|
58
|
+
*⚡ **Quick Start:** `pip install StreamingCommunity && StreamingCommunity`*
|
|
59
59
|
|
|
60
60
|
</div>
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
<details>
|
|
65
|
-
<summary>📦 Installation</summary>
|
|
62
|
+
---
|
|
66
63
|
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
64
|
+
## 📖 Table of Contents
|
|
65
|
+
- [Installation](#manual-installation)
|
|
66
|
+
- [Quick Start](#quick-start)
|
|
67
|
+
- [Downloaders](#downloaders)
|
|
68
|
+
- [Configuration](#configuration)
|
|
69
|
+
- [Login](.github/.site/login.md)
|
|
70
|
+
- [Usage Examples](#usage-examples)
|
|
71
|
+
- [Global Search](#global-search)
|
|
72
|
+
- [Advanced Features](#advanced-options)
|
|
73
|
+
- [Deployment](#docker)
|
|
74
|
+
- [Tutorials](#tutorials)
|
|
75
|
+
- [Related Projects](#useful-project)
|
|
77
76
|
|
|
78
|
-
|
|
79
|
-
<summary>⚙️ Configuration & Usage</summary>
|
|
77
|
+
---
|
|
80
78
|
|
|
81
|
-
|
|
82
|
-
- 🔧 [Default](#default-settings)
|
|
83
|
-
- 📩 [Request](#requests-settings)
|
|
84
|
-
- 📥 [Download](#m3u8_download-settings)
|
|
85
|
-
- 🔍 [Parser](#m3u8_parser-settings)
|
|
86
|
-
- 📝 [Command](#command)
|
|
87
|
-
- 🔍 [Global search](#global-search)
|
|
88
|
-
- 💻 [Examples of terminal](#examples-of-terminal-usage)
|
|
89
|
-
</details>
|
|
79
|
+
## Manual Installation
|
|
90
80
|
|
|
91
|
-
<
|
|
92
|
-
<summary>🔧 Advanced Features</summary>
|
|
81
|
+
<summary>⚙️ Python Dependencies</summary>
|
|
93
82
|
|
|
94
|
-
|
|
95
|
-
- 🐳 [Docker](#docker)
|
|
96
|
-
- 📝 [Telegram Usage](#telegram-usage)
|
|
97
|
-
- 🧩 [Hook/Plugin System](#hookplugin-system)
|
|
98
|
-
</details>
|
|
83
|
+
#### On Windows:
|
|
99
84
|
|
|
100
|
-
|
|
101
|
-
|
|
85
|
+
```powershell
|
|
86
|
+
pip install -r requirements.txt
|
|
87
|
+
```
|
|
102
88
|
|
|
103
|
-
|
|
104
|
-
- 📝 [To do](#to-do)
|
|
105
|
-
- ⚠️ [Disclaimer](#disclaimer)
|
|
106
|
-
</details>
|
|
89
|
+
#### On Linux/MacOS:
|
|
107
90
|
|
|
108
|
-
|
|
91
|
+
```bash
|
|
92
|
+
pip3 install -r requirements.txt
|
|
93
|
+
# or alternatively:
|
|
94
|
+
python3 -m pip install -r requirements.txt
|
|
95
|
+
```
|
|
109
96
|
|
|
110
|
-
|
|
97
|
+
<detail>
|
|
98
|
+
<summary> Update </summary>
|
|
111
99
|
|
|
112
|
-
|
|
100
|
+
### On Windows:
|
|
113
101
|
|
|
114
|
-
```
|
|
115
|
-
|
|
102
|
+
```powershell
|
|
103
|
+
python update.py
|
|
116
104
|
```
|
|
117
105
|
|
|
118
|
-
|
|
106
|
+
### On Linux/MacOS:
|
|
119
107
|
|
|
120
108
|
```bash
|
|
121
|
-
|
|
109
|
+
python3 update.py
|
|
122
110
|
```
|
|
123
111
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
Create a simple script (`run_streaming.py`) to launch the main application:
|
|
112
|
+
---
|
|
127
113
|
|
|
128
|
-
|
|
129
|
-
from StreamingCommunity.run import main
|
|
114
|
+
## Quick Start
|
|
130
115
|
|
|
131
|
-
|
|
132
|
-
|
|
116
|
+
After installing via pip, just run:
|
|
117
|
+
```bash
|
|
118
|
+
StreamingCommunity
|
|
133
119
|
```
|
|
120
|
+
to start the application.
|
|
134
121
|
|
|
135
122
|
Run the script:
|
|
136
|
-
|
|
137
123
|
```bash
|
|
138
124
|
python run_streaming.py
|
|
139
125
|
```
|
|
140
126
|
|
|
141
|
-
|
|
127
|
+
**Manual execution:**
|
|
128
|
+
|
|
129
|
+
**Windows:**
|
|
130
|
+
```powershell
|
|
131
|
+
python test_run.py
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Linux/MacOS:**
|
|
135
|
+
```bash
|
|
136
|
+
python3 test_run.py
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Downloaders
|
|
142
142
|
|
|
143
|
-
<
|
|
144
|
-
<summary>📥 HLS Downloader</summary>
|
|
143
|
+
<summary>📥 HLS</summary>
|
|
145
144
|
|
|
146
145
|
Download HTTP Live Streaming (HLS) content from m3u8 URLs.
|
|
147
146
|
|
|
148
147
|
```python
|
|
149
148
|
from StreamingCommunity import HLS_Downloader
|
|
150
149
|
|
|
151
|
-
# Initialize with m3u8 URL and optional output path
|
|
152
150
|
downloader = HLS_Downloader(
|
|
153
151
|
m3u8_url="https://example.com/stream.m3u8",
|
|
154
|
-
output_path="/downloads/video.mp4"
|
|
152
|
+
output_path="/downloads/video.mp4"
|
|
155
153
|
)
|
|
156
154
|
|
|
157
|
-
# Start the download
|
|
158
155
|
downloader.download()
|
|
159
156
|
```
|
|
160
157
|
|
|
161
|
-
See [HLS example](./Test/
|
|
162
|
-
</details>
|
|
158
|
+
See [HLS example](./Test/EasyDownload//HLS.py) for complete usage.
|
|
163
159
|
|
|
164
|
-
<
|
|
165
|
-
<summary>📽️ MP4 Downloader</summary>
|
|
160
|
+
<summary>📽️ MP4</summary>
|
|
166
161
|
|
|
167
162
|
Direct MP4 file downloader with support for custom headers and referrer.
|
|
168
163
|
|
|
169
164
|
```python
|
|
170
165
|
from StreamingCommunity import MP4_downloader
|
|
171
166
|
|
|
172
|
-
# Basic usage
|
|
173
167
|
downloader = MP4_downloader(
|
|
174
168
|
url="https://example.com/video.mp4",
|
|
175
169
|
path="/downloads/saved_video.mp4"
|
|
176
170
|
)
|
|
177
171
|
|
|
178
|
-
# Advanced usage with custom headers and referrer
|
|
179
|
-
headers = {
|
|
180
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
|
|
181
|
-
}
|
|
182
|
-
downloader = MP4_downloader(
|
|
183
|
-
url="https://example.com/video.mp4",
|
|
184
|
-
path="/downloads/saved_video.mp4",
|
|
185
|
-
referer="https://example.com",
|
|
186
|
-
headers_=headers
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
# Start download
|
|
190
172
|
downloader.download()
|
|
191
173
|
```
|
|
192
174
|
|
|
193
|
-
See [MP4 example](./Test/
|
|
194
|
-
</details>
|
|
175
|
+
See [MP4 example](./Test/EasyDownload/MP4.py) for complete usage.
|
|
195
176
|
|
|
196
|
-
<
|
|
197
|
-
<summary>🧲 Torrent Client</summary>
|
|
177
|
+
<summary>🧲 TOR</summary>
|
|
198
178
|
|
|
199
179
|
Download content via torrent magnet links.
|
|
200
180
|
|
|
201
181
|
```python
|
|
202
182
|
from StreamingCommunity import TOR_downloader
|
|
203
183
|
|
|
204
|
-
# Initialize torrent client
|
|
205
184
|
client = TOR_downloader()
|
|
206
185
|
|
|
207
|
-
# Add magnet link
|
|
208
186
|
client.add_magnet_link("magnet:?xt=urn:btih:example_hash&dn=example_name", save_path=".")
|
|
209
187
|
|
|
210
|
-
# Start download
|
|
211
188
|
client.start_download()
|
|
212
189
|
```
|
|
213
190
|
|
|
214
|
-
See [Torrent example](./Test/
|
|
215
|
-
</details>
|
|
191
|
+
See [Torrent example](./Test/EasyDownload/TOR.py) for complete usage.
|
|
216
192
|
|
|
217
|
-
<
|
|
218
|
-
<summary>🎞️ DASH Downloader</summary>
|
|
193
|
+
<summary>🎞️ DASH</summary>
|
|
219
194
|
|
|
220
195
|
```python
|
|
221
|
-
|
|
222
|
-
|
|
196
|
+
mpd_url = "https://example.com/stream.mpd"
|
|
197
|
+
license_url = "https://example.com/get_license"
|
|
223
198
|
|
|
224
199
|
dash_process = DASH_Downloader(
|
|
225
200
|
cdm_device=get_wvd_path(),
|
|
@@ -235,282 +210,17 @@ if dash_process.download_and_decrypt():
|
|
|
235
210
|
dash_process.get_status()
|
|
236
211
|
```
|
|
237
212
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
## Binary Location
|
|
241
|
-
|
|
242
|
-
<details>
|
|
243
|
-
<summary>📂 Default Locations</summary>
|
|
244
|
-
|
|
245
|
-
- **Windows**: `C:\binary`
|
|
246
|
-
- **MacOS**: `~/Applications/binary`
|
|
247
|
-
- **Linux**: `~/.local/bin/binary`
|
|
248
|
-
</details>
|
|
249
|
-
|
|
250
|
-
<details>
|
|
251
|
-
<summary>🪟 Windows Configuration</summary>
|
|
252
|
-
|
|
253
|
-
1. Move the binary folder from `C:\binary` to your desired location
|
|
254
|
-
2. Add the new path to Windows environment variables:
|
|
255
|
-
- Open Start menu and search for "Environment Variables"
|
|
256
|
-
- Click "Edit the system environment variables"
|
|
257
|
-
- Click "Environment Variables" button
|
|
258
|
-
- Under "System Variables", find and select "Path"
|
|
259
|
-
- Click "Edit"
|
|
260
|
-
- Add the new binary folder path
|
|
261
|
-
- Click "OK" to save changes
|
|
262
|
-
|
|
263
|
-
For detailed Windows PATH instructions, see the [Windows PATH guide](https://www.eukhost.com/kb/how-to-add-to-the-path-on-windows-10-and-windows-11/).
|
|
264
|
-
</details>
|
|
265
|
-
|
|
266
|
-
<details>
|
|
267
|
-
<summary>🍎 MacOS Configuration</summary>
|
|
268
|
-
|
|
269
|
-
1. Move the binary folder from `~/Applications/binary` to your desired location
|
|
270
|
-
2. Add the new path to your shell's configuration file:
|
|
271
|
-
```bash
|
|
272
|
-
# For bash (edit ~/.bash_profile)
|
|
273
|
-
export PATH="/your/custom/path:$PATH"
|
|
274
|
-
|
|
275
|
-
# For zsh (edit ~/.zshrc)
|
|
276
|
-
export PATH="/your/custom/path:$PATH"
|
|
277
|
-
```
|
|
278
|
-
3. Reload your shell configuration:
|
|
279
|
-
```bash
|
|
280
|
-
# For bash
|
|
281
|
-
source ~/.bash_profile
|
|
282
|
-
|
|
283
|
-
# For zsh
|
|
284
|
-
source ~/.zshrc
|
|
285
|
-
```
|
|
286
|
-
</details>
|
|
287
|
-
|
|
288
|
-
<details>
|
|
289
|
-
<summary>🐧 Linux Configuration</summary>
|
|
290
|
-
|
|
291
|
-
1. Move the binary folder from `~/.local/bin/binary` to your desired location
|
|
292
|
-
2. Add the new path to your shell's configuration file:
|
|
293
|
-
```bash
|
|
294
|
-
# For bash (edit ~/.bashrc)
|
|
295
|
-
export PATH="/your/custom/path:$PATH"
|
|
296
|
-
|
|
297
|
-
# For zsh (edit ~/.zshrc)
|
|
298
|
-
export PATH="/your/custom/path:$PATH"
|
|
299
|
-
```
|
|
300
|
-
3. Apply the changes:
|
|
301
|
-
```bash
|
|
302
|
-
source ~/.bashrc # for bash
|
|
303
|
-
# or
|
|
304
|
-
source ~/.zshrc # for zsh
|
|
305
|
-
```
|
|
306
|
-
</details>
|
|
307
|
-
|
|
308
|
-
> [!IMPORTANT]
|
|
309
|
-
> After moving the binary folder, ensure that all executables (ffmpeg, ffprobe, ffplay) are present in the new location and have the correct permissions:
|
|
310
|
-
> - Windows: `.exe` extensions required
|
|
311
|
-
> - MacOS/Linux: Ensure files have execute permissions (`chmod +x filename`)
|
|
312
|
-
|
|
313
|
-
## 3. Manual Installation
|
|
314
|
-
|
|
315
|
-
<details>
|
|
316
|
-
<summary>📋 Requirements</summary>
|
|
317
|
-
|
|
318
|
-
Prerequisites:
|
|
319
|
-
* [Python](https://www.python.org/downloads/) > 3.8
|
|
320
|
-
* [FFmpeg](https://www.gyan.dev/ffmpeg/builds/)
|
|
321
|
-
</details>
|
|
322
|
-
|
|
323
|
-
<details>
|
|
324
|
-
<summary>⚙️ Python Dependencies</summary>
|
|
325
|
-
|
|
326
|
-
```bash
|
|
327
|
-
pip install -r requirements.txt
|
|
328
|
-
```
|
|
329
|
-
</details>
|
|
330
|
-
|
|
331
|
-
<details>
|
|
332
|
-
<summary>🚀 Usage</summary>
|
|
333
|
-
|
|
334
|
-
#### On Windows:
|
|
335
|
-
|
|
336
|
-
```powershell
|
|
337
|
-
python test_run.py
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
#### On Linux/MacOS:
|
|
341
|
-
|
|
342
|
-
```bash
|
|
343
|
-
python3 test_run.py
|
|
344
|
-
```
|
|
345
|
-
</details>
|
|
346
|
-
|
|
347
|
-
## Update
|
|
348
|
-
|
|
349
|
-
Keep your script up to date with the latest features by running:
|
|
350
|
-
|
|
351
|
-
### On Windows:
|
|
352
|
-
|
|
353
|
-
```powershell
|
|
354
|
-
python update.py
|
|
355
|
-
```
|
|
356
|
-
|
|
357
|
-
### On Linux/MacOS:
|
|
358
|
-
|
|
359
|
-
```bash
|
|
360
|
-
python3 update.py
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
<br>
|
|
364
|
-
|
|
365
|
-
## Update Domains
|
|
366
|
-
|
|
367
|
-
<details>
|
|
368
|
-
<summary>🌐 Domain Configuration Methods</summary>
|
|
369
|
-
|
|
370
|
-
There are two ways to manage the domains for the supported websites:
|
|
371
|
-
|
|
372
|
-
### 1. Online Domain Fetching (Recommended)
|
|
373
|
-
|
|
374
|
-
Set `fetch_domain_online` to `true` in your `config.json`:
|
|
375
|
-
|
|
376
|
-
```json
|
|
377
|
-
{
|
|
378
|
-
"DEFAULT": {
|
|
379
|
-
"fetch_domain_online": true
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
This will:
|
|
385
|
-
- Download the latest domains from the GitHub repository
|
|
386
|
-
- Automatically save them to a local `domains.json` file
|
|
387
|
-
- Ensure you always have the most up-to-date streaming site domains
|
|
388
|
-
|
|
389
|
-
### 2. Local Domain Configuration
|
|
390
|
-
|
|
391
|
-
Set `fetch_domain_online` to `false` to use a local configuration:
|
|
213
|
+
See [DASH example](./Test/EasyDownload/DASH.py) for complete usage.
|
|
392
214
|
|
|
393
|
-
|
|
394
|
-
{
|
|
395
|
-
"DEFAULT": {
|
|
396
|
-
"fetch_domain_online": false
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
```
|
|
400
|
-
|
|
401
|
-
Then create a `domains.json` file in the root directory with your domain configuration:
|
|
402
|
-
|
|
403
|
-
```json
|
|
404
|
-
{
|
|
405
|
-
"altadefinizione": {
|
|
406
|
-
"domain": "si",
|
|
407
|
-
"full_url": "https://altadefinizione.si/"
|
|
408
|
-
},
|
|
409
|
-
"streamingcommunity": {
|
|
410
|
-
"domain": "best",
|
|
411
|
-
"full_url": "https://streamingcommunity.best/"
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### 3. Automatic Fallback
|
|
417
|
-
|
|
418
|
-
If online fetching fails, the script will automatically attempt to use the local `domains.json` file as a fallback, ensuring maximum reliability.
|
|
419
|
-
|
|
420
|
-
#### 💡 Adding a New Site
|
|
421
|
-
If you want to request a new site to be added to the repository, message us on the Discord server!
|
|
422
|
-
|
|
423
|
-
</details>
|
|
424
|
-
|
|
425
|
-
## Hook/Plugin System
|
|
426
|
-
|
|
427
|
-
<details>
|
|
428
|
-
<summary>🧩 Run custom scripts before/after the main execution</summary>
|
|
429
|
-
|
|
430
|
-
Define pre/post hooks in `config.json` under the `HOOKS` section. Supported types:
|
|
431
|
-
|
|
432
|
-
- **python**: runs `script.py` with the current Python interpreter
|
|
433
|
-
- **bash/sh**: runs via `bash`/`sh` on macOS/Linux
|
|
434
|
-
- **bat/cmd**: runs via `cmd /c` on Windows
|
|
435
|
-
- Inline **command**: use `command` instead of `path`
|
|
436
|
-
|
|
437
|
-
Sample configuration:
|
|
438
|
-
|
|
439
|
-
```json
|
|
440
|
-
{
|
|
441
|
-
"HOOKS": {
|
|
442
|
-
"pre_run": [
|
|
443
|
-
{
|
|
444
|
-
"name": "prepare-env",
|
|
445
|
-
"type": "python",
|
|
446
|
-
"path": "scripts/prepare.py",
|
|
447
|
-
"args": ["--clean"],
|
|
448
|
-
"env": {"MY_FLAG": "1"},
|
|
449
|
-
"cwd": "~",
|
|
450
|
-
"os": ["linux", "darwin"],
|
|
451
|
-
"timeout": 60,
|
|
452
|
-
"enabled": true,
|
|
453
|
-
"continue_on_error": true
|
|
454
|
-
}
|
|
455
|
-
],
|
|
456
|
-
"post_run": [
|
|
457
|
-
{
|
|
458
|
-
"name": "notify",
|
|
459
|
-
"type": "bash",
|
|
460
|
-
"command": "echo 'Download completed'"
|
|
461
|
-
}
|
|
462
|
-
]
|
|
463
|
-
}
|
|
464
|
-
}
|
|
465
|
-
```
|
|
466
|
-
|
|
467
|
-
Notes:
|
|
468
|
-
|
|
469
|
-
- **os**: optional OS filter (`windows`, `darwin` (`darwin` is used for MacOS), `linux`).
|
|
470
|
-
- **args**: list of arguments passed to the script.
|
|
471
|
-
- **env**: additional environment variables.
|
|
472
|
-
- **cwd**: working directory for the script; supports `~` and environment variables.
|
|
473
|
-
- **continue_on_error**: if `false`, the app stops when the hook fails.
|
|
474
|
-
- **timeout**: in seconds; when exceeded the hook fails.
|
|
475
|
-
|
|
476
|
-
Hooks are executed automatically by `run.py` before (`pre_run`) and after (`post_run`) the main execution.
|
|
477
|
-
|
|
478
|
-
</details>
|
|
215
|
+
---
|
|
479
216
|
|
|
480
|
-
|
|
217
|
+
## Configuration
|
|
481
218
|
|
|
482
|
-
<details>
|
|
483
219
|
<summary>⚙️ Overview</summary>
|
|
484
220
|
|
|
485
221
|
You can change some behaviors by tweaking the configuration file. The configuration file is divided into several main sections.
|
|
486
|
-
</details>
|
|
487
222
|
|
|
488
|
-
<
|
|
489
|
-
<summary>🔧 DEFAULT Settings</summary>
|
|
490
|
-
|
|
491
|
-
```json
|
|
492
|
-
{
|
|
493
|
-
"DEFAULT": {
|
|
494
|
-
"debug": false,
|
|
495
|
-
"show_message": true,
|
|
496
|
-
"show_trending": true,
|
|
497
|
-
"fetch_domain_online": true,
|
|
498
|
-
"telegram_bot": false,
|
|
499
|
-
"validate_github_config": false
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
```
|
|
503
|
-
|
|
504
|
-
- `debug`: Enables debug logging
|
|
505
|
-
- `show_message`: Displays informational messages
|
|
506
|
-
- `show_trending`: Shows trending content
|
|
507
|
-
- `fetch_domain_online`: If true, downloads domains from GitHub repository and saves to local file; if false, uses existing local domains.json file
|
|
508
|
-
- `telegram_bot`: Enables Telegram bot integration
|
|
509
|
-
- `validate_github_config`: If set to false, disables validation and updating of configuration from GitHub
|
|
510
|
-
</details>
|
|
511
|
-
|
|
512
|
-
<details>
|
|
513
|
-
<summary>📁 OUT_FOLDER Settings</summary>
|
|
223
|
+
<summary>📁 OUT_FOLDER</summary>
|
|
514
224
|
|
|
515
225
|
```json
|
|
516
226
|
{
|
|
@@ -545,9 +255,7 @@ You can change some behaviors by tweaking the configuration file. The configurat
|
|
|
545
255
|
|
|
546
256
|
#### Additional Options
|
|
547
257
|
- `add_siteName`: Appends site_name to root path (can be changed with `--add_siteName true/false`)
|
|
548
|
-
</details>
|
|
549
258
|
|
|
550
|
-
<details>
|
|
551
259
|
<summary>🔄 QBIT_CONFIG Settings</summary>
|
|
552
260
|
|
|
553
261
|
```json
|
|
@@ -562,53 +270,12 @@ You can change some behaviors by tweaking the configuration file. The configurat
|
|
|
562
270
|
```
|
|
563
271
|
|
|
564
272
|
To enable qBittorrent integration, follow the setup guide [here](https://github.com/lgallard/qBittorrent-Controller/wiki/How-to-enable-the-qBittorrent-Web-UI).
|
|
565
|
-
</details>
|
|
566
|
-
|
|
567
|
-
<details>
|
|
568
|
-
<summary>📡 REQUESTS Settings</summary>
|
|
569
|
-
|
|
570
|
-
```json
|
|
571
|
-
{
|
|
572
|
-
"REQUESTS": {
|
|
573
|
-
"verify": false,
|
|
574
|
-
"timeout": 20,
|
|
575
|
-
"max_retry": 8,
|
|
576
|
-
"proxy": {
|
|
577
|
-
"http": "http://username:password@host:port",
|
|
578
|
-
"https": "https://username:password@host:port"
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
```
|
|
583
|
-
|
|
584
|
-
- `verify`: Verifies SSL certificates
|
|
585
|
-
- `timeout`: Maximum timeout (in seconds) for each request
|
|
586
|
-
- `max_retry`: Number of retry attempts per segment during M3U8 index download
|
|
587
|
-
- `proxy`: Proxy configuration for HTTP/HTTPS requests
|
|
588
|
-
* Set to empty string `""` to disable proxies (default)
|
|
589
|
-
* Example with authentication:
|
|
590
|
-
```json
|
|
591
|
-
"proxy": {
|
|
592
|
-
"http": "http://username:password@host:port",
|
|
593
|
-
"https": "https://username:password@host:port"
|
|
594
|
-
}
|
|
595
|
-
```
|
|
596
|
-
* Example without authentication:
|
|
597
|
-
```json
|
|
598
|
-
"proxy": {
|
|
599
|
-
"http": "http://host:port",
|
|
600
|
-
"https": "https://host:port"
|
|
601
|
-
}
|
|
602
|
-
```
|
|
603
|
-
</details>
|
|
604
273
|
|
|
605
|
-
<details>
|
|
606
274
|
<summary>📥 M3U8_DOWNLOAD Settings</summary>
|
|
607
275
|
|
|
608
276
|
```json
|
|
609
277
|
{
|
|
610
278
|
"M3U8_DOWNLOAD": {
|
|
611
|
-
"tqdm_delay": 0.01,
|
|
612
279
|
"default_video_workser": 12,
|
|
613
280
|
"default_audio_workser": 12,
|
|
614
281
|
"segment_timeout": 8,
|
|
@@ -621,26 +288,23 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
|
|
|
621
288
|
"ita", // Specify language codes or use ["*"] to download all available subtitles
|
|
622
289
|
"eng"
|
|
623
290
|
],
|
|
624
|
-
"cleanup_tmp_folder": true
|
|
291
|
+
"cleanup_tmp_folder": true,
|
|
292
|
+
"get_only_link": false
|
|
625
293
|
}
|
|
626
294
|
}
|
|
627
295
|
```
|
|
628
296
|
|
|
629
297
|
#### Performance Settings
|
|
630
|
-
- `tqdm_delay`: Delay between progress bar updates
|
|
631
298
|
- `default_video_workser`: Number of threads for video download
|
|
632
299
|
* Can be changed with `--default_video_worker <number>`
|
|
633
300
|
- `default_audio_workser`: Number of threads for audio download
|
|
634
301
|
* Can be changed with `--default_audio_worker <number>`
|
|
635
|
-
- `segment_timeout`: Timeout for downloading individual segments
|
|
636
302
|
|
|
637
303
|
#### Audio Settings
|
|
638
|
-
- `download_audio`: Whether to download audio tracks
|
|
639
304
|
- `specific_list_audio`: List of audio languages to download
|
|
640
305
|
* Can be changed with `--specific_list_audio ita,eng`
|
|
641
306
|
|
|
642
307
|
#### Subtitle Settings
|
|
643
|
-
- `download_subtitle`: Whether to download subtitles
|
|
644
308
|
- `merge_subs`: Whether to merge subtitles with video
|
|
645
309
|
- `specific_list_subtitles`: List of subtitle languages to download
|
|
646
310
|
* Use `["*"]` to download all available subtitles
|
|
@@ -649,69 +313,7 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
|
|
|
649
313
|
|
|
650
314
|
#### Cleanup
|
|
651
315
|
- `cleanup_tmp_folder`: Remove temporary .ts files after download
|
|
652
|
-
</details>
|
|
653
|
-
|
|
654
|
-
<details>
|
|
655
|
-
<summary>🌍 Available Language Codes</summary>
|
|
656
|
-
|
|
657
|
-
| European | Asian | Middle Eastern | Others |
|
|
658
|
-
|-----------------|-----------------|-----------------|-----------------|
|
|
659
|
-
| ita - Italian | chi - Chinese | ara - Arabic | eng - English |
|
|
660
|
-
| spa - Spanish | jpn - Japanese | heb - Hebrew | por - Portuguese|
|
|
661
|
-
| fre - French | kor - Korean | tur - Turkish | fil - Filipino |
|
|
662
|
-
| ger - German | hin - Hindi | | ind - Indonesian|
|
|
663
|
-
| rus - Russian | mal - Malayalam | | may - Malay |
|
|
664
|
-
| swe - Swedish | tam - Tamil | | vie - Vietnamese|
|
|
665
|
-
| pol - Polish | tel - Telugu | | |
|
|
666
|
-
| ukr - Ukrainian | tha - Thai | | |
|
|
667
|
-
</details>
|
|
668
|
-
|
|
669
|
-
<details>
|
|
670
|
-
<summary>🎥 M3U8_CONVERSION Settings</summary>
|
|
671
|
-
|
|
672
|
-
```json
|
|
673
|
-
{
|
|
674
|
-
"M3U8_CONVERSION": {
|
|
675
|
-
"use_codec": false,
|
|
676
|
-
"use_vcodec": true,
|
|
677
|
-
"use_acodec": true,
|
|
678
|
-
"use_bitrate": true,
|
|
679
|
-
"use_gpu": false,
|
|
680
|
-
"default_preset": "ultrafast"
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
```
|
|
684
316
|
|
|
685
|
-
#### Basic Settings
|
|
686
|
-
- `use_codec`: Use specific codec settings
|
|
687
|
-
- `use_vcodec`: Use specific video codec
|
|
688
|
-
- `use_acodec`: Use specific audio codec
|
|
689
|
-
- `use_bitrate`: Apply bitrate settings
|
|
690
|
-
- `use_gpu`: Enable GPU acceleration (if available)
|
|
691
|
-
- `default_preset`: FFmpeg encoding preset
|
|
692
|
-
|
|
693
|
-
#### Encoding Presets
|
|
694
|
-
The `default_preset` configuration can be set to:
|
|
695
|
-
- `ultrafast`: Extremely fast conversion but larger file size
|
|
696
|
-
- `superfast`: Very fast with good quality/size ratio
|
|
697
|
-
- `veryfast`: Fast with good compression
|
|
698
|
-
- `faster`: Optimal balance for most users
|
|
699
|
-
- `fast`: Good compression, moderate time
|
|
700
|
-
- `medium`: FFmpeg default setting
|
|
701
|
-
- `slow`: High quality, slower process
|
|
702
|
-
- `slower`: Very high quality, slow process
|
|
703
|
-
- `veryslow`: Maximum quality, very slow process
|
|
704
|
-
|
|
705
|
-
#### GPU Acceleration
|
|
706
|
-
When `use_gpu` is enabled, supports:
|
|
707
|
-
- NVIDIA: NVENC
|
|
708
|
-
- AMD: AMF
|
|
709
|
-
- Intel: QSV
|
|
710
|
-
|
|
711
|
-
Note: Requires updated drivers and FFmpeg with hardware acceleration support.
|
|
712
|
-
</details>
|
|
713
|
-
|
|
714
|
-
<details>
|
|
715
317
|
<summary>🔍 M3U8_PARSER Settings</summary>
|
|
716
318
|
|
|
717
319
|
```json
|
|
@@ -732,22 +334,133 @@ Note: Requires updated drivers and FFmpeg with hardware acceleration support.
|
|
|
732
334
|
- 720p (1280x720)
|
|
733
335
|
- 480p (640x480)
|
|
734
336
|
- 360p (640x360)
|
|
735
|
-
- 320p (480x320)
|
|
736
|
-
- 240p (426x240)
|
|
737
|
-
- 240p (320x240)
|
|
738
|
-
- 144p (256x144)
|
|
739
337
|
|
|
740
|
-
|
|
338
|
+
#### Link options
|
|
339
|
+
- `get_only_link`: Return M3U8 playlist/index URL instead of downloading
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
## Update Domains
|
|
343
|
+
|
|
344
|
+
<summary>🌐 Domain Configuration Methods</summary>
|
|
345
|
+
|
|
346
|
+
There are two ways to manage the domains for the supported websites:
|
|
347
|
+
|
|
348
|
+
### 1. Online Domain Fetching (Recommended)
|
|
349
|
+
|
|
350
|
+
Set `fetch_domain_online` to `true` in your `config.json`:
|
|
351
|
+
|
|
352
|
+
```json
|
|
353
|
+
{
|
|
354
|
+
"DEFAULT": {
|
|
355
|
+
"fetch_domain_online": true
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
This will:
|
|
361
|
+
- Download the latest domains from the GitHub repository
|
|
362
|
+
- Automatically save them to a local `domains.json` file
|
|
363
|
+
- Ensure you always have the most up-to-date streaming site domains
|
|
364
|
+
|
|
365
|
+
### 2. Local Domain Configuration
|
|
366
|
+
|
|
367
|
+
Set `fetch_domain_online` to `false` to use a local configuration:
|
|
368
|
+
|
|
369
|
+
```json
|
|
370
|
+
{
|
|
371
|
+
"DEFAULT": {
|
|
372
|
+
"fetch_domain_online": false
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Then create a `domains.json` file in the root directory with your domain configuration:
|
|
378
|
+
|
|
379
|
+
```json
|
|
380
|
+
{
|
|
381
|
+
"altadefinizione": {
|
|
382
|
+
"domain": "si",
|
|
383
|
+
"full_url": "https://altadefinizione.si/"
|
|
384
|
+
},
|
|
385
|
+
"streamingcommunity": {
|
|
386
|
+
"domain": "best",
|
|
387
|
+
"full_url": "https://streamingcommunity.best/"
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### 3. Automatic Fallback
|
|
393
|
+
|
|
394
|
+
If online fetching fails, the script will automatically attempt to use the local `domains.json` file as a fallback, ensuring maximum reliability.
|
|
395
|
+
|
|
396
|
+
#### 💡 Adding a New Site
|
|
397
|
+
If you want to request a new site to be added to the repository, message us on the Discord server!
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## Usage Examples
|
|
403
|
+
|
|
404
|
+
### Basic Commands
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
# Show help (includes available sites by name and by index)
|
|
408
|
+
python test_run.py -h
|
|
409
|
+
|
|
410
|
+
# Run a specific site by name with a search term
|
|
411
|
+
python test_run.py --site streamingcommunity --search "interstellar"
|
|
412
|
+
|
|
413
|
+
# Run a specific site by numeric index
|
|
414
|
+
python test_run.py --site 0 --search "interstellar"
|
|
415
|
+
|
|
416
|
+
# Auto-download the first result from search
|
|
417
|
+
python test_run.py --site streamingcommunity --search "interstellar" --auto-first
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### Advanced Options
|
|
421
|
+
|
|
422
|
+
```bash
|
|
423
|
+
# Change video and audio workers
|
|
424
|
+
python test_run.py --default_video_worker 8 --default_audio_worker 8
|
|
425
|
+
|
|
426
|
+
# Set specific languages
|
|
427
|
+
python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,spa
|
|
428
|
+
|
|
429
|
+
# Keep console open after download
|
|
430
|
+
python test_run.py --not_close true
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Global Search Commands
|
|
434
|
+
|
|
435
|
+
```bash
|
|
436
|
+
# Use global search
|
|
437
|
+
python test_run.py --global -s "cars"
|
|
438
|
+
|
|
439
|
+
# Select specific category
|
|
440
|
+
python test_run.py --category 1 # Search in anime category
|
|
441
|
+
python test_run.py --category 2 # Search in movies & series
|
|
442
|
+
python test_run.py --category 3 # Search in series
|
|
443
|
+
python test_run.py --category 4 # Search in torrent category
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
### PyPI Installation Usage
|
|
447
|
+
|
|
448
|
+
```bash
|
|
449
|
+
# If installed via pip, you can simply run:
|
|
450
|
+
StreamingCommunity
|
|
451
|
+
|
|
452
|
+
# Or use the entrypoint with arguments, for example:
|
|
453
|
+
StreamingCommunity --site streamingcommunity --search "interstellar" --auto-first
|
|
454
|
+
```
|
|
455
|
+
|
|
456
|
+
---
|
|
741
457
|
|
|
742
458
|
# Global Search
|
|
743
459
|
|
|
744
|
-
<details>
|
|
745
460
|
<summary>🔍 Feature Overview</summary>
|
|
746
461
|
|
|
747
462
|
You can now search across multiple streaming sites at once using the Global Search feature. This allows you to find content more efficiently without having to search each site individually.
|
|
748
|
-
</details>
|
|
749
463
|
|
|
750
|
-
<details>
|
|
751
464
|
<summary>🎯 Search Options</summary>
|
|
752
465
|
|
|
753
466
|
When using Global Search, you have three ways to select which sites to search:
|
|
@@ -755,9 +468,7 @@ When using Global Search, you have three ways to select which sites to search:
|
|
|
755
468
|
1. **Search all sites** - Searches across all available streaming sites
|
|
756
469
|
2. **Search by category** - Group sites by their categories (movies, series, anime, etc.)
|
|
757
470
|
3. **Select specific sites** - Choose individual sites to include in your search
|
|
758
|
-
</details>
|
|
759
471
|
|
|
760
|
-
<details>
|
|
761
472
|
<summary>📝 Navigation and Selection</summary>
|
|
762
473
|
|
|
763
474
|
After performing a search:
|
|
@@ -770,57 +481,75 @@ After performing a search:
|
|
|
770
481
|
2. Select an item by number to view details or download
|
|
771
482
|
|
|
772
483
|
3. The system will automatically use the appropriate site's API to handle the download
|
|
773
|
-
</details>
|
|
774
484
|
|
|
775
|
-
<details>
|
|
776
485
|
<summary>⌨️ Command Line Arguments</summary>
|
|
777
486
|
|
|
778
487
|
The Global Search can be configured from the command line:
|
|
779
488
|
|
|
780
489
|
- `--global` - Perform a global search across multiple sites.
|
|
781
490
|
- `-s`, `--search` - Specify the search terms.
|
|
782
|
-
</details>
|
|
783
491
|
|
|
784
|
-
|
|
492
|
+
---
|
|
785
493
|
|
|
786
|
-
|
|
787
|
-
# Run a specific site by name with a search term
|
|
788
|
-
python test_run.py --site streamingcommunity --search "interstellar"
|
|
494
|
+
## 🧩 Advanced Features
|
|
789
495
|
|
|
790
|
-
|
|
791
|
-
python test_run.py --site 0 --search "interstellar"
|
|
496
|
+
## Hook/Plugin System
|
|
792
497
|
|
|
793
|
-
|
|
794
|
-
python test_run.py --site streamingcommunity --search "interstellar" --auto-first
|
|
498
|
+
<summary>🧩 Run custom scripts before/after the main execution</summary>
|
|
795
499
|
|
|
796
|
-
|
|
797
|
-
python test_run.py -h
|
|
500
|
+
Define pre/post hooks in `config.json` under the `HOOKS` section. Supported types:
|
|
798
501
|
|
|
799
|
-
|
|
800
|
-
|
|
502
|
+
- **python**: runs `script.py` with the current Python interpreter
|
|
503
|
+
- **bash/sh**: runs via `bash`/`sh` on macOS/Linux
|
|
504
|
+
- **bat/cmd**: runs via `cmd /c` on Windows
|
|
505
|
+
- Inline **command**: use `command` instead of `path`
|
|
801
506
|
|
|
802
|
-
|
|
803
|
-
python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,spa
|
|
507
|
+
Sample configuration:
|
|
804
508
|
|
|
805
|
-
|
|
806
|
-
|
|
509
|
+
```json
|
|
510
|
+
{
|
|
511
|
+
"HOOKS": {
|
|
512
|
+
"pre_run": [
|
|
513
|
+
{
|
|
514
|
+
"name": "prepare-env",
|
|
515
|
+
"type": "python",
|
|
516
|
+
"path": "scripts/prepare.py",
|
|
517
|
+
"args": ["--clean"],
|
|
518
|
+
"env": {"MY_FLAG": "1"},
|
|
519
|
+
"cwd": "~",
|
|
520
|
+
"os": ["linux", "darwin"],
|
|
521
|
+
"timeout": 60,
|
|
522
|
+
"enabled": true,
|
|
523
|
+
"continue_on_error": true
|
|
524
|
+
}
|
|
525
|
+
],
|
|
526
|
+
"post_run": [
|
|
527
|
+
{
|
|
528
|
+
"name": "notify",
|
|
529
|
+
"type": "bash",
|
|
530
|
+
"command": "echo 'Download completed'"
|
|
531
|
+
}
|
|
532
|
+
]
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
```
|
|
807
536
|
|
|
808
|
-
|
|
809
|
-
python test_run.py --global -s "cars"
|
|
537
|
+
Notes:
|
|
810
538
|
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
539
|
+
- **os**: optional OS filter (`windows`, `darwin` (`darwin` is used for MacOS), `linux`).
|
|
540
|
+
- **args**: list of arguments passed to the script.
|
|
541
|
+
- **env**: additional environment variables.
|
|
542
|
+
- **cwd**: working directory for the script; supports `~` and environment variables.
|
|
543
|
+
- **continue_on_error**: if `false`, the app stops when the hook fails.
|
|
544
|
+
- **timeout**: in seconds; when exceeded the hook fails.
|
|
816
545
|
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
546
|
+
Hooks are executed automatically by `run.py` before (`pre_run`) and after (`post_run`) the main execution.
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
---
|
|
820
550
|
|
|
821
551
|
# Docker
|
|
822
552
|
|
|
823
|
-
<details>
|
|
824
553
|
<summary>🐳 Basic Setup</summary>
|
|
825
554
|
|
|
826
555
|
Build the image:
|
|
@@ -830,11 +559,15 @@ docker build -t streaming-community-api .
|
|
|
830
559
|
|
|
831
560
|
Run the container with Cloudflare DNS for better connectivity:
|
|
832
561
|
```
|
|
833
|
-
docker run -
|
|
562
|
+
docker run -d --name streaming-community --dns 1.1.1.1 -p 8000:8000 streaming-community-api
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
Tip CLI:
|
|
566
|
+
- To run the CLI inside the container, attach to the container and execute:
|
|
567
|
+
```
|
|
568
|
+
docker exec -it streaming-community python test_run.py
|
|
834
569
|
```
|
|
835
|
-
</details>
|
|
836
570
|
|
|
837
|
-
<details>
|
|
838
571
|
<summary>💾 Custom Storage Location</summary>
|
|
839
572
|
|
|
840
573
|
By default the videos will be saved in `/app/Video` inside the container. To save them on your machine:
|
|
@@ -842,9 +575,7 @@ By default the videos will be saved in `/app/Video` inside the container. To sav
|
|
|
842
575
|
```
|
|
843
576
|
docker run -it --dns 9.9.9.9 -p 8000:8000 -v /path/to/download:/app/Video streaming-community-api
|
|
844
577
|
```
|
|
845
|
-
</details>
|
|
846
578
|
|
|
847
|
-
<details>
|
|
848
579
|
<summary>🛠️ Quick Setup with Make</summary>
|
|
849
580
|
|
|
850
581
|
Inside the Makefile (install `make`) are already configured two commands to build and run the container:
|
|
@@ -857,11 +588,10 @@ make LOCAL_DIR=/path/to/download run-container
|
|
|
857
588
|
```
|
|
858
589
|
|
|
859
590
|
The `run-container` command mounts also the `config.json` file, so any change to the configuration file is reflected immediately without having to rebuild the image.
|
|
860
|
-
|
|
591
|
+
|
|
861
592
|
|
|
862
593
|
# Telegram Usage
|
|
863
594
|
|
|
864
|
-
<details>
|
|
865
595
|
<summary>⚙️ Basic Configuration</summary>
|
|
866
596
|
|
|
867
597
|
The bot was created to replace terminal commands and allow interaction via Telegram. Each download runs within a screen session, enabling multiple downloads to run simultaneously.
|
|
@@ -891,9 +621,7 @@ TOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram
|
|
|
891
621
|
AUTHORIZED_USER_ID=12345678
|
|
892
622
|
DEBUG=False
|
|
893
623
|
```
|
|
894
|
-
</details>
|
|
895
624
|
|
|
896
|
-
<details>
|
|
897
625
|
<summary>📥 Dependencies & Launch</summary>
|
|
898
626
|
|
|
899
627
|
Install dependencies:
|
|
@@ -904,8 +632,35 @@ pip install -r requirements.txt
|
|
|
904
632
|
Start the bot (from /StreamingCommunity/TelegramHelp):
|
|
905
633
|
```bash
|
|
906
634
|
python3 telegram_bot.py
|
|
635
|
+
```d
|
|
636
|
+
- 🔹 `/list` – Displays the status of active downloads, with options to:
|
|
637
|
+
- Stop an incorrect download using `/stop <ID>`
|
|
638
|
+
- View the real-time output of a download using `/screen <ID>`
|
|
639
|
+
|
|
640
|
+
⚠️ **Warning:** If a download is interrupted, incomplete files may remain in the folder specified in config.json. These files must be deleted manually.
|
|
641
|
+
|
|
642
|
+
#### Setup
|
|
643
|
+
1. Create an `.env` file with your Telegram token and user ID:
|
|
644
|
+
```env
|
|
645
|
+
TOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram
|
|
646
|
+
AUTHORIZED_USER_ID=12345678
|
|
647
|
+
DEBUG=False
|
|
907
648
|
```
|
|
908
|
-
|
|
649
|
+
|
|
650
|
+
2. Install dependencies:
|
|
651
|
+
```bash
|
|
652
|
+
pip install -r requirements.txt
|
|
653
|
+
```
|
|
654
|
+
|
|
655
|
+
3. Start the bot (from `/StreamingCommunity/TelegramHelp`):
|
|
656
|
+
```bash
|
|
657
|
+
python3 telegram_bot.py
|
|
658
|
+
```
|
|
659
|
+
|
|
660
|
+
**Running in background:**
|
|
661
|
+
Start the bot inside a screen session and press Ctrl + A, followed by D, to detach from the session without stopping the bot.
|
|
662
|
+
|
|
663
|
+
---
|
|
909
664
|
|
|
910
665
|
# Tutorials
|
|
911
666
|
|
|
@@ -914,19 +669,27 @@ python3 telegram_bot.py
|
|
|
914
669
|
- [Pypy](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
|
|
915
670
|
- [Compiled](https://www.youtube.com/watch?v=pm4lqsxkTVo)
|
|
916
671
|
|
|
917
|
-
## Useful Project
|
|
918
672
|
|
|
919
|
-
|
|
673
|
+
# Useful Project
|
|
674
|
+
|
|
675
|
+
## 🎯 [Unit3Dup](https://github.com/31December99/Unit3Dup)
|
|
920
676
|
Bot in Python per la generazione e l'upload automatico di torrent su tracker basati su Unit3D.
|
|
921
677
|
|
|
922
|
-
|
|
678
|
+
## 🇮🇹 [MammaMia](https://github.com/UrloMythus/MammaMia)
|
|
923
679
|
Addon per Stremio che consente lo streaming HTTPS di film, serie, anime e TV in diretta in lingua italiana.
|
|
924
680
|
|
|
925
|
-
|
|
681
|
+
## 🧩 [streamingcommunity-unofficialapi](https://github.com/Blu-Tiger/streamingcommunity-unofficialapi)
|
|
926
682
|
API non ufficiale per accedere ai contenuti del sito italiano StreamingCommunity.
|
|
927
683
|
|
|
928
|
-
# Disclaimer
|
|
929
684
|
|
|
930
|
-
|
|
685
|
+
# Disclaimer
|
|
686
|
+
> **Note:** This software is provided "as is", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.
|
|
931
687
|
|
|
932
688
|
> **Note:** DASH downloads require a valid L3 CDM (Content Decryption Module) to proceed. This project does not provide, include, or facilitate obtaining any CDM. Users are responsible for ensuring compliance with all applicable laws and requirements regarding DRM and decryption modules.
|
|
689
|
+
|
|
690
|
+
---
|
|
691
|
+
<div align="center">
|
|
692
|
+
**Made with ❤️ for streaming lovers**
|
|
693
|
+
|
|
694
|
+
*If you find this project useful, consider starring it! ⭐*
|
|
695
|
+
</div>
|