StreamingCommunity 2.0.0__tar.gz → 2.2.0__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 (111) hide show
  1. StreamingCommunity-2.2.0/MANIFEST.in +4 -0
  2. StreamingCommunity-2.2.0/PKG-INFO +443 -0
  3. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/README.md +4 -3
  4. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/1337xx/__init__.py +1 -1
  5. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/altadefinizione/__init__.py +1 -1
  6. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/animeunity/__init__.py +1 -1
  7. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/cb01new/__init__.py +1 -1
  8. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py +1 -3
  9. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ddlstreamitaly/series.py +1 -1
  10. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/guardaserie/__init__.py +1 -3
  11. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/guardaserie/series.py +2 -2
  12. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ilcorsaronero/__init__.py +1 -1
  13. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ilcorsaronero/util/ilCorsarScraper.py +14 -6
  14. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/mostraguarda/__init__.py +1 -1
  15. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/mostraguarda/film.py +1 -3
  16. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/streamingcommunity/__init__.py +1 -1
  17. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/streamingcommunity/film.py +1 -1
  18. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/streamingcommunity/series.py +1 -1
  19. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Template/Util/get_domain.py +12 -11
  20. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/Downloader/HLS/downloader.py +42 -34
  21. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/Downloader/HLS/segments.py +9 -11
  22. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/FFmpeg/capture.py +1 -1
  23. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/FFmpeg/util.py +1 -1
  24. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/M3U8/decryptor.py +2 -2
  25. StreamingCommunity-2.2.0/StreamingCommunity/Lib/M3U8/estimator.py +229 -0
  26. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Upload/update.py +2 -3
  27. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Upload/version.py +1 -1
  28. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/ffmpeg_installer.py +68 -28
  29. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/os.py +16 -25
  30. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/run.py +0 -1
  31. StreamingCommunity-2.2.0/StreamingCommunity.egg-info/PKG-INFO +443 -0
  32. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity.egg-info/SOURCES.txt +10 -2
  33. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity.egg-info/entry_points.txt +1 -0
  34. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity.egg-info/requires.txt +0 -1
  35. StreamingCommunity-2.2.0/Test/Download/HLS.py +25 -0
  36. StreamingCommunity-2.2.0/Test/Download/MP4.py +23 -0
  37. StreamingCommunity-2.2.0/Test/Download/TOR.py +27 -0
  38. StreamingCommunity-2.2.0/Test/Player/helper/vixcloud.py +40 -0
  39. StreamingCommunity-2.2.0/Test/Player/maxtream.py +22 -0
  40. StreamingCommunity-2.2.0/Test/Player/supervideo.py +22 -0
  41. StreamingCommunity-2.2.0/Test/Player/vixcloud.py +26 -0
  42. StreamingCommunity-2.2.0/Test/big_search.py +116 -0
  43. StreamingCommunity-2.2.0/Test/call_updateDomain.py +90 -0
  44. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/setup.py +6 -6
  45. streamingcommunity-2.0.0/LICENSE +0 -674
  46. streamingcommunity-2.0.0/MANIFEST.in +0 -1
  47. streamingcommunity-2.0.0/PKG-INFO +0 -456
  48. streamingcommunity-2.0.0/StreamingCommunity/Lib/M3U8/estimator.py +0 -176
  49. streamingcommunity-2.0.0/StreamingCommunity.egg-info/PKG-INFO +0 -456
  50. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py +0 -0
  51. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Player/Helper/Vixcloud/util.py +0 -0
  52. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Player/ddl.py +0 -0
  53. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Player/maxstream.py +0 -0
  54. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Player/supervideo.py +0 -0
  55. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Player/vixcloud.py +0 -0
  56. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/1337xx/costant.py +0 -0
  57. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/1337xx/site.py +0 -0
  58. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/1337xx/title.py +0 -0
  59. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/altadefinizione/costant.py +0 -0
  60. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/altadefinizione/film.py +0 -0
  61. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/altadefinizione/site.py +0 -0
  62. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/animeunity/costant.py +0 -0
  63. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/animeunity/film_serie.py +0 -0
  64. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/animeunity/site.py +0 -0
  65. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +0 -0
  66. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/cb01new/costant.py +0 -0
  67. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/cb01new/film.py +0 -0
  68. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/cb01new/site.py +0 -0
  69. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ddlstreamitaly/costant.py +0 -0
  70. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ddlstreamitaly/site.py +0 -0
  71. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +0 -0
  72. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/guardaserie/costant.py +0 -0
  73. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/guardaserie/site.py +0 -0
  74. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +0 -0
  75. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ilcorsaronero/costant.py +0 -0
  76. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ilcorsaronero/site.py +0 -0
  77. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/ilcorsaronero/title.py +0 -0
  78. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/mostraguarda/costant.py +0 -0
  79. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/streamingcommunity/costant.py +0 -0
  80. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/streamingcommunity/site.py +0 -0
  81. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py +0 -0
  82. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Template/Class/SearchType.py +0 -0
  83. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Template/Util/__init__.py +0 -0
  84. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Template/Util/manage_ep.py +0 -0
  85. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Template/Util/recall_search.py +0 -0
  86. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Template/__init__.py +0 -0
  87. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Api/Template/site.py +0 -0
  88. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/Downloader/HLS/proxyes.py +0 -0
  89. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/Downloader/MP4/downloader.py +0 -0
  90. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/Downloader/TOR/downloader.py +0 -0
  91. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/Downloader/__init__.py +0 -0
  92. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/FFmpeg/__init__.py +0 -0
  93. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/FFmpeg/command.py +0 -0
  94. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/M3U8/__init__.py +0 -0
  95. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/M3U8/parser.py +0 -0
  96. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/M3U8/url_fixer.py +0 -0
  97. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/TMBD/__init__.py +0 -0
  98. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/TMBD/obj_tmbd.py +0 -0
  99. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Lib/TMBD/tmdb.py +0 -0
  100. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/_jsonConfig.py +0 -0
  101. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/call_stack.py +0 -0
  102. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/color.py +0 -0
  103. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/console.py +0 -0
  104. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/headers.py +0 -0
  105. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/logger.py +0 -0
  106. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/message.py +0 -0
  107. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/Util/table.py +0 -0
  108. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity/__init__.py +0 -0
  109. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity.egg-info/dependency_links.txt +0 -0
  110. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/StreamingCommunity.egg-info/top_level.txt +0 -0
  111. {streamingcommunity-2.0.0 → StreamingCommunity-2.2.0}/setup.cfg +0 -0
@@ -0,0 +1,4 @@
1
+ recursive-include StreamingCommunity *.py
2
+ recursive-include StreamingCommunity *.md
3
+ recursive-include StreamingCommunity *.txt
4
+ recursive-include Test *
@@ -0,0 +1,443 @@
1
+ Metadata-Version: 2.1
2
+ Name: StreamingCommunity
3
+ Version: 2.2.0
4
+ Summary: UNKNOWN
5
+ Home-page: https://github.com/Lovi-0/StreamingCommunity
6
+ Author: Lovi-0
7
+ License: UNKNOWN
8
+ Project-URL: Bug Reports, https://github.com/Lovi-0/StreamingCommunity/issues
9
+ Project-URL: Source, https://github.com/Lovi-0/StreamingCommunity
10
+ Description: <p align="center">
11
+ <img src="https://i.ibb.co/PFnjvBc/immagine-2024-12-26-180318047.png" alt="Project Logo" width="700"/>
12
+ </p>
13
+
14
+ <p align="center">
15
+ <a href="https://pypi.org/project/streamingcommunity">
16
+ <img src="https://img.shields.io/pypi/v/streamingcommunity?logo=pypi&labelColor=555555&style=for-the-badge" alt="PyPI"/>
17
+ </a>
18
+ <a href="https://www.python.org">
19
+ <img src="https://img.shields.io/badge/Python->=3.8-3776AB?style=for-the-badge&logo=python&logoColor=white" alt="Python"/>
20
+ </a>
21
+ <a href="https://www.paypal.com/donate/?hosted_button_id=UXTWMT8P6HE2C">
22
+ <img src="https://img.shields.io/badge/_-Donate-red.svg?logo=githubsponsors&labelColor=555555&style=for-the-badge" alt="Donate"/>
23
+ </a>
24
+ <a href="https://github.com/Lovi-0/StreamingCommunity/blob/main/LICENSE">
25
+ <img src="https://img.shields.io/badge/License-GPL_3.0-blue.svg?style=for-the-badge" alt="License"/>
26
+ </a>
27
+ <a href="https://github.com/Lovi-0/StreamingCommunity/commits">
28
+ <img src="https://img.shields.io/github/commit-activity/m/Lovi-0/StreamingCommunity?label=commits&style=for-the-badge" alt="Commits"/>
29
+ </a>
30
+ <a href="https://github.com/Lovi-0/StreamingCommunity/commits">
31
+ <img src="https://img.shields.io/github/last-commit/Lovi-0/StreamingCommunity/main?label=&style=for-the-badge&display_timestamp=committer" alt="Last Commit"/>
32
+ </a>
33
+ </p>
34
+
35
+ <p align="center">
36
+ <a href="https://pypi.org/project/streamingcommunity">
37
+ <img src="https://img.shields.io/pypi/dm/streamingcommunity?style=for-the-badge" alt="PyPI Downloads"/>
38
+ </a>
39
+ <a href="https://github.com/Lovi-0/StreamingCommunity/network/members">
40
+ <img src="https://img.shields.io/github/forks/Lovi-0/StreamingCommunity?style=for-the-badge" alt="Forks"/>
41
+ </a>
42
+ <a href="https://github.com/Lovi-0/StreamingCommunity">
43
+ <img src="https://img.shields.io/github/languages/code-size/Lovi-0/StreamingCommunity?style=for-the-badge" alt="Code Size"/>
44
+ </a>
45
+ <a href="https://github.com/Lovi-0/StreamingCommunity">
46
+ <img src="https://img.shields.io/github/repo-size/Lovi-0/StreamingCommunity?style=for-the-badge" alt="Repo Size"/>
47
+ </a>
48
+ </p>
49
+
50
+ # 📋 Table of Contents
51
+
52
+ - 🌐 [Website available](#website-status)
53
+ - 🛠️ [Installation](#installation)
54
+ - 📦 [PyPI Installation](#1-pypi-installation)
55
+ - 🔄 [Automatic Installation](#2-automatic-installation)
56
+ - 📝 [Manual Installation](#3-manual-installation)
57
+ - 💻 [Win 7](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Installation#win-7)
58
+ - 📱 [Termux](https://github.com/Ghost6446/StreamingCommunity_api/wiki/Termux)
59
+ - ⚙️ [Configuration](#configuration)
60
+ - 🔧 [Default](#default-settings)
61
+ - 📩 [Request](#requests-settings)
62
+ - 📥 [Download](#m3u8_download-settings)
63
+ - 🔍 [Parser](#m3u8_parser-settings)
64
+ - 🐳 [Docker](#docker)
65
+ - 🎓 [Tutorial](#tutorials)
66
+ - 📝 [To do](#to-do)
67
+ - 💬 [Support](#support)
68
+ - 🤝 [Contribute](#contributing)
69
+ - ⚠️ [Disclaimer](#disclaimer)
70
+ - ⚡ [Contributors](#contributors)
71
+
72
+ # Installation
73
+
74
+ ## 1. PyPI Installation
75
+
76
+ Install directly from PyPI:
77
+
78
+ ```bash
79
+ pip install StreamingCommunity
80
+ ```
81
+
82
+ ### Creating a Run Script
83
+
84
+ Create `run_streaming.py`:
85
+
86
+ ```python
87
+ from StreamingCommunity.run import main
88
+
89
+ if __name__ == "__main__":
90
+ main()
91
+ ```
92
+
93
+ Run the script:
94
+ ```bash
95
+ python run_streaming.py
96
+ ```
97
+
98
+ ## Updating via PyPI
99
+
100
+ ```bash
101
+ pip install --upgrade StreamingCommunity
102
+ ```
103
+
104
+ ## 2. Automatic Installation
105
+
106
+ ### Supported Operating Systems 💿
107
+
108
+ | OS | Automatic Installation Support |
109
+ |:----------------|:------------------------------:|
110
+ | Windows 10/11 | ✔️ |
111
+ | Windows 7 | ❌ |
112
+ | Debian Linux | ✔️ |
113
+ | Arch Linux | ✔️ |
114
+ | CentOS Stream 9 | ✔️ |
115
+ | FreeBSD | ⏳ |
116
+ | MacOS | ✔️ |
117
+ | Termux | ❌ |
118
+
119
+ ### Installation Steps
120
+
121
+ #### On Windows:
122
+
123
+ ```powershell
124
+ .\Installer\win_install.bat
125
+ ```
126
+
127
+ #### On Linux/MacOS/BSD:
128
+
129
+ ```bash
130
+ sudo chmod +x Installer/unix_install.sh && ./Installer/unix_install.sh
131
+ ```
132
+
133
+ ### Usage
134
+
135
+ #### On Windows:
136
+
137
+ ```powershell
138
+ python .\test_run.py
139
+ ```
140
+
141
+ or
142
+
143
+ ```powershell
144
+ source .venv/bin/activate && python test_run.py && deactivate
145
+ ```
146
+
147
+ #### On Linux/MacOS/BSD:
148
+
149
+ ```bash
150
+ ./test_run.py
151
+ ```
152
+
153
+ ## 3. Manual Installation
154
+
155
+ ### Requirements 📋
156
+
157
+ Prerequisites:
158
+ * [Python](https://www.python.org/downloads/) > 3.8
159
+ * [FFmpeg](https://www.gyan.dev/ffmpeg/builds/)
160
+
161
+ ### Install Python Dependencies
162
+
163
+ ```bash
164
+ pip install -r requirements.txt
165
+ ```
166
+
167
+ ### Usage
168
+
169
+ #### On Windows:
170
+
171
+ ```powershell
172
+ python test_run.py
173
+ ```
174
+
175
+ #### On Linux/MacOS:
176
+
177
+ ```bash
178
+ python3 test_run.py
179
+ ```
180
+
181
+ ## Update
182
+
183
+ Keep your script up to date with the latest features by running:
184
+
185
+ ### On Windows:
186
+
187
+ ```powershell
188
+ python update.py
189
+ ```
190
+
191
+ ### On Linux/MacOS:
192
+
193
+ ```bash
194
+ python3 update.py
195
+ ```
196
+
197
+ <br>
198
+
199
+ # Configuration
200
+
201
+ You can change some behaviors by tweaking the configuration file.
202
+
203
+ The configuration file is divided into several main sections:
204
+
205
+ ## DEFAULT Settings
206
+
207
+ ```json
208
+ {
209
+ "root_path": "Video",
210
+ "movie_folder_name": "Movie",
211
+ "serie_folder_name": "TV",
212
+ "map_episode_name": "%(tv_name)_S%(season)E%(episode)_%(episode_name)",
213
+ "not_close": false
214
+ }
215
+ ```
216
+
217
+ - `root_path`: Directory where all videos will be saved
218
+
219
+ ### Path examples:
220
+ * Windows: `C:\\MyLibrary\\Folder` or `\\\\MyServer\\MyLibrary` (if you want to use a network folder)
221
+ * Linux/MacOS: `Desktop/MyLibrary/Folder`
222
+ `<br/><br/>`
223
+
224
+ - `movie_folder_name`: The name of the subdirectory where movies will be stored.
225
+ - `serie_folder_name`: The name of the subdirectory where TV series will be stored.
226
+
227
+ - `map_episode_name`: Template for TV series episode filenames
228
+
229
+ ### Episode name usage:
230
+
231
+ You can choose different vars:
232
+
233
+
234
+ * `%(tv_name)` : Is the name of TV Show
235
+ * `%(season)` : Is the number of the season
236
+ * `%(episode)` : Is the number of the episode
237
+ * `%(episode_name)` : Is the name of the episode
238
+ `<br/><br/>`
239
+
240
+ - `not_close`: If true, continues running after downloading
241
+
242
+ ### qBittorrent Configuration
243
+
244
+ ```json
245
+ {
246
+ "config_qbit_tor": {
247
+ "host": "192.168.1.59",
248
+ "port": "8080",
249
+ "user": "admin",
250
+ "pass": "adminadmin"
251
+ }
252
+ }
253
+ ```
254
+
255
+ To enable qBittorrent integration, follow the setup guide [here](https://github.com/lgallard/qBittorrent-Controller/wiki/How-to-enable-the-qBittorrent-Web-UI).
256
+
257
+ <br>
258
+
259
+ ## REQUESTS Settings
260
+
261
+ ```json
262
+ {
263
+ "timeout": 20,
264
+ "max_retry": 3
265
+ }
266
+ ```
267
+
268
+ - `timeout`: Maximum timeout (in seconds) for each request
269
+ - `max_retry`: Number of retry attempts per segment during M3U8 index download
270
+
271
+ <br>
272
+
273
+ ## M3U8_DOWNLOAD Settings
274
+
275
+ ```json
276
+ {
277
+ "tqdm_delay": 0.01,
278
+ "tqdm_use_large_bar": true,
279
+ "default_video_workser": 12,
280
+ "default_audio_workser": 12,
281
+ "cleanup_tmp_folder": true
282
+ }
283
+ ```
284
+
285
+ - `tqdm_delay`: Delay between progress bar updates
286
+ - `tqdm_use_large_bar`: Use detailed progress bar (recommended for desktop) set to false for mobile
287
+ - `default_video_workser`: Number of threads for video download
288
+ - `default_audio_workser`: Number of threads for audio download
289
+ - `cleanup_tmp_folder`: Remove temporary .ts files after download
290
+
291
+ > [!IMPORTANT]
292
+ > Set `tqdm_use_large_bar` to `false` when using Termux or terminals with limited width to prevent display issues
293
+
294
+
295
+ <br>
296
+
297
+ ### Language Settings
298
+
299
+ The following codes can be used for `specific_list_audio` and `specific_list_subtitles`:
300
+
301
+ ```
302
+ ara - Arabic eng - English ita - Italian por - Portuguese
303
+ baq - Basque fil - Filipino jpn - Japanese rum - Romanian
304
+ cat - Catalan fin - Finnish kan - Kannada rus - Russian
305
+ chi - Chinese fre - French kor - Korean spa - Spanish
306
+ cze - Czech ger - German mal - Malayalam swe - Swedish
307
+ dan - Danish glg - Galician may - Malay tam - Tamil
308
+ dut - Dutch gre - Greek nob - Norw. Bokm tel - Telugu
309
+ heb - Hebrew nor - Norwegian tha - Thai
310
+ forced-ita hin - Hindi pol - Polish tur - Turkish
311
+ hun - Hungarian ukr - Ukrainian
312
+ ind - Indonesian vie - Vietnamese
313
+ ```
314
+
315
+ > [!IMPORTANT]
316
+ > Language code availability may vary by site. Some platforms might:
317
+ >
318
+ > - Use different language codes
319
+ > - Support only a subset of these languages
320
+ > - Offer additional languages not listed here
321
+ >
322
+ > Check the specific site's available options if downloads fail.
323
+
324
+ > [!TIP]
325
+ > You can configure multiple languages by adding them to the lists:
326
+ >
327
+ > ```json
328
+ > "specific_list_audio": ["ita", "eng", "spa"],
329
+ > "specific_list_subtitles": ["ita", "eng", "spa"]
330
+ > ```
331
+
332
+ ## M3U8_PARSER Settings
333
+
334
+ ```json
335
+ {
336
+ "force_resolution": -1,
337
+ "get_only_link": false
338
+ }
339
+ ```
340
+
341
+ - `force_resolution`: Force specific resolution (-1 for best available, or specify 1080, 720, 360)
342
+ - `get_only_link`: Return M3U8 playlist/index URL instead of downloading
343
+
344
+ <br>
345
+
346
+ # COMMAND
347
+
348
+ - Download a specific season by entering its number.
349
+ * **Example:** `1` will download *Season 1* only.
350
+
351
+ - Use the wildcard `*` to download every available season.
352
+ * **Example:** `*` will download all seasons in the series.
353
+
354
+ - Specify a range of seasons using a hyphen `-`.
355
+ * **Example:** `1-2` will download *Seasons 1 and 2*.
356
+
357
+ - Enter a season number followed by `-*` to download from that season to the end.
358
+ * **Example:** `3-*` will download from *Season 3* to the final season.
359
+
360
+ <br>
361
+
362
+ # Docker
363
+
364
+ You can run the script in a docker container, to build the image just run
365
+
366
+ ```
367
+ docker build -t streaming-community-api .
368
+ ```
369
+
370
+ and to run it use
371
+
372
+ ```
373
+ docker run -it -p 8000:8000 streaming-community-api
374
+ ```
375
+
376
+ By default the videos will be saved in `/app/Video` inside the container, if you want to to save them in your machine instead of the container just run
377
+
378
+ ```
379
+ docker run -it -p 8000:8000 -v /path/to/download:/app/Video streaming-community-api
380
+ ```
381
+
382
+ ### Docker quick setup with Make
383
+
384
+ Inside the Makefile (install `make`) are already configured two commands to build and run the container:
385
+
386
+ ```
387
+ make build-container
388
+
389
+ # set your download directory as ENV variable
390
+ make LOCAL_DIR=/path/to/download run-container
391
+ ```
392
+
393
+ 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.
394
+
395
+ # Website Status
396
+
397
+ | Website | Status |
398
+ |:-------------------|:------:|
399
+ | 1337xx | ✅ |
400
+ | Altadefinizione | ✅ |
401
+ | AnimeUnity | ✅ |
402
+ | Ilcorsaronero | ✅ |
403
+ | CB01New | ✅ |
404
+ | DDLStreamItaly | ✅ |
405
+ | GuardaSerie | ✅ |
406
+ | MostraGuarda | ✅ |
407
+ | StreamingCommunity | ✅ |
408
+
409
+ # Tutorials
410
+
411
+ - [Windows Tutorial](https://www.youtube.com/watch?v=mZGqK4wdN-k)
412
+ - [Linux Tutorial](https://www.youtube.com/watch?v=0qUNXPE_mTg)
413
+ - [Pypy Tutorial](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
414
+ - [Compiled .exe Tutorial](https://www.youtube.com/watch?v=pm4lqsxkTVo)
415
+
416
+ # To Do
417
+
418
+ - Finish [website API](https://github.com/Lovi-0/StreamingCommunity/tree/test_gui_1)
419
+
420
+ # Contributing
421
+
422
+ Contributions are welcome! Steps:
423
+ 1. Fork the repository
424
+ 2. Create feature branch (`git checkout -b feature/AmazingFeature`)
425
+ 3. Commit changes (`git commit -m 'Add some AmazingFeature'`)
426
+ 4. Push to branch (`git push origin feature/AmazingFeature`)
427
+ 5. Open Pull Request
428
+
429
+
430
+ # Disclaimer
431
+
432
+ 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.
433
+
434
+ ## Contributors
435
+
436
+ <a href="https://github.com/Lovi-0/StreamingCommunity/graphs/contributors" alt="View Contributors">
437
+ <img src="https://contrib.rocks/image?repo=Lovi-0/StreamingCommunity&max=1000&columns=10" alt="Contributors" />
438
+ </a>
439
+
440
+ Keywords: streaming community
441
+ Platform: UNKNOWN
442
+ Requires-Python: >=3.8
443
+ Description-Content-Type: text/markdown
@@ -279,6 +279,9 @@ The configuration file is divided into several main sections:
279
279
  - `default_audio_workser`: Number of threads for audio download
280
280
  - `cleanup_tmp_folder`: Remove temporary .ts files after download
281
281
 
282
+ > [!IMPORTANT]
283
+ > Set `tqdm_use_large_bar` to `false` when using Termux or terminals with limited width to prevent display issues
284
+
282
285
 
283
286
  <br>
284
287
 
@@ -331,10 +334,8 @@ forced-ita hin - Hindi pol - Polish tur - Turkish
331
334
 
332
335
  <br>
333
336
 
334
-
335
337
  # COMMAND
336
338
 
337
-
338
339
  - Download a specific season by entering its number.
339
340
  * **Example:** `1` will download *Season 1* only.
340
341
 
@@ -405,7 +406,7 @@ The `run-container` command mounts also the `config.json` file, so any change to
405
406
 
406
407
  # To Do
407
408
 
408
- - Create website API -> https://github.com/Lovi-0/StreamingCommunity/tree/test_gui_1
409
+ - Finish [website API](https://github.com/Lovi-0/StreamingCommunity/tree/test_gui_1)
409
410
 
410
411
  # Contributing
411
412
 
@@ -27,7 +27,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
27
27
  """
28
28
 
29
29
  if string_to_search is None:
30
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
30
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
31
31
 
32
32
  # Search on database
33
33
  len_database = title_search(quote_plus(string_to_search))
@@ -27,7 +27,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
27
27
  """
28
28
 
29
29
  if string_to_search is None:
30
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
30
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
31
31
 
32
32
  # Search on database
33
33
  len_database = title_search(quote_plus(string_to_search))
@@ -24,7 +24,7 @@ from .costant import SITE_NAME
24
24
  def search(string_to_search: str = None, get_onylDatabase: bool = False):
25
25
 
26
26
  if string_to_search is None:
27
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
27
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
28
28
 
29
29
  # Search on database
30
30
  len_database = title_search(quote_plus(string_to_search))
@@ -27,7 +27,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
27
27
  """
28
28
 
29
29
  if string_to_search is None:
30
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
30
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
31
31
 
32
32
  # Search on database
33
33
  len_database = title_search(quote_plus(string_to_search))
@@ -28,9 +28,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
28
28
  """
29
29
 
30
30
  if string_to_search is None:
31
-
32
- # Make request to site to get content that corrsisponde to that string
33
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
31
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
34
32
 
35
33
  # Search on database
36
34
  len_database = title_search(quote_plus(string_to_search))
@@ -25,7 +25,6 @@ from StreamingCommunity.Api.Player.ddl import VideoSource
25
25
 
26
26
  # Variable
27
27
  from .costant import ROOT_PATH, SERIES_FOLDER
28
- table_show_manager = TVShowManager()
29
28
 
30
29
 
31
30
 
@@ -120,6 +119,7 @@ def display_episodes_list(obj_episode_manager) -> str:
120
119
  """
121
120
 
122
121
  # Set up table for displaying episodes
122
+ table_show_manager = TVShowManager()
123
123
  table_show_manager.set_slice_end(10)
124
124
 
125
125
  # Add columns to the table
@@ -27,9 +27,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
27
27
  """
28
28
 
29
29
  if string_to_search is None:
30
-
31
- # Make request to site to get content that corrsisponde to that string
32
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
30
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
33
31
 
34
32
  # Search on database
35
33
  len_database = title_search(quote_plus(string_to_search))
@@ -25,7 +25,6 @@ from StreamingCommunity.Api.Player.supervideo import VideoSource
25
25
 
26
26
  # Variable
27
27
  from .costant import ROOT_PATH, SERIES_FOLDER
28
- table_show_manager = TVShowManager()
29
28
 
30
29
 
31
30
 
@@ -171,8 +170,9 @@ def display_episodes_list(obj_episode_manager) -> str:
171
170
  Returns:
172
171
  last_command (str): Last command entered by the user.
173
172
  """
174
-
173
+
175
174
  # Set up table for displaying episodes
175
+ table_show_manager = TVShowManager()
176
176
  table_show_manager.set_slice_end(10)
177
177
 
178
178
  # Add columns to the table
@@ -28,7 +28,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
28
28
  """
29
29
 
30
30
  if string_to_search is None:
31
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
31
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
32
32
 
33
33
  # Search on database
34
34
  len_database = asyncio.run(title_search(quote_plus(string_to_search)))
@@ -25,13 +25,21 @@ class IlCorsaroNeroScraper:
25
25
  self.base_url = base_url
26
26
  self.max_page = max_page
27
27
  self.headers = {
28
- 'User-Agent': get_headers(),
29
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
30
- 'Accept-Language': 'en-US,en;q=0.5',
31
- 'Connection': 'keep-alive',
32
- 'Upgrade-Insecure-Requests': '1'
28
+ 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
29
+ 'accept-language': 'it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7',
30
+ 'cache-control': 'max-age=0',
31
+ 'priority': 'u=0, i',
32
+ 'sec-ch-ua': '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
33
+ 'sec-ch-ua-mobile': '?0',
34
+ 'sec-ch-ua-platform': '"Windows"',
35
+ 'sec-fetch-dest': 'document',
36
+ 'sec-fetch-mode': 'navigate',
37
+ 'sec-fetch-site': 'same-origin',
38
+ 'sec-fetch-user': '?1',
39
+ 'upgrade-insecure-requests': '1',
40
+ 'user-agent': get_headers()
33
41
  }
34
-
42
+
35
43
  async def fetch_url(self, url: str) -> Optional[str]:
36
44
  """
37
45
  Fetch the HTML content of a given URL.
@@ -27,7 +27,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
27
27
  """
28
28
 
29
29
  if string_to_search is None:
30
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
30
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
31
31
 
32
32
  # Not available for the moment
33
33
  if get_onylDatabase:
@@ -70,10 +70,8 @@ def download_film(movie_details: Json_film) -> str:
70
70
  player_links = soup.find("ul", class_ = "_player-mirrors").find_all("li")
71
71
  supervideo_url = "https:" + player_links[0].get("data-link")
72
72
 
73
-
74
73
  # Set domain and media ID for the video source
75
- video_source = VideoSource()
76
- video_source.setup(supervideo_url)
74
+ video_source = VideoSource(url=supervideo_url)
77
75
 
78
76
  # Define output path
79
77
  title_name = os_manager.get_sanitize_file(movie_details.title) + ".mp4"
@@ -28,7 +28,7 @@ def search(string_to_search: str = None, get_onylDatabase: bool = False):
28
28
  """
29
29
 
30
30
  if string_to_search is None:
31
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [red]{SITE_NAME}").strip()
31
+ string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{SITE_NAME}").strip()
32
32
 
33
33
  # Get site domain and version and get result of the search
34
34
  site_version, domain = get_version_and_domain()
@@ -39,7 +39,7 @@ def download_film(select_title: MediaItem) -> str:
39
39
 
40
40
  # Start message and display film information
41
41
  start_message()
42
- console.print(f"[yellow]Download: [red]{select_title.slug} \n")
42
+ console.print(f"[yellow]Download: [red]{select_title.name} \n")
43
43
 
44
44
  # Init class
45
45
  video_source = VideoSource(SITE_NAME, False)