StreamingCommunity 3.3.1__tar.gz → 3.3.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of StreamingCommunity might be problematic. Click here for more details.

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