StreamingCommunity 2.7.0__py3-none-any.whl → 2.9.0__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/ddl.py +2 -2
- StreamingCommunity/Api/Player/maxstream.py +7 -13
- StreamingCommunity/Api/Player/supervideo.py +7 -33
- StreamingCommunity/Api/Player/vixcloud.py +8 -80
- StreamingCommunity/Api/Site/1337xx/__init__.py +8 -1
- StreamingCommunity/Api/Site/1337xx/site.py +10 -16
- StreamingCommunity/Api/Site/1337xx/title.py +4 -1
- StreamingCommunity/Api/Site/animeunity/__init__.py +9 -2
- StreamingCommunity/Api/Site/animeunity/film_serie.py +7 -1
- StreamingCommunity/Api/Site/animeunity/site.py +8 -10
- StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +1 -1
- StreamingCommunity/Api/Site/cb01new/__init__.py +8 -1
- StreamingCommunity/Api/Site/cb01new/film.py +10 -6
- StreamingCommunity/Api/Site/cb01new/site.py +16 -15
- StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py +9 -2
- StreamingCommunity/Api/Site/ddlstreamitaly/series.py +7 -1
- StreamingCommunity/Api/Site/ddlstreamitaly/site.py +10 -15
- StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +1 -1
- StreamingCommunity/Api/Site/guardaserie/__init__.py +9 -2
- StreamingCommunity/Api/Site/guardaserie/series.py +13 -8
- StreamingCommunity/Api/Site/guardaserie/site.py +12 -17
- StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +1 -1
- StreamingCommunity/Api/Site/mostraguarda/__init__.py +6 -2
- StreamingCommunity/Api/Site/mostraguarda/film.py +10 -8
- StreamingCommunity/Api/Site/streamingcommunity/__init__.py +9 -2
- StreamingCommunity/Api/Site/streamingcommunity/film.py +11 -6
- StreamingCommunity/Api/Site/streamingcommunity/series.py +17 -10
- StreamingCommunity/Api/Site/streamingcommunity/site.py +10 -15
- StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +2 -2
- StreamingCommunity/Api/Template/Util/__init__.py +0 -1
- StreamingCommunity/Api/Template/Util/get_domain.py +24 -66
- StreamingCommunity/Api/Template/Util/manage_ep.py +10 -5
- StreamingCommunity/Api/Template/config_loader.py +8 -8
- StreamingCommunity/Api/Template/site.py +3 -6
- StreamingCommunity/Lib/Downloader/HLS/downloader.py +15 -14
- StreamingCommunity/Lib/Downloader/HLS/segments.py +11 -31
- StreamingCommunity/Lib/Downloader/MP4/downloader.py +12 -9
- StreamingCommunity/Lib/Downloader/TOR/downloader.py +109 -101
- StreamingCommunity/Lib/FFmpeg/__init__.py +1 -1
- StreamingCommunity/Lib/FFmpeg/capture.py +10 -12
- StreamingCommunity/Lib/FFmpeg/command.py +15 -14
- StreamingCommunity/Lib/FFmpeg/util.py +9 -38
- StreamingCommunity/Lib/M3U8/decryptor.py +72 -146
- StreamingCommunity/Lib/M3U8/estimator.py +8 -16
- StreamingCommunity/Lib/M3U8/parser.py +25 -27
- StreamingCommunity/Lib/M3U8/url_fixer.py +1 -4
- StreamingCommunity/Lib/TMBD/__init__.py +2 -0
- StreamingCommunity/Lib/TMBD/obj_tmbd.py +3 -17
- StreamingCommunity/Lib/TMBD/tmdb.py +4 -9
- StreamingCommunity/TelegramHelp/telegram_bot.py +50 -50
- StreamingCommunity/Upload/update.py +3 -2
- StreamingCommunity/Upload/version.py +1 -1
- StreamingCommunity/Util/color.py +1 -1
- StreamingCommunity/Util/{_jsonConfig.py → config_json.py} +148 -54
- StreamingCommunity/Util/headers.py +2 -38
- StreamingCommunity/Util/logger.py +72 -42
- StreamingCommunity/Util/message.py +8 -3
- StreamingCommunity/Util/os.py +41 -93
- StreamingCommunity/Util/table.py +8 -17
- StreamingCommunity/run.py +26 -34
- {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/METADATA +165 -92
- StreamingCommunity-2.9.0.dist-info/RECORD +75 -0
- StreamingCommunity/Api/Template/Util/recall_search.py +0 -37
- StreamingCommunity/Lib/Downloader/HLS/proxyes.py +0 -110
- StreamingCommunity/Util/call_stack.py +0 -42
- StreamingCommunity/Util/console.py +0 -12
- StreamingCommunity-2.7.0.dist-info/RECORD +0 -79
- {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/LICENSE +0 -0
- {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/WHEEL +0 -0
- {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/entry_points.txt +0 -0
- {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: StreamingCommunity
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.9.0
|
|
4
4
|
Home-page: https://github.com/Lovi-0/StreamingCommunity
|
|
5
5
|
Author: Lovi-0
|
|
6
6
|
Project-URL: Bug Reports, https://github.com/Lovi-0/StreamingCommunity/issues
|
|
@@ -14,6 +14,7 @@ Requires-Dist: bs4
|
|
|
14
14
|
Requires-Dist: rich
|
|
15
15
|
Requires-Dist: tqdm
|
|
16
16
|
Requires-Dist: m3u8
|
|
17
|
+
Requires-Dist: certifi
|
|
17
18
|
Requires-Dist: psutil
|
|
18
19
|
Requires-Dist: unidecode
|
|
19
20
|
Requires-Dist: jsbeautifier
|
|
@@ -21,8 +22,6 @@ Requires-Dist: pathvalidate
|
|
|
21
22
|
Requires-Dist: pycryptodomex
|
|
22
23
|
Requires-Dist: ua-generator
|
|
23
24
|
Requires-Dist: qbittorrent-api
|
|
24
|
-
Requires-Dist: python-qbittorrent
|
|
25
|
-
Requires-Dist: Pillow
|
|
26
25
|
Requires-Dist: pyTelegramBotAPI
|
|
27
26
|
|
|
28
27
|
<p align="center">
|
|
@@ -295,13 +294,39 @@ The configuration file is divided into several main sections:
|
|
|
295
294
|
|
|
296
295
|
```json
|
|
297
296
|
{
|
|
298
|
-
"
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
297
|
+
"DEFAULT": {
|
|
298
|
+
"debug": false,
|
|
299
|
+
"show_message": true,
|
|
300
|
+
"clean_console": true,
|
|
301
|
+
"show_trending": true,
|
|
302
|
+
"use_api": true,
|
|
303
|
+
"not_close": false,
|
|
304
|
+
"telegram_bot": false
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
- `debug`: Enables debug logging
|
|
310
|
+
- `show_message`: Displays informational messages
|
|
311
|
+
- `clean_console`: Clears the console between operations
|
|
312
|
+
- `show_trending`: Shows trending content
|
|
313
|
+
- `use_api`: Uses API for domain updates instead of local configuration
|
|
314
|
+
- `not_close`: If set to true, keeps the program running after download is complete
|
|
315
|
+
* Can be changed from terminal with `--not_close true/false`
|
|
316
|
+
- `telegram_bot`: Enables Telegram bot integration
|
|
317
|
+
|
|
318
|
+
## OUT_FOLDER Settings
|
|
319
|
+
|
|
320
|
+
```json
|
|
321
|
+
{
|
|
322
|
+
"OUT_FOLDER": {
|
|
323
|
+
"root_path": "Video",
|
|
324
|
+
"movie_folder_name": "Movie",
|
|
325
|
+
"serie_folder_name": "Serie",
|
|
326
|
+
"anime_folder_name": "Anime",
|
|
327
|
+
"map_episode_name": "E%(episode)_%(episode_name)",
|
|
328
|
+
"add_siteName": false
|
|
329
|
+
}
|
|
305
330
|
}
|
|
306
331
|
```
|
|
307
332
|
|
|
@@ -310,17 +335,21 @@ The configuration file is divided into several main sections:
|
|
|
310
335
|
### Path examples:
|
|
311
336
|
* Windows: `C:\\MyLibrary\\Folder` or `\\\\MyServer\\MyLibrary` (if you want to use a network folder)
|
|
312
337
|
* Linux/MacOS: `Desktop/MyLibrary/Folder`
|
|
313
|
-
|
|
338
|
+
<br/><br/>
|
|
314
339
|
|
|
315
|
-
- `movie_folder_name`: The name of the subdirectory where movies will be stored
|
|
340
|
+
- `movie_folder_name`: The name of the subdirectory where movies will be stored
|
|
316
341
|
* Can be changed from terminal with `--movie_folder_name`
|
|
317
342
|
<br/><br/>
|
|
318
343
|
|
|
319
|
-
- `serie_folder_name`: The name of the subdirectory where TV series will be stored
|
|
344
|
+
- `serie_folder_name`: The name of the subdirectory where TV series will be stored
|
|
320
345
|
* Can be changed from terminal with `--serie_folder_name`
|
|
321
346
|
<br/><br/>
|
|
322
347
|
|
|
323
|
-
- `
|
|
348
|
+
- `anime_folder_name`: The name of the subdirectory where anime will be stored
|
|
349
|
+
* Can be changed from terminal with `--anime_folder_name`
|
|
350
|
+
<br/><br/>
|
|
351
|
+
|
|
352
|
+
- `map_episode_name`: Template for episode filenames
|
|
324
353
|
|
|
325
354
|
### Episode name usage:
|
|
326
355
|
|
|
@@ -329,59 +358,66 @@ The configuration file is divided into several main sections:
|
|
|
329
358
|
* `%(season)` : Is the number of the season
|
|
330
359
|
* `%(episode)` : Is the number of the episode
|
|
331
360
|
* `%(episode_name)` : Is the name of the episode
|
|
332
|
-
`<br/><br/>`
|
|
333
361
|
* Can be changed from terminal with `--map_episode_name`
|
|
334
|
-
<br
|
|
362
|
+
<br><br>
|
|
335
363
|
|
|
336
|
-
- `add_siteName`: If set to true, appends the site_name to the root path before the movie and serie folders
|
|
364
|
+
- `add_siteName`: If set to true, appends the site_name to the root path before the movie and serie folders
|
|
337
365
|
* Can be changed from terminal with `--add_siteName true/false`
|
|
338
366
|
<br/><br/>
|
|
339
367
|
|
|
340
|
-
|
|
341
|
-
* Can be changed from terminal with `--disable_searchDomain true/false`
|
|
342
|
-
<br/><br/>
|
|
343
|
-
|
|
344
|
-
- `not_close`: If set to true, keeps the program running after the download is complete.
|
|
345
|
-
* Can be changed from terminal with `--not_close true/false`
|
|
346
|
-
<br/><br/>
|
|
347
|
-
|
|
348
|
-
### qBittorrent Configuration
|
|
368
|
+
## QBIT_CONFIG Settings
|
|
349
369
|
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}
|
|
370
|
+
```json
|
|
371
|
+
{
|
|
372
|
+
"QBIT_CONFIG": {
|
|
373
|
+
"host": "192.168.1.51",
|
|
374
|
+
"port": "6666",
|
|
375
|
+
"user": "admin",
|
|
376
|
+
"pass": "adminadmin"
|
|
358
377
|
}
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
To enable qBittorrent integration, follow the setup guide [here](https://github.com/lgallard/qBittorrent-Controller/wiki/How-to-enable-the-qBittorrent-Web-UI).
|
|
378
|
+
}
|
|
379
|
+
```
|
|
362
380
|
|
|
381
|
+
To enable qBittorrent integration, follow the setup guide [here](https://github.com/lgallard/qBittorrent-Controller/wiki/How-to-enable-the-qBittorrent-Web-UI).
|
|
363
382
|
|
|
364
383
|
## REQUESTS Settings
|
|
365
384
|
|
|
366
385
|
```json
|
|
367
386
|
{
|
|
368
|
-
"
|
|
369
|
-
|
|
387
|
+
"REQUESTS": {
|
|
388
|
+
"verify": false,
|
|
389
|
+
"timeout": 20,
|
|
390
|
+
"max_retry": 8
|
|
391
|
+
}
|
|
370
392
|
}
|
|
371
393
|
```
|
|
372
394
|
|
|
395
|
+
- `verify`: Verifies SSL certificates
|
|
373
396
|
- `timeout`: Maximum timeout (in seconds) for each request
|
|
374
397
|
- `max_retry`: Number of retry attempts per segment during M3U8 index download
|
|
375
398
|
|
|
376
|
-
|
|
377
399
|
## M3U8_DOWNLOAD Settings
|
|
378
400
|
|
|
379
401
|
```json
|
|
380
402
|
{
|
|
381
|
-
"
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
403
|
+
"M3U8_DOWNLOAD": {
|
|
404
|
+
"tqdm_delay": 0.01,
|
|
405
|
+
"default_video_workser": 12,
|
|
406
|
+
"default_audio_workser": 12,
|
|
407
|
+
"segment_timeout": 8,
|
|
408
|
+
"download_audio": true,
|
|
409
|
+
"merge_audio": true,
|
|
410
|
+
"specific_list_audio": [
|
|
411
|
+
"ita"
|
|
412
|
+
],
|
|
413
|
+
"download_subtitle": true,
|
|
414
|
+
"merge_subs": true,
|
|
415
|
+
"specific_list_subtitles": [
|
|
416
|
+
"ita",
|
|
417
|
+
"eng"
|
|
418
|
+
],
|
|
419
|
+
"cleanup_tmp_folder": true
|
|
420
|
+
}
|
|
385
421
|
}
|
|
386
422
|
```
|
|
387
423
|
|
|
@@ -394,66 +430,88 @@ The configuration file is divided into several main sections:
|
|
|
394
430
|
* Can be changed from terminal with `--default_audio_worker <number>`
|
|
395
431
|
<br/><br/>
|
|
396
432
|
|
|
397
|
-
- `
|
|
433
|
+
- `segment_timeout`: Timeout for downloading individual segments
|
|
434
|
+
- `download_audio`: Whether to download audio tracks
|
|
435
|
+
- `merge_audio`: Whether to merge audio with video
|
|
436
|
+
- `specific_list_audio`: List of audio languages to download
|
|
437
|
+
* Can be changed from terminal with `--specific_list_audio ita,eng`
|
|
438
|
+
<br/><br/>
|
|
398
439
|
|
|
440
|
+
- `download_subtitle`: Whether to download subtitles
|
|
441
|
+
- `merge_subs`: Whether to merge subtitles with video
|
|
442
|
+
- `specific_list_subtitles`: List of subtitle languages to download
|
|
443
|
+
* Can be changed from terminal with `--specific_list_subtitles ita,eng`
|
|
444
|
+
<br/><br/>
|
|
399
445
|
|
|
446
|
+
- `cleanup_tmp_folder`: Remove temporary .ts files after download
|
|
400
447
|
|
|
401
|
-
|
|
448
|
+
## Available Language Codes
|
|
402
449
|
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
450
|
+
| European | Asian | Middle Eastern | Others |
|
|
451
|
+
|-----------------|-----------------|-----------------|-----------------|
|
|
452
|
+
| ita - Italian | chi - Chinese | ara - Arabic | eng - English |
|
|
453
|
+
| spa - Spanish | jpn - Japanese | heb - Hebrew | por - Portuguese|
|
|
454
|
+
| fre - French | kor - Korean | tur - Turkish | fil - Filipino |
|
|
455
|
+
| ger - German | hin - Hindi | | ind - Indonesian|
|
|
456
|
+
| rus - Russian | mal - Malayalam | | may - Malay |
|
|
457
|
+
| swe - Swedish | tam - Tamil | | vie - Vietnamese|
|
|
458
|
+
| pol - Polish | tel - Telugu | | |
|
|
459
|
+
| ukr - Ukrainian | tha - Thai | | |
|
|
406
460
|
|
|
461
|
+
## M3U8_CONVERSION Settings
|
|
407
462
|
|
|
408
|
-
```
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
ind - Indonesian vie - Vietnamese
|
|
463
|
+
```json
|
|
464
|
+
{
|
|
465
|
+
"M3U8_CONVERSION": {
|
|
466
|
+
"use_codec": false,
|
|
467
|
+
"use_vcodec": true,
|
|
468
|
+
"use_acodec": true,
|
|
469
|
+
"use_bitrate": true,
|
|
470
|
+
"use_gpu": false,
|
|
471
|
+
"default_preset": "ultrafast"
|
|
472
|
+
}
|
|
473
|
+
}
|
|
420
474
|
```
|
|
421
475
|
|
|
422
|
-
|
|
423
|
-
|
|
476
|
+
- `use_codec`: Use specific codec settings
|
|
477
|
+
- `use_vcodec`: Use specific video codec
|
|
478
|
+
- `use_acodec`: Use specific audio codec
|
|
479
|
+
- `use_bitrate`: Apply bitrate settings
|
|
480
|
+
- `use_gpu`: Enable GPU acceleration (if available)
|
|
481
|
+
- `default_preset`: FFmpeg encoding preset (ultrafast, fast, medium, slow, etc.)
|
|
424
482
|
|
|
483
|
+
### Advanced M3U8 Conversion Options
|
|
425
484
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
- Free and open-source
|
|
448
|
-
|
|
449
|
-
You can download VLC Media Player from the [official website](https://www.videolan.org/vlc/).
|
|
485
|
+
The software supports various advanced encoding options via FFmpeg:
|
|
486
|
+
|
|
487
|
+
#### Encoding Presets
|
|
488
|
+
The `default_preset` configuration can be set to one of the following values:
|
|
489
|
+
- `ultrafast`: Extremely fast conversion but larger file size
|
|
490
|
+
- `superfast`: Very fast with good quality/size ratio
|
|
491
|
+
- `veryfast`: Fast with good compression
|
|
492
|
+
- `faster`: Optimal balance for most users
|
|
493
|
+
- `fast`: Good compression, moderate time
|
|
494
|
+
- `medium`: FFmpeg default setting
|
|
495
|
+
- `slow`: High quality, slower process
|
|
496
|
+
- `slower`: Very high quality, slow process
|
|
497
|
+
- `veryslow`: Maximum quality, very slow process
|
|
498
|
+
|
|
499
|
+
#### GPU Acceleration
|
|
500
|
+
When `use_gpu` is enabled, the system will use available hardware acceleration:
|
|
501
|
+
- NVIDIA: NVENC
|
|
502
|
+
- AMD: AMF
|
|
503
|
+
- Intel: QSV
|
|
504
|
+
|
|
505
|
+
You need to have updated drivers and FFmpeg compiled with hardware acceleration support.
|
|
450
506
|
|
|
451
507
|
## M3U8_PARSER Settings
|
|
452
508
|
|
|
453
509
|
```json
|
|
454
510
|
{
|
|
455
|
-
"
|
|
456
|
-
|
|
511
|
+
"M3U8_PARSER": {
|
|
512
|
+
"force_resolution": "Best",
|
|
513
|
+
"get_only_link": false
|
|
514
|
+
}
|
|
457
515
|
}
|
|
458
516
|
```
|
|
459
517
|
|
|
@@ -473,7 +531,25 @@ You can download VLC Media Player from the [official website](https://www.videol
|
|
|
473
531
|
|
|
474
532
|
- `get_only_link`: Return M3U8 playlist/index URL instead of downloading
|
|
475
533
|
|
|
534
|
+
## SITE_EXTRA Settings
|
|
535
|
+
|
|
536
|
+
```json
|
|
537
|
+
{
|
|
538
|
+
"SITE_EXTRA": {
|
|
539
|
+
"ddlstreamitaly": {
|
|
540
|
+
"ips4_device_key": "",
|
|
541
|
+
"ips4_member_id": "",
|
|
542
|
+
"ips4_login_key": ""
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
```
|
|
476
547
|
|
|
548
|
+
- Site-specific configuration for `ddlstreamitaly`:
|
|
549
|
+
- `ips4_device_key`: Device key for authentication
|
|
550
|
+
- `ips4_member_id`: Member ID for authentication
|
|
551
|
+
- `ips4_login_key`: Login key for authentication
|
|
552
|
+
|
|
477
553
|
## Update Domains
|
|
478
554
|
|
|
479
555
|
There are two ways to update the domains for the supported websites:
|
|
@@ -533,9 +609,6 @@ python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,s
|
|
|
533
609
|
|
|
534
610
|
# Keep console open after download
|
|
535
611
|
python test_run.py --not_close true
|
|
536
|
-
|
|
537
|
-
# Disable domain search and add site name
|
|
538
|
-
python test_run.py --disable_searchDomain true --add_siteName true
|
|
539
612
|
```
|
|
540
613
|
|
|
541
614
|
# Docker
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
StreamingCommunity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
StreamingCommunity/run.py,sha256=AbEL0cyAaRgaG5qE1c7Z6SVZ4Wu7WIH9pZmwC4FDWW8,12076
|
|
3
|
+
StreamingCommunity/Api/Player/ddl.py,sha256=M_ePETCMBpIHr5K5Yb7EML5VXwqkR7vJHQcGIv4AEQw,2261
|
|
4
|
+
StreamingCommunity/Api/Player/maxstream.py,sha256=lQ6sbhBqMR9e6N-03nWZ3qsUlRT9l68d8dTA0th1XVQ,4984
|
|
5
|
+
StreamingCommunity/Api/Player/supervideo.py,sha256=OLbT8GNOT87ZSuBC5PbtbW8tiXzHK-Uttijqqp_Y06k,5297
|
|
6
|
+
StreamingCommunity/Api/Player/vixcloud.py,sha256=NOZhW59hyBnG5FfmppcnIudAztr7seWzQBzAN3KC_3M,6317
|
|
7
|
+
StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py,sha256=U-8QlD5kGzIk3-4t4D6QyYmiDe8UBrSuVi1YHRQb7AU,4295
|
|
8
|
+
StreamingCommunity/Api/Player/Helper/Vixcloud/util.py,sha256=xt96JIbfE5W4Y59W888Cp-baRwnQVEDQO_x7Wq5iyNQ,5492
|
|
9
|
+
StreamingCommunity/Api/Site/1337xx/__init__.py,sha256=r0K84qeonGnk9bgbKklF6rJ1qhT1Si1MH2hnXnH_SIE,1378
|
|
10
|
+
StreamingCommunity/Api/Site/1337xx/site.py,sha256=-XFLF7k5SXPnh07Jv4KxmSW4w8OSl4ci4oQeU_WTJoE,2672
|
|
11
|
+
StreamingCommunity/Api/Site/1337xx/title.py,sha256=lGb-IbWEIfg9Eu3XIu6IfxTOjvXkFL_NO9UEZcxOAfE,1831
|
|
12
|
+
StreamingCommunity/Api/Site/animeunity/__init__.py,sha256=Lz9trBzQZL11wGyIT2Y4CWe3JxOkDUPzTQXXO76s0oQ,2278
|
|
13
|
+
StreamingCommunity/Api/Site/animeunity/film_serie.py,sha256=noYqH5NHUk_JO6GeqN7-PQy3tplDRKYWYI_cgT1SzqI,5771
|
|
14
|
+
StreamingCommunity/Api/Site/animeunity/site.py,sha256=TtInV7gV6sZBWooiihKWdXogV_AjqfB-bo3ymbRt1S0,5937
|
|
15
|
+
StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py,sha256=6Vbw5KVwUbgooGjUIRAuXr9cWSkHDkAFP7EiXF2T4OM,2709
|
|
16
|
+
StreamingCommunity/Api/Site/cb01new/__init__.py,sha256=yOfCNYZU5M5rCvNtwvyTgGjJv7qGmNWRAzk0AtAgbhU,1393
|
|
17
|
+
StreamingCommunity/Api/Site/cb01new/film.py,sha256=trrEGcklB6FhqpJvGaEwHI0EThK__e9O6DuknKAFNHw,1628
|
|
18
|
+
StreamingCommunity/Api/Site/cb01new/site.py,sha256=PaBBkydddvajDesutjLZPmk5zWs_EDhg6uZnq8TIO5U,2548
|
|
19
|
+
StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py,sha256=_tQbsAJgZufjszrFZ0Om3ia6oYJHMjiHfXAMScqf4yQ,1533
|
|
20
|
+
StreamingCommunity/Api/Site/ddlstreamitaly/series.py,sha256=z3te51do5C_O77rDTR1N01aQ76BIGe5pm5i_PWJepQ4,3369
|
|
21
|
+
StreamingCommunity/Api/Site/ddlstreamitaly/site.py,sha256=N-SF9nr09tBVVbzigwijTSr4ffRmuKOyNak6vy4g3cw,2938
|
|
22
|
+
StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py,sha256=HY8YEvzWp3sy1q07rFLXLZhGYvapA1amMZByYvs0iJM,2553
|
|
23
|
+
StreamingCommunity/Api/Site/guardaserie/__init__.py,sha256=ZR9Fz6v2cS2Ve8BfAlvTNK-d5_Xwp5_eqrnFupgxj5Q,1385
|
|
24
|
+
StreamingCommunity/Api/Site/guardaserie/series.py,sha256=52OjjItPuVglqlpFFVeJiSXrUL5WFhC-GfyRo7yWnsM,5665
|
|
25
|
+
StreamingCommunity/Api/Site/guardaserie/site.py,sha256=nXqpYyWQVAZlGtwfR_IL9T2DO-APCkZ-clYIEip9_bc,2563
|
|
26
|
+
StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py,sha256=4sZRWm8r5X80q285hemRf7MAWeaN5yfOU6i1SjKU4Tg,3268
|
|
27
|
+
StreamingCommunity/Api/Site/mostraguarda/__init__.py,sha256=rsM2_7FmwyV3ibUbpcflk-eyH8ouBv0ZdCA5tCCVB70,1234
|
|
28
|
+
StreamingCommunity/Api/Site/mostraguarda/film.py,sha256=dA7Vo9bU7g8eY8Vaj06_n2MHlKBMHh4B_MIw2sO872A,2719
|
|
29
|
+
StreamingCommunity/Api/Site/streamingcommunity/__init__.py,sha256=FV3ch-farw3tN_-Ay3JV_-TIoHzgQzxEJWPlFibE62Y,2351
|
|
30
|
+
StreamingCommunity/Api/Site/streamingcommunity/film.py,sha256=LaZzEQms9t7r30_PjHPgIOUkVDyotX0qFDBMKMVNSWo,2530
|
|
31
|
+
StreamingCommunity/Api/Site/streamingcommunity/series.py,sha256=T4Yw-cjdQ8GsOLPJwd8iDIcTND1olg81MopsaSDd1Ik,7921
|
|
32
|
+
StreamingCommunity/Api/Site/streamingcommunity/site.py,sha256=o_xhIxG23Q8klL0o6Yk2DOuJNDKTJGd2EOsPWOwR6Pc,2998
|
|
33
|
+
StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py,sha256=YYetljW4yr6eoiLe6nDUuFZ9NI8K85tF6859ikITmsY,3571
|
|
34
|
+
StreamingCommunity/Api/Template/__init__.py,sha256=oyfd_4_g5p5q6mxb_rKwSsudZnTM3W3kg1tLwxg-v-Q,46
|
|
35
|
+
StreamingCommunity/Api/Template/config_loader.py,sha256=seJjLi05_8xrs4tdt4zXNCPa9TLp7n5FufFM2XErokI,2166
|
|
36
|
+
StreamingCommunity/Api/Template/site.py,sha256=MJF8oc4iW29nU8SF_J94UaSjanTVBMhKiRl3xrA0qBA,2849
|
|
37
|
+
StreamingCommunity/Api/Template/Class/SearchType.py,sha256=FtO8xDUGEeJgMWsK2Ab7ZzAFsncalTYL2oEYi8uCnuk,2531
|
|
38
|
+
StreamingCommunity/Api/Template/Util/__init__.py,sha256=GZZgT816VwTYekPOwLExHenpak0gO-V3LLGTYIElt3A,234
|
|
39
|
+
StreamingCommunity/Api/Template/Util/get_domain.py,sha256=VmBtv419J96qgceLlEecIG7Sw2EsPNM_YPcUMhxGXcE,2775
|
|
40
|
+
StreamingCommunity/Api/Template/Util/manage_ep.py,sha256=xYDC3tlx6gjQqCqcyKCfQVQeE6aWU5sdrovj8uuvbd8,8118
|
|
41
|
+
StreamingCommunity/Lib/Downloader/__init__.py,sha256=JhbBh5hOnSM7VmtkxJ7zZ_FtWEC1JdnKThsSBjLV5FY,140
|
|
42
|
+
StreamingCommunity/Lib/Downloader/HLS/downloader.py,sha256=h-44aunSdcCbG4CXPeZP2LWypA9T905E4RnTP4kSyZ0,21168
|
|
43
|
+
StreamingCommunity/Lib/Downloader/HLS/segments.py,sha256=4D-B_KfwiQq6suMgJxL_aMrOqqX5RVc4Vy0Ktc7tFKM,17609
|
|
44
|
+
StreamingCommunity/Lib/Downloader/MP4/downloader.py,sha256=MNiWiG0-KcYpc1oth6kr5EOM8pyfbOZrLGXW9FsQzGE,7617
|
|
45
|
+
StreamingCommunity/Lib/Downloader/TOR/downloader.py,sha256=KVZxCl1VB1-OuTjUhVS5Ycog_P0vCGTfRzhZPv8O7Ps,11267
|
|
46
|
+
StreamingCommunity/Lib/FFmpeg/__init__.py,sha256=6PBsZdE1jrD2EKOVyx3JEHnyDZzVeKlPkH5T0zyfOgU,130
|
|
47
|
+
StreamingCommunity/Lib/FFmpeg/capture.py,sha256=73BEpTijksErZOu46iRxwl3idKzZ-sVXXRr4nocIGY0,5168
|
|
48
|
+
StreamingCommunity/Lib/FFmpeg/command.py,sha256=hHMLOmb6I3VvuztxcRCFxhYgeGaqHNA78qYERJr5NXs,10640
|
|
49
|
+
StreamingCommunity/Lib/FFmpeg/util.py,sha256=Yyo-z9TOPGFdD_VscWi35Kcw88y4loGNLpNOzy7ADm8,7063
|
|
50
|
+
StreamingCommunity/Lib/M3U8/__init__.py,sha256=H_KS2eDd3kVXMziFJnD0FCPvPHEizaqfoA36ElTv_r8,170
|
|
51
|
+
StreamingCommunity/Lib/M3U8/decryptor.py,sha256=kuxxsd3eN0VGRrMJWXzHo8gCpT0u3fSZs_lwxlE5Fqs,2948
|
|
52
|
+
StreamingCommunity/Lib/M3U8/estimator.py,sha256=5Qevboxu1h5Q-72bkHy0-Vess9pOIaUrpFYfBVWNDN8,5709
|
|
53
|
+
StreamingCommunity/Lib/M3U8/parser.py,sha256=xN16pQZSCN9mQl_s7OcuH07-mNgVMpAS_hERq6zp7XM,21558
|
|
54
|
+
StreamingCommunity/Lib/M3U8/url_fixer.py,sha256=zldE4yOuNBV6AAvL1KI6p7XdRI_R5YZRscbDgT1564M,1735
|
|
55
|
+
StreamingCommunity/Lib/TMBD/__init__.py,sha256=XzE42tw3Ws59DD1PF8WmGtZ0D4D7Hk3Af8QthNE-22U,66
|
|
56
|
+
StreamingCommunity/Lib/TMBD/obj_tmbd.py,sha256=dRSvJFS5yqmsBZcw2wqbStcBtXNjU_3n5czMyremAtU,1187
|
|
57
|
+
StreamingCommunity/Lib/TMBD/tmdb.py,sha256=LjO21d7iexnSwKBYjgXFECojVSE8WCspQszJJcaZexU,10692
|
|
58
|
+
StreamingCommunity/TelegramHelp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
|
+
StreamingCommunity/TelegramHelp/telegram_bot.py,sha256=Qe1__aoK4PpDuing8JtWgdHzLee8LuYYyfeLNA7yADU,26307
|
|
60
|
+
StreamingCommunity/Upload/update.py,sha256=TXWAOfvZr1So_oME11YvX_L5zRy2tM-ijF-_g1jf87o,2548
|
|
61
|
+
StreamingCommunity/Upload/version.py,sha256=GZp6mmmofJiy6A667jNKUXK_wKc_vosV2XhlVNUiZdI,171
|
|
62
|
+
StreamingCommunity/Util/color.py,sha256=NvD0Eni-25oOOkY-szCEoc0lGvzQxyL7xhM0RE4EvUM,458
|
|
63
|
+
StreamingCommunity/Util/config_json.py,sha256=dmo7FTboEuEs1nYf17RYaTyT03qRvOLJzGgBitYHXs4,19379
|
|
64
|
+
StreamingCommunity/Util/ffmpeg_installer.py,sha256=q5yb_ZXKe9PhcG7JbKLfo1AZa8DNukgHqymPbudDuAY,13585
|
|
65
|
+
StreamingCommunity/Util/headers.py,sha256=TItkaFMx1GqsVNEIS3Tr0BGU5EHyF-HkZVliHORT3P8,308
|
|
66
|
+
StreamingCommunity/Util/logger.py,sha256=9kGD6GmWj2pM8ADpJc85o7jm8DD0c5Aguqnq-9kmxos,3314
|
|
67
|
+
StreamingCommunity/Util/message.py,sha256=SJaIPLvWeQqsIODVUKw3TgYRmBChovmlbcF6OUxqMI8,1425
|
|
68
|
+
StreamingCommunity/Util/os.py,sha256=MUGJKQbNMWeoUrnJ2Ug3hoyYlrPDqU9BY94UmiUbxfA,14858
|
|
69
|
+
StreamingCommunity/Util/table.py,sha256=X1t9VPYl9GemLMk_-x_WfpysQ-3Iv8vh0aTIJKm0fK0,8565
|
|
70
|
+
StreamingCommunity-2.9.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
71
|
+
StreamingCommunity-2.9.0.dist-info/METADATA,sha256=om86R0CDw7hW8WO4wF9ghrTwBB_Afc9PCoii6eNNw_M,21498
|
|
72
|
+
StreamingCommunity-2.9.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
73
|
+
StreamingCommunity-2.9.0.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
|
|
74
|
+
StreamingCommunity-2.9.0.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
|
|
75
|
+
StreamingCommunity-2.9.0.dist-info/RECORD,,
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# 19.10.24
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
import sys
|
|
5
|
-
|
|
6
|
-
def execute_search(info):
|
|
7
|
-
"""
|
|
8
|
-
Dynamically imports and executes a specified function from a module defined in the info dictionary.
|
|
9
|
-
|
|
10
|
-
Parameters:
|
|
11
|
-
info (dict): A dictionary containing the function name, folder, and module information.
|
|
12
|
-
"""
|
|
13
|
-
|
|
14
|
-
# Define the project path using the folder from the info dictionary
|
|
15
|
-
project_path = os.path.dirname(info['folder']) # Get the base path for the project
|
|
16
|
-
|
|
17
|
-
# Add the project path to sys.path
|
|
18
|
-
if project_path not in sys.path:
|
|
19
|
-
sys.path.append(project_path)
|
|
20
|
-
|
|
21
|
-
# Attempt to import the specified function from the module
|
|
22
|
-
try:
|
|
23
|
-
# Construct the import statement dynamically
|
|
24
|
-
module_path = f"StreamingCommunity.Api.Site{info['folder_base']}"
|
|
25
|
-
exec(f"from {module_path} import {info['function']}")
|
|
26
|
-
|
|
27
|
-
# Call the specified function
|
|
28
|
-
eval(info['function'])() # Calls the search function
|
|
29
|
-
|
|
30
|
-
except ModuleNotFoundError as e:
|
|
31
|
-
print(f"ModuleNotFoundError: {e}")
|
|
32
|
-
|
|
33
|
-
except ImportError as e:
|
|
34
|
-
print(f"ImportError: {e}")
|
|
35
|
-
|
|
36
|
-
except Exception as e:
|
|
37
|
-
print(f"An error occurred: {e}")
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
# 09.06.24
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
import sys
|
|
5
|
-
import logging
|
|
6
|
-
from concurrent.futures import ThreadPoolExecutor
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
# External libraries
|
|
10
|
-
import httpx
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
# Internal utilities
|
|
14
|
-
from StreamingCommunity.Util._jsonConfig import config_manager
|
|
15
|
-
from StreamingCommunity.Util.headers import get_userAgent
|
|
16
|
-
from StreamingCommunity.Util.os import os_manager
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class ProxyManager:
|
|
20
|
-
def __init__(self, proxy_list=None, url=None):
|
|
21
|
-
"""
|
|
22
|
-
Initialize ProxyManager with a list of proxies and timeout.
|
|
23
|
-
|
|
24
|
-
Parameters:
|
|
25
|
-
- proxy_list: List of proxy strings
|
|
26
|
-
- timeout: Timeout for proxy requests
|
|
27
|
-
"""
|
|
28
|
-
self.proxy_list = proxy_list or []
|
|
29
|
-
self.verified_proxies = []
|
|
30
|
-
self.timeout = config_manager.get_float('REQUESTS', 'timeout')
|
|
31
|
-
self.url = url
|
|
32
|
-
|
|
33
|
-
def _check_proxy(self, proxy):
|
|
34
|
-
"""
|
|
35
|
-
Check if a single proxy is working by making a request to Google.
|
|
36
|
-
|
|
37
|
-
Parameters:
|
|
38
|
-
- proxy: Proxy string to be checked
|
|
39
|
-
|
|
40
|
-
Returns:
|
|
41
|
-
- Proxy string if working, None otherwise
|
|
42
|
-
"""
|
|
43
|
-
protocol = proxy.split(":")[0].lower()
|
|
44
|
-
protocol = f'{protocol}://'
|
|
45
|
-
proxy = {protocol: proxy, "https://": proxy}
|
|
46
|
-
|
|
47
|
-
try:
|
|
48
|
-
with httpx.Client(proxies=proxy, verify=False) as client:
|
|
49
|
-
response = client.get(self.url, timeout=self.timeout, headers={'user-agent': get_userAgent()})
|
|
50
|
-
|
|
51
|
-
if response.status_code == 200:
|
|
52
|
-
logging.info(f"Proxy {proxy} is working.")
|
|
53
|
-
return proxy
|
|
54
|
-
|
|
55
|
-
except Exception as e:
|
|
56
|
-
logging.error(f"Test proxy {proxy} failed: {e}")
|
|
57
|
-
return None
|
|
58
|
-
|
|
59
|
-
def verify_proxies(self):
|
|
60
|
-
"""
|
|
61
|
-
Verify all proxies in the list and store the working ones.
|
|
62
|
-
"""
|
|
63
|
-
logging.info("Starting proxy verification...")
|
|
64
|
-
with ThreadPoolExecutor(max_workers=os.cpu_count()) as executor:
|
|
65
|
-
self.verified_proxies = list(executor.map(self._check_proxy, self.proxy_list))
|
|
66
|
-
|
|
67
|
-
self.verified_proxies = [proxy for proxy in self.verified_proxies if proxy]
|
|
68
|
-
logging.info(f"Verification complete. {len(self.verified_proxies)} proxies are working.")
|
|
69
|
-
|
|
70
|
-
def get_verified_proxies(self):
|
|
71
|
-
"""
|
|
72
|
-
Get validate proxies.
|
|
73
|
-
"""
|
|
74
|
-
|
|
75
|
-
if len(self.verified_proxies) > 0:
|
|
76
|
-
return self.verified_proxies
|
|
77
|
-
|
|
78
|
-
else:
|
|
79
|
-
logging.error("Cant find valid proxy.")
|
|
80
|
-
sys.exit(0)
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
def main_test_proxy(url_test):
|
|
84
|
-
|
|
85
|
-
path_file_proxt_list = "list_proxy.txt"
|
|
86
|
-
|
|
87
|
-
if os_manager.check_file(path_file_proxt_list):
|
|
88
|
-
|
|
89
|
-
# Read file
|
|
90
|
-
with open(path_file_proxt_list, 'r') as file:
|
|
91
|
-
ip_addresses = file.readlines()
|
|
92
|
-
|
|
93
|
-
# Formatt ip
|
|
94
|
-
ip_addresses = [ip.strip() for ip in ip_addresses]
|
|
95
|
-
formatted_ips = [f"http://{ip}" for ip in ip_addresses]
|
|
96
|
-
|
|
97
|
-
# Get list of proxy from config.json
|
|
98
|
-
proxy_list = formatted_ips
|
|
99
|
-
|
|
100
|
-
# Verify proxy
|
|
101
|
-
manager = ProxyManager(proxy_list, url_test)
|
|
102
|
-
manager.verify_proxies()
|
|
103
|
-
|
|
104
|
-
# Write valid ip in txt file
|
|
105
|
-
with open(path_file_proxt_list, 'w') as file:
|
|
106
|
-
for ip in ip_addresses:
|
|
107
|
-
file.write(f"{ip}\n")
|
|
108
|
-
|
|
109
|
-
# Return valid proxy
|
|
110
|
-
return manager.get_verified_proxies()
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# 21.06.24
|
|
2
|
-
|
|
3
|
-
import os
|
|
4
|
-
import inspect
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def get_call_stack():
|
|
8
|
-
"""
|
|
9
|
-
Retrieves the current call stack with details about each call.
|
|
10
|
-
|
|
11
|
-
This function inspects the current call stack and returns a list of dictionaries,
|
|
12
|
-
where each dictionary contains details about a function call in the stack.
|
|
13
|
-
|
|
14
|
-
Returns:
|
|
15
|
-
list: A list of dictionaries, each containing the following keys:
|
|
16
|
-
- function (str): The name of the function.
|
|
17
|
-
- folder (str): The directory path of the script containing the function.
|
|
18
|
-
- folder_base (str): The base name of the directory path.
|
|
19
|
-
- script (str): The name of the script file containing the function.
|
|
20
|
-
- line (int): The line number in the script where the function is defined.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
stack = inspect.stack()
|
|
24
|
-
call_stack = []
|
|
25
|
-
|
|
26
|
-
for frame_info in stack:
|
|
27
|
-
function_name = frame_info.function
|
|
28
|
-
filename = frame_info.filename
|
|
29
|
-
lineno = frame_info.lineno
|
|
30
|
-
folder_name = os.path.dirname(filename)
|
|
31
|
-
folder_base = os.path.basename(folder_name)
|
|
32
|
-
script_name = os.path.basename(filename)
|
|
33
|
-
|
|
34
|
-
call_stack.append({
|
|
35
|
-
"function": function_name,
|
|
36
|
-
"folder": folder_name,
|
|
37
|
-
"folder_base": folder_base,
|
|
38
|
-
"script": script_name,
|
|
39
|
-
"line": lineno
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
return call_stack
|