StreamingCommunity 3.3.1__py3-none-any.whl → 3.3.2__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/Site/mediasetinfinity/util/get_license.py +28 -1
- StreamingCommunity/Api/Site/raiplay/site.py +6 -4
- StreamingCommunity/Api/Site/raiplay/util/ScrapeSerie.py +6 -2
- StreamingCommunity/Api/Site/streamingcommunity/site.py +0 -3
- StreamingCommunity/Api/Site/streamingwatch/site.py +0 -3
- StreamingCommunity/Lib/Downloader/DASH/cdm_helpher.py +1 -18
- StreamingCommunity/Lib/Downloader/DASH/downloader.py +18 -14
- StreamingCommunity/Lib/Downloader/HLS/downloader.py +22 -10
- StreamingCommunity/Lib/M3U8/decryptor.py +0 -14
- StreamingCommunity/Lib/TMBD/tmdb.py +0 -12
- StreamingCommunity/Upload/version.py +1 -1
- StreamingCommunity/Util/{bento4_installer.py → installer/bento4_install.py} +15 -33
- StreamingCommunity/Util/installer/binary_paths.py +83 -0
- StreamingCommunity/Util/{ffmpeg_installer.py → installer/ffmpeg_install.py} +11 -54
- StreamingCommunity/Util/logger.py +3 -8
- StreamingCommunity/Util/os.py +67 -68
- StreamingCommunity/run.py +1 -1
- {streamingcommunity-3.3.1.dist-info → streamingcommunity-3.3.2.dist-info}/METADATA +314 -490
- {streamingcommunity-3.3.1.dist-info → streamingcommunity-3.3.2.dist-info}/RECORD +23 -22
- {streamingcommunity-3.3.1.dist-info → streamingcommunity-3.3.2.dist-info}/WHEEL +0 -0
- {streamingcommunity-3.3.1.dist-info → streamingcommunity-3.3.2.dist-info}/entry_points.txt +0 -0
- {streamingcommunity-3.3.1.dist-info → streamingcommunity-3.3.2.dist-info}/licenses/LICENSE +0 -0
- {streamingcommunity-3.3.1.dist-info → streamingcommunity-3.3.2.dist-info}/top_level.txt +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.2
|
|
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,184 @@ 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
|
-
|
|
62
|
+
---
|
|
63
|
+
|
|
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)
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Manual Installation
|
|
63
80
|
|
|
64
81
|
<details>
|
|
65
|
-
<summary
|
|
66
|
-
|
|
67
|
-
- 🔄 [Update Domains](#update-domains)
|
|
68
|
-
- 🌐 [Available Sites](https://arrowar.github.io/StreamingCommunity/)
|
|
69
|
-
- 🛠️ [Installation](#installation)
|
|
70
|
-
- 📦 [PyPI Installation](#1-pypi-installation)
|
|
71
|
-
- 🔄 [Automatic Installation](#2-automatic-installation)
|
|
72
|
-
- 🔧 [Binary Location](#binary-location)
|
|
73
|
-
- 📝 [Manual Installation](#3-manual-installation)
|
|
74
|
-
- 💻 [Win 7](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Installation#win-7)
|
|
75
|
-
- 📱 [Termux](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Termux)
|
|
76
|
-
</details>
|
|
82
|
+
<summary>📝 Manual Installation & Update</summary>
|
|
77
83
|
|
|
78
84
|
<details>
|
|
79
|
-
<summary
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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)
|
|
85
|
+
<summary>📋 Requirements</summary>
|
|
86
|
+
|
|
87
|
+
Prerequisites:
|
|
88
|
+
* [Python](https://www.python.org/downloads/) > 3.8
|
|
89
89
|
</details>
|
|
90
90
|
|
|
91
91
|
<details>
|
|
92
|
-
<summary
|
|
92
|
+
<summary>⚙️ Python Dependencies</summary>
|
|
93
93
|
|
|
94
|
-
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
- 🧩 [Hook/Plugin System](#hookplugin-system)
|
|
94
|
+
```bash
|
|
95
|
+
pip install -r requirements.txt
|
|
96
|
+
```
|
|
98
97
|
</details>
|
|
99
98
|
|
|
100
99
|
<details>
|
|
101
|
-
<summary
|
|
100
|
+
<summary>🚀 Usage</summary>
|
|
101
|
+
|
|
102
|
+
#### On Windows:
|
|
102
103
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
104
|
+
```powershell
|
|
105
|
+
python test_run.py
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
#### On Linux/MacOS:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
python3 test_run.py
|
|
112
|
+
```
|
|
106
113
|
</details>
|
|
107
114
|
|
|
108
|
-
|
|
115
|
+
## Update
|
|
109
116
|
|
|
110
|
-
|
|
117
|
+
Keep your script up to date with the latest features by running:
|
|
111
118
|
|
|
112
|
-
|
|
119
|
+
### On Windows:
|
|
113
120
|
|
|
114
|
-
```
|
|
115
|
-
|
|
121
|
+
```powershell
|
|
122
|
+
python update.py
|
|
116
123
|
```
|
|
117
124
|
|
|
118
|
-
|
|
125
|
+
### On Linux/MacOS:
|
|
119
126
|
|
|
120
127
|
```bash
|
|
121
|
-
|
|
128
|
+
python3 update.py
|
|
122
129
|
```
|
|
123
130
|
|
|
124
|
-
|
|
131
|
+
</details>
|
|
125
132
|
|
|
126
|
-
|
|
133
|
+
---
|
|
127
134
|
|
|
128
|
-
|
|
129
|
-
from StreamingCommunity.run import main
|
|
135
|
+
## Quick Start
|
|
130
136
|
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
After installing via pip, just run:
|
|
138
|
+
```bash
|
|
139
|
+
StreamingCommunity
|
|
133
140
|
```
|
|
141
|
+
to start the application.
|
|
134
142
|
|
|
135
143
|
Run the script:
|
|
136
|
-
|
|
137
144
|
```bash
|
|
138
145
|
python run_streaming.py
|
|
139
146
|
```
|
|
140
147
|
|
|
141
|
-
|
|
148
|
+
**Manual execution:**
|
|
149
|
+
|
|
150
|
+
**Windows:**
|
|
151
|
+
```powershell
|
|
152
|
+
python test_run.py
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Linux/MacOS:**
|
|
156
|
+
```bash
|
|
157
|
+
python3 test_run.py
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Downloaders
|
|
142
163
|
|
|
143
164
|
<details>
|
|
144
|
-
<summary>📥 HLS
|
|
165
|
+
<summary>📥 HLS</summary>
|
|
145
166
|
|
|
146
167
|
Download HTTP Live Streaming (HLS) content from m3u8 URLs.
|
|
147
168
|
|
|
148
169
|
```python
|
|
149
170
|
from StreamingCommunity import HLS_Downloader
|
|
150
171
|
|
|
151
|
-
# Initialize with m3u8 URL and optional output path
|
|
152
172
|
downloader = HLS_Downloader(
|
|
153
173
|
m3u8_url="https://example.com/stream.m3u8",
|
|
154
|
-
output_path="/downloads/video.mp4"
|
|
174
|
+
output_path="/downloads/video.mp4"
|
|
155
175
|
)
|
|
156
176
|
|
|
157
|
-
# Start the download
|
|
158
177
|
downloader.download()
|
|
159
178
|
```
|
|
160
179
|
|
|
161
|
-
See [HLS example](./Test/
|
|
180
|
+
See [HLS example](./Test/EasyDownload//HLS.py) for complete usage.
|
|
162
181
|
</details>
|
|
163
182
|
|
|
164
183
|
<details>
|
|
165
|
-
<summary>📽️ MP4
|
|
184
|
+
<summary>📽️ MP4</summary>
|
|
166
185
|
|
|
167
186
|
Direct MP4 file downloader with support for custom headers and referrer.
|
|
168
187
|
|
|
169
188
|
```python
|
|
170
189
|
from StreamingCommunity import MP4_downloader
|
|
171
190
|
|
|
172
|
-
# Basic usage
|
|
173
191
|
downloader = MP4_downloader(
|
|
174
192
|
url="https://example.com/video.mp4",
|
|
175
193
|
path="/downloads/saved_video.mp4"
|
|
176
194
|
)
|
|
177
195
|
|
|
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
196
|
downloader.download()
|
|
191
197
|
```
|
|
192
198
|
|
|
193
|
-
See [MP4 example](./Test/
|
|
199
|
+
See [MP4 example](./Test/EasyDownload/MP4.py) for complete usage.
|
|
194
200
|
</details>
|
|
195
201
|
|
|
196
202
|
<details>
|
|
197
|
-
<summary>🧲
|
|
203
|
+
<summary>🧲 TOR</summary>
|
|
198
204
|
|
|
199
205
|
Download content via torrent magnet links.
|
|
200
206
|
|
|
201
207
|
```python
|
|
202
208
|
from StreamingCommunity import TOR_downloader
|
|
203
209
|
|
|
204
|
-
# Initialize torrent client
|
|
205
210
|
client = TOR_downloader()
|
|
206
211
|
|
|
207
|
-
# Add magnet link
|
|
208
212
|
client.add_magnet_link("magnet:?xt=urn:btih:example_hash&dn=example_name", save_path=".")
|
|
209
213
|
|
|
210
|
-
# Start download
|
|
211
214
|
client.start_download()
|
|
212
215
|
```
|
|
213
216
|
|
|
214
|
-
See [Torrent example](./Test/
|
|
217
|
+
See [Torrent example](./Test/EasyDownload/TOR.py) for complete usage.
|
|
215
218
|
</details>
|
|
216
219
|
|
|
217
220
|
<details>
|
|
218
|
-
<summary>🎞️ DASH
|
|
221
|
+
<summary>🎞️ DASH</summary>
|
|
219
222
|
|
|
220
223
|
```python
|
|
221
|
-
|
|
222
|
-
|
|
224
|
+
mpd_url = "https://example.com/stream.mpd"
|
|
225
|
+
license_url = "https://example.com/get_license"
|
|
223
226
|
|
|
224
227
|
dash_process = DASH_Downloader(
|
|
225
228
|
cdm_device=get_wvd_path(),
|
|
@@ -235,249 +238,12 @@ if dash_process.download_and_decrypt():
|
|
|
235
238
|
dash_process.get_status()
|
|
236
239
|
```
|
|
237
240
|
|
|
241
|
+
See [DASH example](./Test/EasyDownload/DASH.py) for complete usage.
|
|
238
242
|
</details>
|
|
239
243
|
|
|
240
|
-
|
|
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:
|
|
392
|
-
|
|
393
|
-
```json
|
|
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>
|
|
244
|
+
---
|
|
479
245
|
|
|
480
|
-
|
|
246
|
+
## Configuration
|
|
481
247
|
|
|
482
248
|
<details>
|
|
483
249
|
<summary>⚙️ Overview</summary>
|
|
@@ -486,31 +252,7 @@ You can change some behaviors by tweaking the configuration file. The configurat
|
|
|
486
252
|
</details>
|
|
487
253
|
|
|
488
254
|
<details>
|
|
489
|
-
<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>
|
|
255
|
+
<summary>📁 OUT_FOLDER</summary>
|
|
514
256
|
|
|
515
257
|
```json
|
|
516
258
|
{
|
|
@@ -564,51 +306,12 @@ You can change some behaviors by tweaking the configuration file. The configurat
|
|
|
564
306
|
To enable qBittorrent integration, follow the setup guide [here](https://github.com/lgallard/qBittorrent-Controller/wiki/How-to-enable-the-qBittorrent-Web-UI).
|
|
565
307
|
</details>
|
|
566
308
|
|
|
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
|
-
|
|
605
309
|
<details>
|
|
606
310
|
<summary>📥 M3U8_DOWNLOAD Settings</summary>
|
|
607
311
|
|
|
608
312
|
```json
|
|
609
313
|
{
|
|
610
314
|
"M3U8_DOWNLOAD": {
|
|
611
|
-
"tqdm_delay": 0.01,
|
|
612
315
|
"default_video_workser": 12,
|
|
613
316
|
"default_audio_workser": 12,
|
|
614
317
|
"segment_timeout": 8,
|
|
@@ -621,26 +324,23 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
|
|
|
621
324
|
"ita", // Specify language codes or use ["*"] to download all available subtitles
|
|
622
325
|
"eng"
|
|
623
326
|
],
|
|
624
|
-
"cleanup_tmp_folder": true
|
|
327
|
+
"cleanup_tmp_folder": true,
|
|
328
|
+
"get_only_link": false
|
|
625
329
|
}
|
|
626
330
|
}
|
|
627
331
|
```
|
|
628
332
|
|
|
629
333
|
#### Performance Settings
|
|
630
|
-
- `tqdm_delay`: Delay between progress bar updates
|
|
631
334
|
- `default_video_workser`: Number of threads for video download
|
|
632
335
|
* Can be changed with `--default_video_worker <number>`
|
|
633
336
|
- `default_audio_workser`: Number of threads for audio download
|
|
634
337
|
* Can be changed with `--default_audio_worker <number>`
|
|
635
|
-
- `segment_timeout`: Timeout for downloading individual segments
|
|
636
338
|
|
|
637
339
|
#### Audio Settings
|
|
638
|
-
- `download_audio`: Whether to download audio tracks
|
|
639
340
|
- `specific_list_audio`: List of audio languages to download
|
|
640
341
|
* Can be changed with `--specific_list_audio ita,eng`
|
|
641
342
|
|
|
642
343
|
#### Subtitle Settings
|
|
643
|
-
- `download_subtitle`: Whether to download subtitles
|
|
644
344
|
- `merge_subs`: Whether to merge subtitles with video
|
|
645
345
|
- `specific_list_subtitles`: List of subtitle languages to download
|
|
646
346
|
* Use `["*"]` to download all available subtitles
|
|
@@ -651,66 +351,6 @@ To enable qBittorrent integration, follow the setup guide [here](https://github.
|
|
|
651
351
|
- `cleanup_tmp_folder`: Remove temporary .ts files after download
|
|
652
352
|
</details>
|
|
653
353
|
|
|
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
|
-
|
|
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
354
|
<details>
|
|
715
355
|
<summary>🔍 M3U8_PARSER Settings</summary>
|
|
716
356
|
|
|
@@ -732,13 +372,130 @@ Note: Requires updated drivers and FFmpeg with hardware acceleration support.
|
|
|
732
372
|
- 720p (1280x720)
|
|
733
373
|
- 480p (640x480)
|
|
734
374
|
- 360p (640x360)
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
- 144p (256x144)
|
|
375
|
+
|
|
376
|
+
#### Link options
|
|
377
|
+
- `get_only_link`: Return M3U8 playlist/index URL instead of downloading
|
|
739
378
|
|
|
740
379
|
</details>
|
|
741
380
|
|
|
381
|
+
## Update Domains
|
|
382
|
+
|
|
383
|
+
<details>
|
|
384
|
+
<summary>🌐 Domain Configuration Methods</summary>
|
|
385
|
+
|
|
386
|
+
There are two ways to manage the domains for the supported websites:
|
|
387
|
+
|
|
388
|
+
### 1. Online Domain Fetching (Recommended)
|
|
389
|
+
|
|
390
|
+
Set `fetch_domain_online` to `true` in your `config.json`:
|
|
391
|
+
|
|
392
|
+
```json
|
|
393
|
+
{
|
|
394
|
+
"DEFAULT": {
|
|
395
|
+
"fetch_domain_online": true
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
This will:
|
|
401
|
+
- Download the latest domains from the GitHub repository
|
|
402
|
+
- Automatically save them to a local `domains.json` file
|
|
403
|
+
- Ensure you always have the most up-to-date streaming site domains
|
|
404
|
+
|
|
405
|
+
### 2. Local Domain Configuration
|
|
406
|
+
|
|
407
|
+
Set `fetch_domain_online` to `false` to use a local configuration:
|
|
408
|
+
|
|
409
|
+
```json
|
|
410
|
+
{
|
|
411
|
+
"DEFAULT": {
|
|
412
|
+
"fetch_domain_online": false
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
Then create a `domains.json` file in the root directory with your domain configuration:
|
|
418
|
+
|
|
419
|
+
```json
|
|
420
|
+
{
|
|
421
|
+
"altadefinizione": {
|
|
422
|
+
"domain": "si",
|
|
423
|
+
"full_url": "https://altadefinizione.si/"
|
|
424
|
+
},
|
|
425
|
+
"streamingcommunity": {
|
|
426
|
+
"domain": "best",
|
|
427
|
+
"full_url": "https://streamingcommunity.best/"
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
### 3. Automatic Fallback
|
|
433
|
+
|
|
434
|
+
If online fetching fails, the script will automatically attempt to use the local `domains.json` file as a fallback, ensuring maximum reliability.
|
|
435
|
+
|
|
436
|
+
#### 💡 Adding a New Site
|
|
437
|
+
If you want to request a new site to be added to the repository, message us on the Discord server!
|
|
438
|
+
|
|
439
|
+
</details>
|
|
440
|
+
|
|
441
|
+
---
|
|
442
|
+
|
|
443
|
+
## Usage Examples
|
|
444
|
+
|
|
445
|
+
### Basic Commands
|
|
446
|
+
|
|
447
|
+
```bash
|
|
448
|
+
# Show help (includes available sites by name and by index)
|
|
449
|
+
python test_run.py -h
|
|
450
|
+
|
|
451
|
+
# Run a specific site by name with a search term
|
|
452
|
+
python test_run.py --site streamingcommunity --search "interstellar"
|
|
453
|
+
|
|
454
|
+
# Run a specific site by numeric index
|
|
455
|
+
python test_run.py --site 0 --search "interstellar"
|
|
456
|
+
|
|
457
|
+
# Auto-download the first result from search
|
|
458
|
+
python test_run.py --site streamingcommunity --search "interstellar" --auto-first
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### Advanced Options
|
|
462
|
+
|
|
463
|
+
```bash
|
|
464
|
+
# Change video and audio workers
|
|
465
|
+
python test_run.py --default_video_worker 8 --default_audio_worker 8
|
|
466
|
+
|
|
467
|
+
# Set specific languages
|
|
468
|
+
python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,spa
|
|
469
|
+
|
|
470
|
+
# Keep console open after download
|
|
471
|
+
python test_run.py --not_close true
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Global Search Commands
|
|
475
|
+
|
|
476
|
+
```bash
|
|
477
|
+
# Use global search
|
|
478
|
+
python test_run.py --global -s "cars"
|
|
479
|
+
|
|
480
|
+
# Select specific category
|
|
481
|
+
python test_run.py --category 1 # Search in anime category
|
|
482
|
+
python test_run.py --category 2 # Search in movies & series
|
|
483
|
+
python test_run.py --category 3 # Search in series
|
|
484
|
+
python test_run.py --category 4 # Search in torrent category
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
### PyPI Installation Usage
|
|
488
|
+
|
|
489
|
+
```bash
|
|
490
|
+
# If installed via pip, you can simply run:
|
|
491
|
+
StreamingCommunity
|
|
492
|
+
|
|
493
|
+
# Or use the entrypoint with arguments, for example:
|
|
494
|
+
StreamingCommunity --site streamingcommunity --search "interstellar" --auto-first
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
---
|
|
498
|
+
|
|
742
499
|
# Global Search
|
|
743
500
|
|
|
744
501
|
<details>
|
|
@@ -781,42 +538,66 @@ The Global Search can be configured from the command line:
|
|
|
781
538
|
- `-s`, `--search` - Specify the search terms.
|
|
782
539
|
</details>
|
|
783
540
|
|
|
784
|
-
|
|
541
|
+
---
|
|
785
542
|
|
|
786
|
-
|
|
787
|
-
# Run a specific site by name with a search term
|
|
788
|
-
python test_run.py --site streamingcommunity --search "interstellar"
|
|
543
|
+
## 🧩 Advanced Features
|
|
789
544
|
|
|
790
|
-
|
|
791
|
-
python test_run.py --site 0 --search "interstellar"
|
|
545
|
+
## Hook/Plugin System
|
|
792
546
|
|
|
793
|
-
|
|
794
|
-
|
|
547
|
+
<details>
|
|
548
|
+
<summary>🧩 Run custom scripts before/after the main execution</summary>
|
|
795
549
|
|
|
796
|
-
|
|
797
|
-
python test_run.py -h
|
|
550
|
+
Define pre/post hooks in `config.json` under the `HOOKS` section. Supported types:
|
|
798
551
|
|
|
799
|
-
|
|
800
|
-
|
|
552
|
+
- **python**: runs `script.py` with the current Python interpreter
|
|
553
|
+
- **bash/sh**: runs via `bash`/`sh` on macOS/Linux
|
|
554
|
+
- **bat/cmd**: runs via `cmd /c` on Windows
|
|
555
|
+
- Inline **command**: use `command` instead of `path`
|
|
801
556
|
|
|
802
|
-
|
|
803
|
-
python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,spa
|
|
557
|
+
Sample configuration:
|
|
804
558
|
|
|
805
|
-
|
|
806
|
-
|
|
559
|
+
```json
|
|
560
|
+
{
|
|
561
|
+
"HOOKS": {
|
|
562
|
+
"pre_run": [
|
|
563
|
+
{
|
|
564
|
+
"name": "prepare-env",
|
|
565
|
+
"type": "python",
|
|
566
|
+
"path": "scripts/prepare.py",
|
|
567
|
+
"args": ["--clean"],
|
|
568
|
+
"env": {"MY_FLAG": "1"},
|
|
569
|
+
"cwd": "~",
|
|
570
|
+
"os": ["linux", "darwin"],
|
|
571
|
+
"timeout": 60,
|
|
572
|
+
"enabled": true,
|
|
573
|
+
"continue_on_error": true
|
|
574
|
+
}
|
|
575
|
+
],
|
|
576
|
+
"post_run": [
|
|
577
|
+
{
|
|
578
|
+
"name": "notify",
|
|
579
|
+
"type": "bash",
|
|
580
|
+
"command": "echo 'Download completed'"
|
|
581
|
+
}
|
|
582
|
+
]
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
```
|
|
807
586
|
|
|
808
|
-
|
|
809
|
-
python test_run.py --global -s "cars"
|
|
587
|
+
Notes:
|
|
810
588
|
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
589
|
+
- **os**: optional OS filter (`windows`, `darwin` (`darwin` is used for MacOS), `linux`).
|
|
590
|
+
- **args**: list of arguments passed to the script.
|
|
591
|
+
- **env**: additional environment variables.
|
|
592
|
+
- **cwd**: working directory for the script; supports `~` and environment variables.
|
|
593
|
+
- **continue_on_error**: if `false`, the app stops when the hook fails.
|
|
594
|
+
- **timeout**: in seconds; when exceeded the hook fails.
|
|
816
595
|
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
596
|
+
Hooks are executed automatically by `run.py` before (`pre_run`) and after (`post_run`) the main execution.
|
|
597
|
+
|
|
598
|
+
</details>
|
|
599
|
+
|
|
600
|
+
---
|
|
820
601
|
|
|
821
602
|
# Docker
|
|
822
603
|
|
|
@@ -830,7 +611,13 @@ docker build -t streaming-community-api .
|
|
|
830
611
|
|
|
831
612
|
Run the container with Cloudflare DNS for better connectivity:
|
|
832
613
|
```
|
|
833
|
-
docker run -
|
|
614
|
+
docker run -d --name streaming-community --dns 1.1.1.1 -p 8000:8000 streaming-community-api
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
Tip CLI:
|
|
618
|
+
- To run the CLI inside the container, attach to the container and execute:
|
|
619
|
+
```
|
|
620
|
+
docker exec -it streaming-community python test_run.py
|
|
834
621
|
```
|
|
835
622
|
</details>
|
|
836
623
|
|
|
@@ -859,6 +646,7 @@ make LOCAL_DIR=/path/to/download run-container
|
|
|
859
646
|
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
647
|
</details>
|
|
861
648
|
|
|
649
|
+
|
|
862
650
|
# Telegram Usage
|
|
863
651
|
|
|
864
652
|
<details>
|
|
@@ -905,7 +693,35 @@ Start the bot (from /StreamingCommunity/TelegramHelp):
|
|
|
905
693
|
```bash
|
|
906
694
|
python3 telegram_bot.py
|
|
907
695
|
```
|
|
908
|
-
</details>
|
|
696
|
+
</details>d
|
|
697
|
+
- 🔹 `/list` – Displays the status of active downloads, with options to:
|
|
698
|
+
- Stop an incorrect download using `/stop <ID>`
|
|
699
|
+
- View the real-time output of a download using `/screen <ID>`
|
|
700
|
+
|
|
701
|
+
⚠️ **Warning:** If a download is interrupted, incomplete files may remain in the folder specified in config.json. These files must be deleted manually.
|
|
702
|
+
|
|
703
|
+
#### Setup
|
|
704
|
+
1. Create an `.env` file with your Telegram token and user ID:
|
|
705
|
+
```env
|
|
706
|
+
TOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram
|
|
707
|
+
AUTHORIZED_USER_ID=12345678
|
|
708
|
+
DEBUG=False
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
2. Install dependencies:
|
|
712
|
+
```bash
|
|
713
|
+
pip install -r requirements.txt
|
|
714
|
+
```
|
|
715
|
+
|
|
716
|
+
3. Start the bot (from `/StreamingCommunity/TelegramHelp`):
|
|
717
|
+
```bash
|
|
718
|
+
python3 telegram_bot.py
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
**Running in background:**
|
|
722
|
+
Start the bot inside a screen session and press Ctrl + A, followed by D, to detach from the session without stopping the bot.
|
|
723
|
+
|
|
724
|
+
---
|
|
909
725
|
|
|
910
726
|
# Tutorials
|
|
911
727
|
|
|
@@ -914,19 +730,27 @@ python3 telegram_bot.py
|
|
|
914
730
|
- [Pypy](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
|
|
915
731
|
- [Compiled](https://www.youtube.com/watch?v=pm4lqsxkTVo)
|
|
916
732
|
|
|
917
|
-
## Useful Project
|
|
918
733
|
|
|
919
|
-
|
|
734
|
+
# Useful Project
|
|
735
|
+
|
|
736
|
+
## 🎯 [Unit3Dup](https://github.com/31December99/Unit3Dup)
|
|
920
737
|
Bot in Python per la generazione e l'upload automatico di torrent su tracker basati su Unit3D.
|
|
921
738
|
|
|
922
|
-
|
|
739
|
+
## 🇮🇹 [MammaMia](https://github.com/UrloMythus/MammaMia)
|
|
923
740
|
Addon per Stremio che consente lo streaming HTTPS di film, serie, anime e TV in diretta in lingua italiana.
|
|
924
741
|
|
|
925
|
-
|
|
742
|
+
## 🧩 [streamingcommunity-unofficialapi](https://github.com/Blu-Tiger/streamingcommunity-unofficialapi)
|
|
926
743
|
API non ufficiale per accedere ai contenuti del sito italiano StreamingCommunity.
|
|
927
744
|
|
|
928
|
-
# Disclaimer
|
|
929
745
|
|
|
930
|
-
|
|
746
|
+
# Disclaimer
|
|
747
|
+
> **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
748
|
|
|
932
749
|
> **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.
|
|
750
|
+
|
|
751
|
+
---
|
|
752
|
+
<div align="center">
|
|
753
|
+
**Made with ❤️ for streaming lovers**
|
|
754
|
+
|
|
755
|
+
*If you find this project useful, consider starring it! ⭐*
|
|
756
|
+
</div>
|