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.

Files changed (71) hide show
  1. StreamingCommunity/Api/Player/ddl.py +2 -2
  2. StreamingCommunity/Api/Player/maxstream.py +7 -13
  3. StreamingCommunity/Api/Player/supervideo.py +7 -33
  4. StreamingCommunity/Api/Player/vixcloud.py +8 -80
  5. StreamingCommunity/Api/Site/1337xx/__init__.py +8 -1
  6. StreamingCommunity/Api/Site/1337xx/site.py +10 -16
  7. StreamingCommunity/Api/Site/1337xx/title.py +4 -1
  8. StreamingCommunity/Api/Site/animeunity/__init__.py +9 -2
  9. StreamingCommunity/Api/Site/animeunity/film_serie.py +7 -1
  10. StreamingCommunity/Api/Site/animeunity/site.py +8 -10
  11. StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +1 -1
  12. StreamingCommunity/Api/Site/cb01new/__init__.py +8 -1
  13. StreamingCommunity/Api/Site/cb01new/film.py +10 -6
  14. StreamingCommunity/Api/Site/cb01new/site.py +16 -15
  15. StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py +9 -2
  16. StreamingCommunity/Api/Site/ddlstreamitaly/series.py +7 -1
  17. StreamingCommunity/Api/Site/ddlstreamitaly/site.py +10 -15
  18. StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +1 -1
  19. StreamingCommunity/Api/Site/guardaserie/__init__.py +9 -2
  20. StreamingCommunity/Api/Site/guardaserie/series.py +13 -8
  21. StreamingCommunity/Api/Site/guardaserie/site.py +12 -17
  22. StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +1 -1
  23. StreamingCommunity/Api/Site/mostraguarda/__init__.py +6 -2
  24. StreamingCommunity/Api/Site/mostraguarda/film.py +10 -8
  25. StreamingCommunity/Api/Site/streamingcommunity/__init__.py +9 -2
  26. StreamingCommunity/Api/Site/streamingcommunity/film.py +11 -6
  27. StreamingCommunity/Api/Site/streamingcommunity/series.py +17 -10
  28. StreamingCommunity/Api/Site/streamingcommunity/site.py +10 -15
  29. StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +2 -2
  30. StreamingCommunity/Api/Template/Util/__init__.py +0 -1
  31. StreamingCommunity/Api/Template/Util/get_domain.py +24 -66
  32. StreamingCommunity/Api/Template/Util/manage_ep.py +10 -5
  33. StreamingCommunity/Api/Template/config_loader.py +8 -8
  34. StreamingCommunity/Api/Template/site.py +3 -6
  35. StreamingCommunity/Lib/Downloader/HLS/downloader.py +15 -14
  36. StreamingCommunity/Lib/Downloader/HLS/segments.py +11 -31
  37. StreamingCommunity/Lib/Downloader/MP4/downloader.py +12 -9
  38. StreamingCommunity/Lib/Downloader/TOR/downloader.py +109 -101
  39. StreamingCommunity/Lib/FFmpeg/__init__.py +1 -1
  40. StreamingCommunity/Lib/FFmpeg/capture.py +10 -12
  41. StreamingCommunity/Lib/FFmpeg/command.py +15 -14
  42. StreamingCommunity/Lib/FFmpeg/util.py +9 -38
  43. StreamingCommunity/Lib/M3U8/decryptor.py +72 -146
  44. StreamingCommunity/Lib/M3U8/estimator.py +8 -16
  45. StreamingCommunity/Lib/M3U8/parser.py +25 -27
  46. StreamingCommunity/Lib/M3U8/url_fixer.py +1 -4
  47. StreamingCommunity/Lib/TMBD/__init__.py +2 -0
  48. StreamingCommunity/Lib/TMBD/obj_tmbd.py +3 -17
  49. StreamingCommunity/Lib/TMBD/tmdb.py +4 -9
  50. StreamingCommunity/TelegramHelp/telegram_bot.py +50 -50
  51. StreamingCommunity/Upload/update.py +3 -2
  52. StreamingCommunity/Upload/version.py +1 -1
  53. StreamingCommunity/Util/color.py +1 -1
  54. StreamingCommunity/Util/{_jsonConfig.py → config_json.py} +148 -54
  55. StreamingCommunity/Util/headers.py +2 -38
  56. StreamingCommunity/Util/logger.py +72 -42
  57. StreamingCommunity/Util/message.py +8 -3
  58. StreamingCommunity/Util/os.py +41 -93
  59. StreamingCommunity/Util/table.py +8 -17
  60. StreamingCommunity/run.py +26 -34
  61. {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/METADATA +165 -92
  62. StreamingCommunity-2.9.0.dist-info/RECORD +75 -0
  63. StreamingCommunity/Api/Template/Util/recall_search.py +0 -37
  64. StreamingCommunity/Lib/Downloader/HLS/proxyes.py +0 -110
  65. StreamingCommunity/Util/call_stack.py +0 -42
  66. StreamingCommunity/Util/console.py +0 -12
  67. StreamingCommunity-2.7.0.dist-info/RECORD +0 -79
  68. {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/LICENSE +0 -0
  69. {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/WHEEL +0 -0
  70. {StreamingCommunity-2.7.0.dist-info → StreamingCommunity-2.9.0.dist-info}/entry_points.txt +0 -0
  71. {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.7.0
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
- "root_path": "Video",
299
- "movie_folder_name": "Movie",
300
- "serie_folder_name": "TV",
301
- "map_episode_name": "%(tv_name)_S%(season)E%(episode)_%(episode_name)",
302
- "add_siteName": false,
303
- "disable_searchDomain": false,
304
- "not_close": false
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
- `<br/><br/>`
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
- - `map_episode_name`: Template for TV series episode filenames
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/><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
- - `disable_searchDomain`: If set to true, disables the search for a new domain for all sites.
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
- ```json
351
- {
352
- "config_qbit_tor": {
353
- "host": "192.168.1.59",
354
- "port": "8080",
355
- "user": "admin",
356
- "pass": "adminadmin"
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
- "timeout": 20,
369
- "max_retry": 3
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
- "tqdm_delay": 0.01,
382
- "default_video_workser": 12,
383
- "default_audio_workser": 12,
384
- "cleanup_tmp_folder": true
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
- - `cleanup_tmp_folder`: Remove temporary .ts files after download
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
- ### Language Settings
448
+ ## Available Language Codes
402
449
 
403
- The following codes can be used for `specific_list_audio` and `specific_list_subtitles`:
404
- * Can be changed from terminal with `--specific_list_audio ita,eng` for audio
405
- * Can be changed from terminal with `--specific_list_subtitles eng,spa` for subtitles
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
- ara - Arabic eng - English ita - Italian por - Portuguese
410
- baq - Basque fil - Filipino jpn - Japanese rum - Romanian
411
- cat - Catalan fin - Finnish kan - Kannada rus - Russian
412
- chi - Chinese fre - French kor - Korean spa - Spanish
413
- cze - Czech ger - German mal - Malayalam swe - Swedish
414
- dan - Danish glg - Galician may - Malay tam - Tamil
415
- dut - Dutch gre - Greek nob - Norw. Bokm tel - Telugu
416
- heb - Hebrew nor - Norwegian tha - Thai
417
- forced-ita hin - Hindi pol - Polish tur - Turkish
418
- hun - Hungarian ukr - Ukrainian
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
- > [!NOTE]
423
- > When using subtitles on Windows, please note that the default Windows Media Player may not display them correctly. We recommend using VLC Media Player for proper subtitle display and optimal playback experience.
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
- > [!IMPORTANT]
427
- > Language code availability may vary by site. Some platforms might:
428
- >
429
- > - Use different language codes
430
- > - Support only a subset of these languages
431
- > - Offer additional languages not listed here
432
- >
433
- > Check the specific site's available options if downloads fail.
434
-
435
- > [!TIP]
436
- > You can configure multiple languages by adding them to the lists:
437
- >
438
- > ```json
439
- > "specific_list_audio": ["ita", "eng", "spa"],
440
- > "specific_list_subtitles": ["ita", "eng", "spa"]
441
- > ```
442
-
443
- For the best viewing experience, we recommend using VLC Media Player:
444
- - Supports all video formats and codecs
445
- - Properly displays embedded subtitles
446
- - Available for all major operating systems
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
- "force_resolution": "1080p",
456
- "get_only_link": false
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
@@ -1,12 +0,0 @@
1
- # 24.02.24
2
-
3
- from rich.console import Console
4
- from rich.prompt import Prompt, Confirm
5
- from rich.panel import Panel
6
- from rich.table import Table
7
- from rich.text import Text
8
-
9
-
10
- # Variable
11
- msg = Prompt()
12
- console = Console()