StreamingCommunity 3.2.8__py3-none-any.whl → 3.3.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 (86) hide show
  1. StreamingCommunity/Api/Player/Helper/Vixcloud/util.py +2 -1
  2. StreamingCommunity/Api/Player/hdplayer.py +2 -2
  3. StreamingCommunity/Api/Player/sweetpixel.py +5 -8
  4. StreamingCommunity/Api/Site/altadefinizione/__init__.py +32 -15
  5. StreamingCommunity/Api/Site/altadefinizione/film.py +10 -8
  6. StreamingCommunity/Api/Site/altadefinizione/series.py +9 -7
  7. StreamingCommunity/Api/Site/altadefinizione/site.py +1 -1
  8. StreamingCommunity/Api/Site/animeunity/__init__.py +31 -15
  9. StreamingCommunity/Api/Site/animeunity/serie.py +2 -2
  10. StreamingCommunity/Api/Site/animeworld/__init__.py +33 -7
  11. StreamingCommunity/Api/Site/animeworld/site.py +3 -5
  12. StreamingCommunity/Api/Site/animeworld/util/ScrapeSerie.py +8 -10
  13. StreamingCommunity/Api/Site/crunchyroll/__init__.py +44 -12
  14. StreamingCommunity/Api/Site/crunchyroll/film.py +9 -7
  15. StreamingCommunity/Api/Site/crunchyroll/series.py +9 -7
  16. StreamingCommunity/Api/Site/crunchyroll/site.py +16 -1
  17. StreamingCommunity/Api/Site/guardaserie/__init__.py +36 -10
  18. StreamingCommunity/Api/Site/guardaserie/series.py +8 -6
  19. StreamingCommunity/Api/Site/guardaserie/site.py +0 -3
  20. StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +1 -2
  21. StreamingCommunity/Api/Site/mediasetinfinity/__init__.py +37 -12
  22. StreamingCommunity/Api/Site/mediasetinfinity/film.py +10 -16
  23. StreamingCommunity/Api/Site/mediasetinfinity/series.py +12 -18
  24. StreamingCommunity/Api/Site/mediasetinfinity/site.py +18 -3
  25. StreamingCommunity/Api/Site/mediasetinfinity/util/ScrapeSerie.py +214 -180
  26. StreamingCommunity/Api/Site/mediasetinfinity/util/get_license.py +2 -31
  27. StreamingCommunity/Api/Site/raiplay/__init__.py +47 -12
  28. StreamingCommunity/Api/Site/raiplay/film.py +42 -10
  29. StreamingCommunity/Api/Site/raiplay/series.py +53 -11
  30. StreamingCommunity/Api/Site/raiplay/site.py +4 -1
  31. StreamingCommunity/Api/Site/raiplay/util/ScrapeSerie.py +2 -1
  32. StreamingCommunity/Api/Site/raiplay/util/get_license.py +40 -0
  33. StreamingCommunity/Api/Site/streamingcommunity/__init__.py +5 -8
  34. StreamingCommunity/Api/Site/streamingcommunity/film.py +7 -5
  35. StreamingCommunity/Api/Site/streamingcommunity/series.py +9 -7
  36. StreamingCommunity/Api/Site/streamingcommunity/site.py +8 -3
  37. StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +5 -2
  38. StreamingCommunity/Api/Site/streamingwatch/__init__.py +43 -9
  39. StreamingCommunity/Api/Site/streamingwatch/film.py +7 -5
  40. StreamingCommunity/Api/Site/streamingwatch/series.py +8 -6
  41. StreamingCommunity/Api/Site/streamingwatch/site.py +3 -1
  42. StreamingCommunity/Api/Site/streamingwatch/util/ScrapeSerie.py +3 -3
  43. StreamingCommunity/Api/Template/Util/__init__.py +10 -1
  44. StreamingCommunity/Api/Template/Util/manage_ep.py +4 -4
  45. StreamingCommunity/Api/Template/__init__.py +5 -1
  46. StreamingCommunity/Api/Template/site.py +10 -6
  47. StreamingCommunity/Lib/Downloader/DASH/cdm_helpher.py +13 -12
  48. StreamingCommunity/Lib/Downloader/DASH/decrypt.py +1 -1
  49. StreamingCommunity/Lib/Downloader/DASH/downloader.py +24 -22
  50. StreamingCommunity/Lib/Downloader/DASH/parser.py +1 -1
  51. StreamingCommunity/Lib/Downloader/DASH/segments.py +4 -3
  52. StreamingCommunity/Lib/Downloader/HLS/downloader.py +11 -9
  53. StreamingCommunity/Lib/Downloader/HLS/segments.py +4 -9
  54. StreamingCommunity/Lib/Downloader/MP4/downloader.py +25 -6
  55. StreamingCommunity/Lib/Downloader/TOR/downloader.py +3 -5
  56. StreamingCommunity/Lib/Downloader/__init__.py +9 -1
  57. StreamingCommunity/Lib/FFmpeg/__init__.py +10 -1
  58. StreamingCommunity/Lib/FFmpeg/command.py +4 -6
  59. StreamingCommunity/Lib/FFmpeg/util.py +1 -1
  60. StreamingCommunity/Lib/M3U8/__init__.py +9 -1
  61. StreamingCommunity/Lib/M3U8/decryptor.py +8 -4
  62. StreamingCommunity/Lib/M3U8/estimator.py +0 -6
  63. StreamingCommunity/Lib/M3U8/parser.py +1 -1
  64. StreamingCommunity/Lib/M3U8/url_fixer.py +1 -1
  65. StreamingCommunity/Lib/TMBD/__init__.py +6 -1
  66. StreamingCommunity/TelegramHelp/config.json +1 -5
  67. StreamingCommunity/TelegramHelp/telegram_bot.py +9 -10
  68. StreamingCommunity/Upload/update.py +2 -2
  69. StreamingCommunity/Upload/version.py +1 -1
  70. StreamingCommunity/Util/config_json.py +139 -59
  71. StreamingCommunity/Util/http_client.py +201 -0
  72. StreamingCommunity/Util/message.py +1 -1
  73. StreamingCommunity/Util/os.py +8 -5
  74. StreamingCommunity/Util/table.py +3 -3
  75. StreamingCommunity/__init__.py +9 -1
  76. StreamingCommunity/run.py +394 -258
  77. {streamingcommunity-3.2.8.dist-info → streamingcommunity-3.3.0.dist-info}/METADATA +147 -45
  78. streamingcommunity-3.3.0.dist-info/RECORD +110 -0
  79. StreamingCommunity/Api/Site/cb01new/__init__.py +0 -72
  80. StreamingCommunity/Api/Site/cb01new/film.py +0 -62
  81. StreamingCommunity/Api/Site/cb01new/site.py +0 -78
  82. streamingcommunity-3.2.8.dist-info/RECORD +0 -111
  83. {streamingcommunity-3.2.8.dist-info → streamingcommunity-3.3.0.dist-info}/WHEEL +0 -0
  84. {streamingcommunity-3.2.8.dist-info → streamingcommunity-3.3.0.dist-info}/entry_points.txt +0 -0
  85. {streamingcommunity-3.2.8.dist-info → streamingcommunity-3.3.0.dist-info}/licenses/LICENSE +0 -0
  86. {streamingcommunity-3.2.8.dist-info → streamingcommunity-3.3.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: StreamingCommunity
3
- Version: 3.2.8
3
+ Version: 3.3.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
@@ -38,14 +38,10 @@ Dynamic: requires-python
38
38
  <div align="center">
39
39
 
40
40
  ## 📊 Project Status & Info
41
-
42
41
  [![PyPI Version](https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=3182ce&style=for-the-badge)](https://pypi.org/project/streamingcommunity)
43
- [![Downloads](https://img.shields.io/pypi/dm/streamingcommunity?logo=pypi&logoColor=white&labelColor=2d3748&color=38a169&style=for-the-badge)](https://pypi.org/project/streamingcommunity)
44
- [![License](https://img.shields.io/github/license/Arrowar/StreamingCommunity?logo=gnu&logoColor=white&labelColor=2d3748&color=e53e3e&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE)
45
-
46
- [![Code Lines](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Arrowar/StreamingCommunity/main/.github/.domain/loc-badge.json&style=for-the-badge&labelColor=2d3748)](https://github.com/Arrowar/StreamingCommunity)
47
42
  [![Last Commit](https://img.shields.io/github/last-commit/Arrowar/StreamingCommunity?logo=git&logoColor=white&labelColor=2d3748&color=805ad5&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/commits)
48
43
  [![Issues](https://img.shields.io/github/issues/Arrowar/StreamingCommunity?logo=github&logoColor=white&labelColor=2d3748&color=ed8936&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/issues)
44
+ [![License](https://img.shields.io/github/license/Arrowar/StreamingCommunity?logo=gnu&logoColor=white&labelColor=2d3748&color=e53e3e&style=for-the-badge)](https://github.com/Arrowar/StreamingCommunity/blob/main/LICENSE)
49
45
 
50
46
  ## 💝 Support the Project
51
47
 
@@ -97,6 +93,7 @@ Dynamic: requires-python
97
93
  - 🔧 [Manual domain configuration](#update-domains)
98
94
  - 🐳 [Docker](#docker)
99
95
  - 📝 [Telegram Usage](#telegram-usage)
96
+ - 🧩 [Hook/Plugin System](#hookplugin-system)
100
97
  </details>
101
98
 
102
99
  <details>
@@ -216,6 +213,29 @@ client.start_download()
216
213
  See [Torrent example](./Test/Download/TOR.py) for complete usage.
217
214
  </details>
218
215
 
216
+ <details>
217
+ <summary>🎞️ DASH Downloader</summary>
218
+
219
+ ```python
220
+ license_url = "https://example.com/stream.mpd"
221
+ mpd_url = "https://example.com/get_license"
222
+
223
+ dash_process = DASH_Downloader(
224
+ cdm_device=get_wvd_path(),
225
+ license_url=license_url,
226
+ mpd_url=mpd_url,
227
+ output_path="output.mp4",
228
+ )
229
+ dash_process.parse_manifest()
230
+
231
+ if dash_process.download_and_decrypt():
232
+ dash_process.finalize_output()
233
+
234
+ dash_process.get_status()
235
+ ```
236
+
237
+ </details>
238
+
219
239
  ## Binary Location
220
240
 
221
241
  <details>
@@ -346,40 +366,113 @@ python3 update.py
346
366
  <details>
347
367
  <summary>🌐 Domain Configuration Methods</summary>
348
368
 
349
- There are two ways to update the domains for the supported websites:
369
+ There are two ways to manage the domains for the supported websites:
350
370
 
351
- ### 1. Using Local Configuration
371
+ ### 1. Online Domain Fetching (Recommended)
352
372
 
353
- 1. Create a `domains.json` file in the root directory of the project
373
+ Set `fetch_domain_online` to `true` in your `config.json`:
354
374
 
355
- 2. Add your domain configuration in the following format:
356
- ```json
357
- {
358
- "altadefinizione": {
359
- "domain": "si",
360
- "full_url": "https://altadefinizione.si/"
361
- },
362
- ...
375
+ ```json
376
+ {
377
+ "DEFAULT": {
378
+ "fetch_domain_online": true
363
379
  }
364
- ```
365
-
366
- 3. Set `use_api` to `false` in the `DEFAULT` section of your `config.json`:
367
- ```json
368
- {
369
- "DEFAULT": {
370
- "use_api": false
371
- }
380
+ }
381
+ ```
382
+
383
+ This will:
384
+ - Download the latest domains from the GitHub repository
385
+ - Automatically save them to a local `domains.json` file
386
+ - Ensure you always have the most up-to-date streaming site domains
387
+
388
+ ### 2. Local Domain Configuration
389
+
390
+ Set `fetch_domain_online` to `false` to use a local configuration:
391
+
392
+ ```json
393
+ {
394
+ "DEFAULT": {
395
+ "fetch_domain_online": false
372
396
  }
373
- ```
397
+ }
398
+ ```
374
399
 
375
- ### 2. Using API (Legacy)
400
+ Then create a `domains.json` file in the root directory with your domain configuration:
376
401
 
377
- The API-based domain updates are currently deprecated. To use it anyway, set `use_api` to `true` in your `config.json` file.
402
+ ```json
403
+ {
404
+ "altadefinizione": {
405
+ "domain": "si",
406
+ "full_url": "https://altadefinizione.si/"
407
+ },
408
+ "streamingcommunity": {
409
+ "domain": "best",
410
+ "full_url": "https://streamingcommunity.best/"
411
+ }
412
+ }
413
+ ```
378
414
 
379
- Note: If `use_api` is set to `false` and no `domains.json` file is found, the script will raise an error.
415
+ ### 3. Automatic Fallback
380
416
 
381
- #### 💡 Adding a New Site to the Legacy API
382
- If you want to add a new site to the legacy API, just message me on the Discord server, and I'll add it!
417
+ If online fetching fails, the script will automatically attempt to use the local `domains.json` file as a fallback, ensuring maximum reliability.
418
+
419
+ #### 💡 Adding a New Site
420
+ If you want to request a new site to be added to the repository, message us on the Discord server!
421
+
422
+ </details>
423
+
424
+ ## Hook/Plugin System
425
+
426
+ <details>
427
+ <summary>🧩 Run custom scripts before/after the main execution</summary>
428
+
429
+ Define pre/post hooks in `config.json` under the `HOOKS` section. Supported types:
430
+
431
+ - **python**: runs `script.py` with the current Python interpreter
432
+ - **bash/sh**: runs via `bash`/`sh` on macOS/Linux
433
+ - **bat/cmd**: runs via `cmd /c` on Windows
434
+ - Inline **command**: use `command` instead of `path`
435
+
436
+ Sample configuration:
437
+
438
+ ```json
439
+ {
440
+ "HOOKS": {
441
+ "pre_run": [
442
+ {
443
+ "name": "prepare-env",
444
+ "type": "python",
445
+ "path": "scripts/prepare.py",
446
+ "args": ["--clean"],
447
+ "env": {"MY_FLAG": "1"},
448
+ "cwd": "~",
449
+ "os": ["linux", "darwin"],
450
+ "timeout": 60,
451
+ "enabled": true,
452
+ "continue_on_error": true
453
+ }
454
+ ],
455
+ "post_run": [
456
+ {
457
+ "name": "notify",
458
+ "type": "bash",
459
+ "command": "echo 'Download completed'"
460
+ }
461
+ ]
462
+ }
463
+ }
464
+ ```
465
+
466
+ Notes:
467
+
468
+ - **os**: optional OS filter (`windows`, `darwin` (`darwin` is used for MacOS), `linux`).
469
+ - **args**: list of arguments passed to the script.
470
+ - **env**: additional environment variables.
471
+ - **cwd**: working directory for the script; supports `~` and environment variables.
472
+ - **continue_on_error**: if `false`, the app stops when the hook fails.
473
+ - **timeout**: in seconds; when exceeded the hook fails.
474
+
475
+ Hooks are executed automatically by `run.py` before (`pre_run`) and after (`post_run`) the main execution.
383
476
 
384
477
  </details>
385
478
 
@@ -399,12 +492,9 @@ You can change some behaviors by tweaking the configuration file. The configurat
399
492
  "DEFAULT": {
400
493
  "debug": false,
401
494
  "show_message": true,
402
- "clean_console": true,
403
495
  "show_trending": true,
404
- "use_api": true,
405
- "not_close": false,
496
+ "fetch_domain_online": true,
406
497
  "telegram_bot": false,
407
- "download_site_data": false,
408
498
  "validate_github_config": false
409
499
  }
410
500
  }
@@ -412,13 +502,9 @@ You can change some behaviors by tweaking the configuration file. The configurat
412
502
 
413
503
  - `debug`: Enables debug logging
414
504
  - `show_message`: Displays informational messages
415
- - `clean_console`: Clears the console between operations
416
505
  - `show_trending`: Shows trending content
417
- - `use_api`: Uses API for domain updates instead of local configuration
418
- - `not_close`: If set to true, keeps the program running after download is complete
419
- * Can be changed from terminal with `--not_close true/false`
506
+ - `fetch_domain_online`: If true, downloads domains from GitHub repository and saves to local file; if false, uses existing local domains.json file
420
507
  - `telegram_bot`: Enables Telegram bot integration
421
- - `download_site_data`: If set to false, disables automatic site data download
422
508
  - `validate_github_config`: If set to false, disables validation and updating of configuration from GitHub
423
509
  </details>
424
510
 
@@ -630,8 +716,7 @@ Note: Requires updated drivers and FFmpeg with hardware acceleration support.
630
716
  ```json
631
717
  {
632
718
  "M3U8_PARSER": {
633
- "force_resolution": "Best",
634
- "get_only_link": false
719
+ "force_resolution": "Best"
635
720
  }
636
721
  }
637
722
  ```
@@ -651,8 +736,6 @@ Note: Requires updated drivers and FFmpeg with hardware acceleration support.
651
736
  - 240p (320x240)
652
737
  - 144p (256x144)
653
738
 
654
- #### Link Options
655
- - `get_only_link`: Return M3U8 playlist/index URL instead of downloading
656
739
  </details>
657
740
 
658
741
  # Global Search
@@ -700,6 +783,18 @@ The Global Search can be configured from the command line:
700
783
  # Examples of terminal usage
701
784
 
702
785
  ```bash
786
+ # Run a specific site by name with a search term
787
+ python test_run.py --site streamingcommunity --search "interstellar"
788
+
789
+ # Run a specific site by numeric index (as shown in -h help)
790
+ python test_run.py --site 0 --search "interstellar"
791
+
792
+ # Auto-download the first result from search (requires --site and --search)
793
+ python test_run.py --site streamingcommunity --search "interstellar" --auto-first
794
+
795
+ # Show help (includes available sites by name and by index)
796
+ python test_run.py -h
797
+
703
798
  # Change video and audio workers
704
799
  python test_run.py --default_video_worker 8 --default_audio_worker 8
705
800
 
@@ -709,7 +804,7 @@ python test_run.py --specific_list_audio ita,eng --specific_list_subtitles eng,s
709
804
  # Keep console open after download
710
805
  python test_run.py --not_close true
711
806
 
712
- # Use global searchAdd commentMore actions
807
+ # Use global search
713
808
  python test_run.py --global -s "cars"
714
809
 
715
810
  # Select specific category
@@ -717,6 +812,9 @@ python test_run.py --category 1 # Search in anime category
717
812
  python test_run.py --category 2 # Search in movies & series
718
813
  python test_run.py --category 3 # Search in series
719
814
  python test_run.py --category 4 # Search in torrent category
815
+
816
+ # If installed via pip, you can also use the entrypoint directly
817
+ streamingcommunity --site streamingcommunity --search "interstellar" --auto-first
720
818
  ```
721
819
 
722
820
  # Docker
@@ -808,6 +906,10 @@ python3 telegram_bot.py
808
906
  ```
809
907
  </details>
810
908
 
909
+ # SITE_LOGIN key
910
+ To use some site, you may need a SITE_LOGIN key.
911
+ See [guide.md](.github/.site/guide.md) for instructions on how to obtain it.
912
+
811
913
  # Tutorials
812
914
 
813
915
  - [Windows](https://www.youtube.com/watch?v=mZGqK4wdN-k)
@@ -0,0 +1,110 @@
1
+ StreamingCommunity/__init__.py,sha256=kOpFRfO3jz3gP2QjgPC_G85Z3rsMwMnsNa0POXMnDng,382
2
+ StreamingCommunity/global_search.py,sha256=ip3D0OKNRTXHpe_Wy7v2KM-yNZdnnbG5FOBYSSk6wB8,12401
3
+ StreamingCommunity/run.py,sha256=QKXm49zG8Q2STHk8Rx3uUJl5B8KEvJZnoBDkhigJR00,21122
4
+ StreamingCommunity/Api/Player/ddl.py,sha256=cPinK99iX4ThvAHLlzcACcnFvM-M_NK0f4imh9PQY1I,2174
5
+ StreamingCommunity/Api/Player/hdplayer.py,sha256=uQGU8ZVEk7qwwu1v4fjxScsP2x9NIHc7rRguXB1Fk2c,1942
6
+ StreamingCommunity/Api/Player/maxstream.py,sha256=JlVTCAo9ze0wF2h0eNPYqdorhwK7DPXpmLAyHMnT7-Y,5017
7
+ StreamingCommunity/Api/Player/mediapolisvod.py,sha256=Npm3HHUO5Wav8c2QX9E2c3SSW6d1STJw-kK8kHRF-zo,2403
8
+ StreamingCommunity/Api/Player/mixdrop.py,sha256=rZOE14yFdQM0l7ZNRMzFtOpaedgXUo6gdvoBu24y7IE,5127
9
+ StreamingCommunity/Api/Player/supervideo.py,sha256=AuAA6eXYODJN-ytdvKjqlzZLOHpwx3kwgy1CSiogs-o,5388
10
+ StreamingCommunity/Api/Player/sweetpixel.py,sha256=AAdLSD7ASLuZNiBx6btr8S44WkxtjTiToPhjtgA6HAE,1703
11
+ StreamingCommunity/Api/Player/vixcloud.py,sha256=0DnukAIBqGqTmL9I6JkpAkHLMf1UG1D_J8c7zt6KDmU,6609
12
+ StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py,sha256=U-8QlD5kGzIk3-4t4D6QyYmiDe8UBrSuVi1YHRQb7AU,4295
13
+ StreamingCommunity/Api/Player/Helper/Vixcloud/util.py,sha256=WjpNA-ohE6AIwYOVzacYqy7CR3fXfdf7PfIp69vk8js,5343
14
+ StreamingCommunity/Api/Site/altadefinizione/__init__.py,sha256=fpFUhnjjRE2TXf1lNFBUoHH-WWyFQpXeG1xqkU_cQjw,4877
15
+ StreamingCommunity/Api/Site/altadefinizione/film.py,sha256=CQG1C9RGbPm_x89xgyTS8IqcP-lihNqCDY9ANghOlhE,3798
16
+ StreamingCommunity/Api/Site/altadefinizione/series.py,sha256=--XPvUzL4K3KKaS41jZ9WToT3wxt2rUwblNoJOp8hs0,8280
17
+ StreamingCommunity/Api/Site/altadefinizione/site.py,sha256=nrDmENnvWbW7iNO7OIGpQWJttzFGipZg0dsC8GiSEBU,2864
18
+ StreamingCommunity/Api/Site/altadefinizione/util/ScrapeSerie.py,sha256=9iulNlnNAhTfI5iKNW3I6pZqYeYwovAswa13L3LPGDM,4251
19
+ StreamingCommunity/Api/Site/animeunity/__init__.py,sha256=3eQ-AtLQCQK_ArTnnDit_NK5r04PuyPSSvEm4TUC9WE,4746
20
+ StreamingCommunity/Api/Site/animeunity/film.py,sha256=Vqg6yag2siR-Y3ougBsV8mzdQXChxg6ghz_KVXFQ3pE,998
21
+ StreamingCommunity/Api/Site/animeunity/serie.py,sha256=2PfpXblRpIrHC6gURfKYo16Vx_ZDcQX4CX03wAo8SCQ,5694
22
+ StreamingCommunity/Api/Site/animeunity/site.py,sha256=GLULPQATMHcXiH99d772v1ICH-PnnZgSM3q5__eN-gs,4977
23
+ StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py,sha256=UladSvOlTEVLiV0-rAz45zrET5qRHMuTGuKEpeQoumU,3872
24
+ StreamingCommunity/Api/Site/animeworld/__init__.py,sha256=kbsIxaAJtnEyFIbAS-IdCdPWrrynE_1TLzHtZzYYDWE,3783
25
+ StreamingCommunity/Api/Site/animeworld/film.py,sha256=Ysp0k5AlrOsl19S9LV4nwVg8cjFf5w0FZRO9CiO6NxA,1748
26
+ StreamingCommunity/Api/Site/animeworld/serie.py,sha256=b1yuBnLNqJ-IWEVqLnQuYv6VbUQ60a5YFpZbJrS3lnI,3486
27
+ StreamingCommunity/Api/Site/animeworld/site.py,sha256=Zdp6ayA1L6hS1t0q4fclHs7J1eiD16Ta9isTc13Zye8,3746
28
+ StreamingCommunity/Api/Site/animeworld/util/ScrapeSerie.py,sha256=S6sLtQt4Wvp4IVDho1uAXL8_-bbdj-RTRA1D7x9V8n8,3591
29
+ StreamingCommunity/Api/Site/crunchyroll/__init__.py,sha256=tkjI_Spx6lOD95gVlSCwh2FeS1OMxKt1yXx6jYWayww,4893
30
+ StreamingCommunity/Api/Site/crunchyroll/film.py,sha256=MgA8bwJEf6unT_uBBsLpMqRdbctkLYLGeBB-_fX1wvk,2615
31
+ StreamingCommunity/Api/Site/crunchyroll/series.py,sha256=0JnPc9Bw02Ys-wmdAvcIbAlkyGHbw7ELemWVizWPl1k,7265
32
+ StreamingCommunity/Api/Site/crunchyroll/site.py,sha256=0IRbC7xPyfdHGNffZzGkpCzqZ0zB3o0MWe5sQLVmRVk,4073
33
+ StreamingCommunity/Api/Site/crunchyroll/util/ScrapeSerie.py,sha256=ZY6z4pT5q7igiNZnJAvE9x0WiORTvFSH-U_CpqOzusA,7855
34
+ StreamingCommunity/Api/Site/crunchyroll/util/get_license.py,sha256=KpVvJbGUTLeVD-tt8r7ajBPWVT7Tm6GrKwzpW8CS-tg,6881
35
+ StreamingCommunity/Api/Site/guardaserie/__init__.py,sha256=xKdy4puK4NI4ytFMZLqZXNeKaX8ub14mqpuelRFprSs,3800
36
+ StreamingCommunity/Api/Site/guardaserie/series.py,sha256=Q5i_nCAy8zAnublmWuujxrDwvP9XP2D207vrtYOdl_I,6566
37
+ StreamingCommunity/Api/Site/guardaserie/site.py,sha256=_AtrkOb5xUnIfqp212y3p7kWb7BKJYwQHleSRgDOSYA,2239
38
+ StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py,sha256=4wk2TVb4YDoPrhR2uuNijYuOpSt9mhcxwcXhmwTHPUY,4396
39
+ StreamingCommunity/Api/Site/mediasetinfinity/__init__.py,sha256=xfGtJEJx3LE7e-0UN85PipJ0VUJ4vk2JZHXUkrN65-Q,4286
40
+ StreamingCommunity/Api/Site/mediasetinfinity/film.py,sha256=L3jWSuxxO9SwRua9-zSF-nYfbwbmI4YG7YAM5yQlsDs,2308
41
+ StreamingCommunity/Api/Site/mediasetinfinity/series.py,sha256=BtZaZmpJ7-tbMPmosRLbZG4-oaIMK3Q1CHV29A5xmng,6898
42
+ StreamingCommunity/Api/Site/mediasetinfinity/site.py,sha256=n2c_Yg03fbOIx4ZYOg2FVoHM0rge16LIdACNvOyrURM,3872
43
+ StreamingCommunity/Api/Site/mediasetinfinity/util/ScrapeSerie.py,sha256=jZiSfwrvfdqu_dM0LG55VIsntM66OhRHGTP0o_78eUM,11174
44
+ StreamingCommunity/Api/Site/mediasetinfinity/util/fix_mpd.py,sha256=B7uZfQ8X4p8KsiPVangFSs5rKKKpA3tavjPCdNrqyCc,1712
45
+ StreamingCommunity/Api/Site/mediasetinfinity/util/get_license.py,sha256=CK1gmXlARi83DLrJzUeaQoFUOYiJtagtmG4AGUi11rY,5584
46
+ StreamingCommunity/Api/Site/raiplay/__init__.py,sha256=m8kN-_apnOoPQ7DBQ4ZK2hEXmw6ITt2ja7pO0OhDX9Y,4641
47
+ StreamingCommunity/Api/Site/raiplay/film.py,sha256=Ep1Kcbvm2nZoHvaxW5Qbg4FBl9QZORM-NEi2obhQyos,3029
48
+ StreamingCommunity/Api/Site/raiplay/series.py,sha256=EJx3ZUmXOGlha6J1vP93XVfh1VDAN_9fz_06dtdhIqI,7599
49
+ StreamingCommunity/Api/Site/raiplay/site.py,sha256=e0DoTIcSNLbk8uEBGgYCG6gbZ6yv-yo0Z-rT7PLNTlo,3182
50
+ StreamingCommunity/Api/Site/raiplay/util/ScrapeSerie.py,sha256=KsEL8XSr_c1vvaPo-_AY9RGE7_eHZ8oN2iyZtB0ocrw,5880
51
+ StreamingCommunity/Api/Site/raiplay/util/get_license.py,sha256=96Q5aSWhtxtmQl2yzylL-1x3jY24UpLLZlEE6YrO_gs,978
52
+ StreamingCommunity/Api/Site/streamingcommunity/__init__.py,sha256=6ETXEt0c-TnPkuO8wHo6VCphqM2LKuVr811eLxNJbsc,5469
53
+ StreamingCommunity/Api/Site/streamingcommunity/film.py,sha256=aA0tsDc5GCFFkrn_s2QKNcnyBYhK2S5OnDx29P1_rhA,2779
54
+ StreamingCommunity/Api/Site/streamingcommunity/series.py,sha256=eLCeVjur2w2J1PgYzhe8dIJYGZus6YEyQr5H0YXazH4,9055
55
+ StreamingCommunity/Api/Site/streamingcommunity/site.py,sha256=o1jdgF1nnUCnPnvybfc6a-0esHSYcRGjtUEOAXk6YAE,4131
56
+ StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py,sha256=b-PWO1fP68yfptLb5X3i4M1PFZHKkqJh32yHgKsoIGs,5684
57
+ StreamingCommunity/Api/Site/streamingwatch/__init__.py,sha256=K9gAeeJ6h7CQOhxXC2bUTXG4z9Dtv2R4Vv6XDSj9sik,4851
58
+ StreamingCommunity/Api/Site/streamingwatch/film.py,sha256=B_9z9xzfuqEbzv-eVHuadvOKTcEiHhRU92Gk_f2u7Zs,1693
59
+ StreamingCommunity/Api/Site/streamingwatch/series.py,sha256=nxGef_djMUZLAEDbHG-hbbly0eWagxPm8xu5aFIlSrI,6245
60
+ StreamingCommunity/Api/Site/streamingwatch/site.py,sha256=KEtm-TeTuryAODXdvJAGPHauaq8cVl8QxHV6CDT1mzo,3474
61
+ StreamingCommunity/Api/Site/streamingwatch/util/ScrapeSerie.py,sha256=h28W2Q_cZhBe4v91dvUDYbLBUV98i2Ghb1OOhVq3Iuk,4289
62
+ StreamingCommunity/Api/Template/__init__.py,sha256=fiDHu2yUk3Jk5CWmmnCJNy9fRLbq8RhHB_20NDD12tA,84
63
+ StreamingCommunity/Api/Template/config_loader.py,sha256=2RT_0mqQmWzXM4rYaqss-yhXztYAcfNkTalFPjzv270,2056
64
+ StreamingCommunity/Api/Template/site.py,sha256=4q8uLD5lnUof2ztod2_3xL6lKoELFpa_ixdZWZCQsL0,4993
65
+ StreamingCommunity/Api/Template/Class/SearchType.py,sha256=LOlE8UgraEM0UAVeNCThDGi8bleei31p7KpryuZm3VE,2530
66
+ StreamingCommunity/Api/Template/Util/__init__.py,sha256=v23VkosPNOQG5XbDkyCx5shEVJvRJffgkAF_Am5zMQc,377
67
+ StreamingCommunity/Api/Template/Util/manage_ep.py,sha256=JMGLj_SJY-K5YuvKISurEYyS-pa9jZ2EA-lshVS73z0,9268
68
+ StreamingCommunity/Lib/Downloader/__init__.py,sha256=Zh92xTvBIEIjNQN22iXItG7_VqiDGbOpO5gOZDBdGxc,288
69
+ StreamingCommunity/Lib/Downloader/DASH/cdm_helpher.py,sha256=-odu7Hc5dvzRXldQRlFalt6IVfvqi6XG_DCSyyqBGJ4,4767
70
+ StreamingCommunity/Lib/Downloader/DASH/decrypt.py,sha256=y3F5zrED-FSQzwE9e5rTl07aWkg76qwFgxtziPpPVuQ,2352
71
+ StreamingCommunity/Lib/Downloader/DASH/downloader.py,sha256=rswcxVXem_ddCbByZY1VbgdaQnhztsG02gMU7ZeD37s,8294
72
+ StreamingCommunity/Lib/Downloader/DASH/parser.py,sha256=QUyYhmu-zI2GieiNZaoOoDVPTclSKXsrdeToAtbC9yI,9858
73
+ StreamingCommunity/Lib/Downloader/DASH/segments.py,sha256=oiip_q3QOY_c17_t66D0m974hyzsQXivhHY5-uE9dlQ,12747
74
+ StreamingCommunity/Lib/Downloader/HLS/downloader.py,sha256=5ZOflDthkkmgZIGyLzL1Ao6ltyoJkQ7wAFe744Dyppk,21294
75
+ StreamingCommunity/Lib/Downloader/HLS/segments.py,sha256=YqlG628N7I0STPQhchw5LM7kerv8XjTzdzh8N-dw2QM,17914
76
+ StreamingCommunity/Lib/Downloader/MP4/downloader.py,sha256=_z61uQVnlfh-ktWYTisfbg_a4C3tpK7MO8HUdgLhTpI,8060
77
+ StreamingCommunity/Lib/Downloader/TOR/downloader.py,sha256=tYOCuKkKDcTIJ-2bGIeplovRkLTdp89i8lUvJs_N9jc,19133
78
+ StreamingCommunity/Lib/FFmpeg/__init__.py,sha256=NZmOXpnc5jvdvjNnHPxvj5bzp0GUuNMXd00Fcy4rQPI,258
79
+ StreamingCommunity/Lib/FFmpeg/capture.py,sha256=UUBaFK8WLkvqxsElqyEj-JvDvd9zUFZ2bRwRoUcGjVk,5039
80
+ StreamingCommunity/Lib/FFmpeg/command.py,sha256=E8EuihojWwMdxWYgZOEcjd-EUkh9il24bQBtphEV2n0,10679
81
+ StreamingCommunity/Lib/FFmpeg/util.py,sha256=_ep_Jxm1_TfNphemtgS2whd6BFqMtK_IQmW_jRmFys8,9297
82
+ StreamingCommunity/Lib/M3U8/__init__.py,sha256=Zxij4WFCxjwyfswUfBv0oys_o0vQpAL5PoK5TGG_StY,288
83
+ StreamingCommunity/Lib/M3U8/decryptor.py,sha256=1IutV-rZm3XLWGw1sEkApa3VkdwBc7BcC8AfyJ_zrrg,2965
84
+ StreamingCommunity/Lib/M3U8/estimator.py,sha256=S4pa4hBgtJsh11mmQcpQK_1_xhkb9fHrIZdfWBxEbAg,5592
85
+ StreamingCommunity/Lib/M3U8/parser.py,sha256=waHkNErWu-tnIJJvixVNjZ1R7OEtAWZDoTch-yey98M,22485
86
+ StreamingCommunity/Lib/M3U8/url_fixer.py,sha256=0Wd6MsBf8BBQ6mmHFElgCX3UbHAzRzSREmi03yb4gU4,1735
87
+ StreamingCommunity/Lib/TMBD/__init__.py,sha256=TBKZ0zwAUvil2V2AirEPy_Q-M3Ksar2CJsUNt4tpXhk,109
88
+ StreamingCommunity/Lib/TMBD/obj_tmbd.py,sha256=dRSvJFS5yqmsBZcw2wqbStcBtXNjU_3n5czMyremAtU,1187
89
+ StreamingCommunity/Lib/TMBD/tmdb.py,sha256=byg0EFnlmd9JeLvn1N9K3QkB1KEfeMuFa7OVfGqks1Y,10685
90
+ StreamingCommunity/TelegramHelp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
+ StreamingCommunity/TelegramHelp/config.json,sha256=v7FjA4smyLWZxChATewmvxDjJcclOCRZ_BIFPJd8Jvc,1374
92
+ StreamingCommunity/TelegramHelp/telegram_bot.py,sha256=KiurpTrgiUNyMcLfceseaxV4xGegCUSJ8YttSeGXhJM,26429
93
+ StreamingCommunity/Upload/update.py,sha256=9DStkCA_GGHjf47eDjUe-YeQ2mXhjmY-6E5C-HAwPlo,3829
94
+ StreamingCommunity/Upload/version.py,sha256=4e7vj7d6prEkm_3AF-tkZtIZ_DTn6sEocD_tl9G52mg,171
95
+ StreamingCommunity/Util/bento4_installer.py,sha256=P5ipziMCvezxan8GUh9vm8B1LXGyHusFVDf842LSwis,6966
96
+ StreamingCommunity/Util/color.py,sha256=NvD0Eni-25oOOkY-szCEoc0lGvzQxyL7xhM0RE4EvUM,458
97
+ StreamingCommunity/Util/config_json.py,sha256=vB6o6J5V874_bp9Y87VCCxp2wig0P3vwz4--zVokH4o,28576
98
+ StreamingCommunity/Util/ffmpeg_installer.py,sha256=yRVIPwbh05tZ-duZmXkH0qasLNxaQCAT_E4cTP79Z3c,14890
99
+ StreamingCommunity/Util/headers.py,sha256=RP3A6Gr8UB8VU6uzw_yDOjEKkIFKpi7Gi6_w2ACxE30,292
100
+ StreamingCommunity/Util/http_client.py,sha256=Z9537JZLoaPq3S9dfipe4nrWNL7QOyvxkqUlZHdSo40,6253
101
+ StreamingCommunity/Util/logger.py,sha256=9kGD6GmWj2pM8ADpJc85o7jm8DD0c5Aguqnq-9kmxos,3314
102
+ StreamingCommunity/Util/message.py,sha256=tstYQ9NxlfWupYkqPrOqOLqrKEb1iG5NsvIMNTUXXvA,1332
103
+ StreamingCommunity/Util/os.py,sha256=VgKPcQxFTU_aCDpIw-T-z61xl9sCCAWZZdc0UZBieu8,17135
104
+ StreamingCommunity/Util/table.py,sha256=xXfgd09oIYSxpJwnnkPZdWJ0DcCihSqxfvYYAEo-YMA,9806
105
+ streamingcommunity-3.3.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
106
+ streamingcommunity-3.3.0.dist-info/METADATA,sha256=uD8xka-sTPeGZIh7ZQEtlVYFx3qf1w9whuHQIrY2TuQ,27468
107
+ streamingcommunity-3.3.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
108
+ streamingcommunity-3.3.0.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
109
+ streamingcommunity-3.3.0.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
110
+ streamingcommunity-3.3.0.dist-info/RECORD,,
@@ -1,72 +0,0 @@
1
- # 09.06.24
2
-
3
- from urllib.parse import quote_plus
4
-
5
-
6
- # External library
7
- from rich.console import Console
8
- from rich.prompt import Prompt
9
-
10
-
11
- # Internal utilities
12
- from StreamingCommunity.Api.Template import get_select_title
13
- from StreamingCommunity.Api.Template.config_loader import site_constant
14
- from StreamingCommunity.Api.Template.Class.SearchType import MediaItem
15
-
16
-
17
- # Logic class
18
- from .site import title_search, media_search_manager, table_show_manager
19
- from .film import download_film
20
-
21
-
22
- # Variable
23
- indice = -1
24
- _useFor = "Film"
25
- _priority = 0
26
- _engineDownload = "mp4"
27
- _deprecate = True
28
-
29
- msg = Prompt()
30
- console = Console()
31
-
32
-
33
- def process_search_result(select_title):
34
- """
35
- Handles the search result and initiates the download for either a film or series.
36
- """
37
- # !!! ADD TYPE DONT WORK FOR SERIE
38
- download_film(select_title)
39
-
40
- def search(string_to_search: str = None, get_onlyDatabase: bool = False, direct_item: dict = None):
41
- """
42
- Main function of the application for search.
43
-
44
- Parameters:
45
- string_to_search (str, optional): String to search for
46
- get_onylDatabase (bool, optional): If True, return only the database object
47
- direct_item (dict, optional): Direct item to process (bypass search)
48
- """
49
- if direct_item:
50
- select_title = MediaItem(**direct_item)
51
- process_search_result(select_title)
52
- return
53
-
54
- if string_to_search is None:
55
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{site_constant.SITE_NAME}").strip()
56
-
57
- # Search on database
58
- len_database = title_search(quote_plus(string_to_search))
59
-
60
- ## If only the database is needed, return the manager
61
- if get_onlyDatabase:
62
- return media_search_manager
63
-
64
- if len_database > 0:
65
- select_title = get_select_title(table_show_manager, media_search_manager,len_database)
66
- process_search_result(select_title)
67
-
68
- else:
69
-
70
- # If no results are found, ask again
71
- console.print(f"\n[red]Nothing matching was found for[white]: [purple]{string_to_search}")
72
- search()
@@ -1,62 +0,0 @@
1
- # 03.07.24
2
-
3
- import os
4
-
5
-
6
- # External library
7
- from rich.console import Console
8
-
9
-
10
- # Internal utilities
11
- from StreamingCommunity.Util.os import os_manager
12
- from StreamingCommunity.Util.message import start_message
13
-
14
-
15
- # Logic class
16
- from StreamingCommunity.Api.Template.config_loader import site_constant
17
- from StreamingCommunity.Api.Template.Class.SearchType import MediaItem
18
-
19
-
20
- # Player
21
- from StreamingCommunity import HLS_Downloader
22
- from StreamingCommunity.Api.Player.maxstream import VideoSource
23
-
24
-
25
- # Variable
26
- console = Console()
27
-
28
-
29
- def download_film(select_title: MediaItem) -> str:
30
- """
31
- Downloads a film using the provided obj.
32
-
33
- Parameters:
34
- - select_title (MediaItem): The media item to be downloaded. This should be an instance of the MediaItem class, containing attributes like `name` and `url`.
35
-
36
- Return:
37
- - str: output path
38
- """
39
- start_message()
40
- console.print(f"[bold yellow]Download:[/bold yellow] [red]{site_constant.SITE_NAME}[/red] → [cyan]{select_title.name}[/cyan] \n")
41
-
42
- # Setup api manger
43
- video_source = VideoSource(select_title.url)
44
-
45
- # Define output path
46
- title_name = os_manager.get_sanitize_file(select_title.name) +".mp4"
47
- mp4_path = os.path.join(site_constant.MOVIE_FOLDER, title_name.replace(".mp4", ""))
48
-
49
- # Get m3u8 master playlist
50
- master_playlist = video_source.get_playlist()
51
-
52
- # Download the film using the m3u8 playlist, and output filename
53
- r_proc = HLS_Downloader(
54
- m3u8_url=master_playlist,
55
- output_path=os.path.join(mp4_path, title_name)
56
- ).start()
57
-
58
- if r_proc['error'] is not None:
59
- try: os.remove(r_proc['path'])
60
- except: pass
61
-
62
- return r_proc['path']
@@ -1,78 +0,0 @@
1
- # 03.07.24
2
-
3
- # External libraries
4
- import httpx
5
- from bs4 import BeautifulSoup
6
- from rich.console import Console
7
-
8
-
9
- # Internal utilities
10
- from StreamingCommunity.Util.config_json import config_manager
11
- from StreamingCommunity.Util.headers import get_userAgent
12
- from StreamingCommunity.Util.table import TVShowManager
13
-
14
-
15
- # Logic class
16
- from StreamingCommunity.Api.Template.config_loader import site_constant
17
- from StreamingCommunity.Api.Template.Class.SearchType import MediaManager
18
-
19
-
20
- # Variable
21
- console = Console()
22
- media_search_manager = MediaManager()
23
- table_show_manager = TVShowManager()
24
- max_timeout = config_manager.get_int("REQUESTS", "timeout")
25
-
26
-
27
- def title_search(query: str) -> int:
28
- """
29
- Search for titles based on a search query.
30
-
31
- Parameters:
32
- - query (str): The query to search for.
33
-
34
- Returns:
35
- - int: The number of titles found.
36
- """
37
- media_search_manager.clear()
38
- table_show_manager.clear()
39
-
40
- search_url = f"{site_constant.FULL_URL}/?s={query}"
41
- console.print(f"[cyan]Search url: [yellow]{search_url}")
42
-
43
- try:
44
- response = httpx.get(
45
- search_url,
46
- headers={'user-agent': get_userAgent()},
47
- timeout=max_timeout,
48
- follow_redirects=True,
49
- verify=False
50
- )
51
- response.raise_for_status()
52
-
53
- except Exception as e:
54
- console.print(f"Site: {site_constant.SITE_NAME}, request search error: {e}")
55
- return 0
56
-
57
- # Create soup and find table
58
- soup = BeautifulSoup(response.text, "html.parser")
59
-
60
- for card in soup.find_all("div", class_=["card", "mp-post", "horizontal"]):
61
- try:
62
- title_tag = card.find("h3", class_="card-title").find("a")
63
- url = title_tag.get("href")
64
- title = title_tag.get_text(strip=True)
65
-
66
- title_info = {
67
- 'name': title,
68
- 'url': url,
69
- 'type': 'film'
70
- }
71
-
72
- media_search_manager.add_media(title_info)
73
-
74
- except Exception as e:
75
- print(f"Error parsing a film entry: {e}")
76
-
77
- # Return the number of titles found
78
- return media_search_manager.get_length()