StreamingCommunity 2.5.6__py3-none-any.whl → 2.5.8__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 (65) hide show
  1. StreamingCommunity/Api/Player/ddl.py +2 -3
  2. StreamingCommunity/Api/Site/1337xx/__init__.py +5 -6
  3. StreamingCommunity/Api/Site/1337xx/site.py +7 -14
  4. StreamingCommunity/Api/Site/1337xx/title.py +3 -5
  5. StreamingCommunity/Api/Site/altadefinizionegratis/__init__.py +7 -6
  6. StreamingCommunity/Api/Site/altadefinizionegratis/film.py +14 -19
  7. StreamingCommunity/Api/Site/altadefinizionegratis/site.py +6 -14
  8. StreamingCommunity/Api/Site/animeunity/__init__.py +7 -7
  9. StreamingCommunity/Api/Site/animeunity/film_serie.py +29 -31
  10. StreamingCommunity/Api/Site/animeunity/site.py +14 -22
  11. StreamingCommunity/Api/Site/cb01new/__init__.py +5 -4
  12. StreamingCommunity/Api/Site/cb01new/film.py +2 -5
  13. StreamingCommunity/Api/Site/cb01new/site.py +5 -13
  14. StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py +5 -4
  15. StreamingCommunity/Api/Site/ddlstreamitaly/series.py +12 -49
  16. StreamingCommunity/Api/Site/ddlstreamitaly/site.py +6 -16
  17. StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +2 -3
  18. StreamingCommunity/Api/Site/guardaserie/__init__.py +5 -4
  19. StreamingCommunity/Api/Site/guardaserie/series.py +12 -46
  20. StreamingCommunity/Api/Site/guardaserie/site.py +5 -13
  21. StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py +10 -14
  22. StreamingCommunity/Api/Site/ilcorsaronero/__init__.py +5 -4
  23. StreamingCommunity/Api/Site/ilcorsaronero/site.py +5 -13
  24. StreamingCommunity/Api/Site/ilcorsaronero/title.py +3 -5
  25. StreamingCommunity/Api/Site/mostraguarda/__init__.py +2 -2
  26. StreamingCommunity/Api/Site/mostraguarda/film.py +4 -8
  27. StreamingCommunity/Api/Site/streamingcommunity/__init__.py +8 -7
  28. StreamingCommunity/Api/Site/streamingcommunity/film.py +14 -18
  29. StreamingCommunity/Api/Site/streamingcommunity/series.py +25 -76
  30. StreamingCommunity/Api/Site/streamingcommunity/site.py +11 -23
  31. StreamingCommunity/Api/Template/Util/__init__.py +8 -1
  32. StreamingCommunity/Api/Template/Util/manage_ep.py +46 -2
  33. StreamingCommunity/Api/Template/config_loader.py +71 -0
  34. StreamingCommunity/Lib/Downloader/HLS/downloader.py +60 -60
  35. StreamingCommunity/Lib/Downloader/HLS/segments.py +40 -15
  36. StreamingCommunity/Lib/Downloader/MP4/downloader.py +47 -40
  37. StreamingCommunity/Lib/FFmpeg/command.py +59 -3
  38. StreamingCommunity/Lib/M3U8/estimator.py +10 -12
  39. StreamingCommunity/Lib/M3U8/parser.py +12 -51
  40. StreamingCommunity/Lib/TMBD/tmdb.py +66 -99
  41. StreamingCommunity/TelegramHelp/telegram_bot.py +222 -68
  42. StreamingCommunity/Util/_jsonConfig.py +14 -13
  43. StreamingCommunity/Util/ffmpeg_installer.py +70 -64
  44. StreamingCommunity/Util/headers.py +11 -122
  45. StreamingCommunity/Util/os.py +65 -56
  46. StreamingCommunity/Util/table.py +62 -108
  47. StreamingCommunity/run.py +16 -11
  48. {StreamingCommunity-2.5.6.dist-info → StreamingCommunity-2.5.8.dist-info}/METADATA +57 -23
  49. StreamingCommunity-2.5.8.dist-info/RECORD +86 -0
  50. StreamingCommunity/Api/Site/1337xx/costant.py +0 -15
  51. StreamingCommunity/Api/Site/altadefinizionegratis/costant.py +0 -21
  52. StreamingCommunity/Api/Site/animeunity/costant.py +0 -21
  53. StreamingCommunity/Api/Site/cb01new/costant.py +0 -19
  54. StreamingCommunity/Api/Site/ddlstreamitaly/costant.py +0 -20
  55. StreamingCommunity/Api/Site/guardaserie/costant.py +0 -19
  56. StreamingCommunity/Api/Site/ilcorsaronero/costant.py +0 -19
  57. StreamingCommunity/Api/Site/mostraguarda/costant.py +0 -19
  58. StreamingCommunity/Api/Site/streamingcommunity/costant.py +0 -21
  59. StreamingCommunity/TelegramHelp/request_manager.py +0 -82
  60. StreamingCommunity/TelegramHelp/session.py +0 -56
  61. StreamingCommunity-2.5.6.dist-info/RECORD +0 -96
  62. {StreamingCommunity-2.5.6.dist-info → StreamingCommunity-2.5.8.dist-info}/LICENSE +0 -0
  63. {StreamingCommunity-2.5.6.dist-info → StreamingCommunity-2.5.8.dist-info}/WHEEL +0 -0
  64. {StreamingCommunity-2.5.6.dist-info → StreamingCommunity-2.5.8.dist-info}/entry_points.txt +0 -0
  65. {StreamingCommunity-2.5.6.dist-info → StreamingCommunity-2.5.8.dist-info}/top_level.txt +0 -0
StreamingCommunity/run.py CHANGED
@@ -16,14 +16,14 @@ from typing import Callable
16
16
  from StreamingCommunity.Util.message import start_message
17
17
  from StreamingCommunity.Util.console import console, msg
18
18
  from StreamingCommunity.Util._jsonConfig import config_manager
19
- from StreamingCommunity.Upload.update import update as git_update
20
19
  from StreamingCommunity.Util.os import os_summary
21
20
  from StreamingCommunity.Util.logger import Logger
21
+ from StreamingCommunity.Upload.update import update as git_update
22
+ from StreamingCommunity.Lib.TMBD import tmdb
22
23
 
23
24
 
24
25
  # Telegram util
25
- from StreamingCommunity.TelegramHelp.session import get_session, deleteScriptId
26
- from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
26
+ from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance, TelegramSession
27
27
 
28
28
 
29
29
  # Config
@@ -62,7 +62,7 @@ def load_search_functions():
62
62
 
63
63
  api_dir = os.path.join(base_path, 'Api', 'Site')
64
64
  init_files = glob.glob(os.path.join(api_dir, '*', '__init__.py'))
65
-
65
+
66
66
  # Retrieve modules and their indices
67
67
  for init_file in init_files:
68
68
 
@@ -72,7 +72,7 @@ def load_search_functions():
72
72
  # Se il modulo è nella lista da escludere, saltalo
73
73
  if module_name in excluded_sites:
74
74
  continue
75
-
75
+
76
76
  logging.info(f"Load module name: {module_name}")
77
77
 
78
78
  try:
@@ -133,13 +133,18 @@ def initialize():
133
133
  console.log("[red]Install python version > 3.7.16")
134
134
  sys.exit(0)
135
135
 
136
+ # Trending tmbd
137
+ print()
138
+ tmdb.display_trending_films()
139
+ tmdb.display_trending_tv_shows()
140
+
141
+
136
142
  # Attempting GitHub update
137
143
  try:
138
144
  git_update()
139
145
  except:
140
146
  console.log("[red]Error with loading github.")
141
147
 
142
-
143
148
  def restart_script():
144
149
  """Riavvia lo script con gli stessi argomenti della riga di comando."""
145
150
  print("\n🔄 Riavvio dello script...\n")
@@ -176,9 +181,9 @@ def force_exit():
176
181
 
177
182
  print("🚨 Uscita forzata con os._exit(0)")
178
183
  os._exit(0)
179
-
180
184
 
181
- def main(script_id):
185
+
186
+ def main(script_id = 0):
182
187
 
183
188
  if TELEGRAM_BOT:
184
189
  bot = get_bot_instance()
@@ -332,7 +337,7 @@ def main(script_id):
332
337
  if category in input_to_function:
333
338
  run_function(input_to_function[category])
334
339
  else:
335
-
340
+
336
341
  if TELEGRAM_BOT:
337
342
  bot.send_message(f"Categoria non valida", None)
338
343
 
@@ -347,6 +352,6 @@ def main(script_id):
347
352
  bot.send_message(f"Chiusura in corso", None)
348
353
 
349
354
  # Delete script_id
350
- script_id = get_session()
355
+ script_id = TelegramSession.get_session()
351
356
  if script_id != "unknown":
352
- deleteScriptId(script_id)
357
+ TelegramSession.deleteScriptId(script_id)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: StreamingCommunity
3
- Version: 2.5.6
3
+ Version: 2.5.8
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
@@ -20,7 +20,7 @@ Requires-Dist: jsbeautifier
20
20
  Requires-Dist: pathvalidate
21
21
  Requires-Dist: pycryptodomex
22
22
  Requires-Dist: googlesearch-python
23
- Requires-Dist: fake-useragent<2.0.0
23
+ Requires-Dist: ua-generator
24
24
  Requires-Dist: qbittorrent-api
25
25
  Requires-Dist: python-qbittorrent
26
26
  Requires-Dist: Pillow
@@ -53,7 +53,7 @@ Requires-Dist: pyTelegramBotAPI
53
53
  <img src="https://img.shields.io/pypi/dm/streamingcommunity?style=for-the-badge" alt="PyPI Downloads"/>
54
54
  </a>
55
55
  <a href="https://github.com/Arrowar/StreamingCommunity">
56
- <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Arrowar/StreamingCommunity/main/Test/Media/loc-badge.json&style=for-the-badge" alt="Lines of Code"/>
56
+ <img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/Arrowar/StreamingCommunity/main/.github/media/loc-badge.json&style=for-the-badge" alt="Lines of Code"/>
57
57
  </a>
58
58
  </p>
59
59
 
@@ -81,16 +81,19 @@ Requires-Dist: pyTelegramBotAPI
81
81
  - 💬 [Support](#support)
82
82
  - 🤝 [Contribute](#contributing)
83
83
  - ⚠️ [Disclaimer](#disclaimer)
84
- - ⚡ [Contributors](#contributors)
84
+ - ⚡ [Contributors](#contributors)
85
85
 
86
86
  # Installation
87
87
 
88
88
  <p align="center">
89
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity.exe">
90
- <img src="https://img.shields.io/badge/-Windows_x64-blue.svg?style=for-the-badge&logo=windows" alt="Windows">
89
+ <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_win.exe">
90
+ <img src="https://img.shields.io/badge/-Windows-blue.svg?style=for-the-badge&logo=windows" alt="Windows">
91
91
  </a>
92
- <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity.zip">
93
- <img src="https://img.shields.io/badge/-Source_tar-green.svg?style=for-the-badge" alt="Source Tarball">
92
+ <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_mac">
93
+ <img src="https://img.shields.io/badge/-macOS-black.svg?style=for-the-badge&logo=apple" alt="macOS">
94
+ </a>
95
+ <a href="https://github.com/Arrowar/StreamingCommunity/releases/latest/download/StreamingCommunity_linux">
96
+ <img src="https://img.shields.io/badge/-Linux-orange.svg?style=for-the-badge&logo=linux" alt="Linux">
94
97
  </a>
95
98
  <a href="https://github.com/Arrowar/StreamingCommunity/releases">
96
99
  <img src="https://img.shields.io/badge/-All_Versions-lightgrey.svg?style=for-the-badge" alt="All Versions">
@@ -205,7 +208,7 @@ For detailed Windows PATH instructions, see the [Windows PATH guide](https://www
205
208
  ```bash
206
209
  # For bash (edit ~/.bash_profile)
207
210
  export PATH="/your/custom/path:$PATH"
208
-
211
+
209
212
  # For zsh (edit ~/.zshrc)
210
213
  export PATH="/your/custom/path:$PATH"
211
214
  ```
@@ -213,7 +216,7 @@ For detailed Windows PATH instructions, see the [Windows PATH guide](https://www
213
216
  ```bash
214
217
  # For bash
215
218
  source ~/.bash_profile
216
-
219
+
217
220
  # For zsh
218
221
  source ~/.zshrc
219
222
  ```
@@ -224,7 +227,7 @@ For detailed Windows PATH instructions, see the [Windows PATH guide](https://www
224
227
  ```bash
225
228
  # For bash (edit ~/.bashrc)
226
229
  export PATH="/your/custom/path:$PATH"
227
-
230
+
228
231
  # For zsh (edit ~/.zshrc)
229
232
  export PATH="/your/custom/path:$PATH"
230
233
  ```
@@ -307,7 +310,7 @@ The configuration file is divided into several main sections:
307
310
  ```
308
311
 
309
312
  - `root_path`: Directory where all videos will be saved
310
-
313
+
311
314
  ### Path examples:
312
315
  * Windows: `C:\\MyLibrary\\Folder` or `\\\\MyServer\\MyLibrary` (if you want to use a network folder)
313
316
  * Linux/MacOS: `Desktop/MyLibrary/Folder`
@@ -333,7 +336,7 @@ The configuration file is divided into several main sections:
333
336
  `<br/><br/>`
334
337
  * Can be changed from terminal with `--map_episode_name`
335
338
  <br/><br/>
336
-
339
+
337
340
  - `add_siteName`: If set to true, appends the site_name to the root path before the movie and serie folders.
338
341
  * Can be changed from terminal with `--add_siteName true/false`
339
342
  <br/><br/>
@@ -453,12 +456,25 @@ You can download VLC Media Player from the [official website](https://www.videol
453
456
 
454
457
  ```json
455
458
  {
456
- "force_resolution": -1,
459
+ "force_resolution": "1080p",
457
460
  "get_only_link": false
458
461
  }
459
462
  ```
460
463
 
461
- - `force_resolution`: Force specific resolution (-1 for best available, or specify 1080, 720, 360)
464
+ - `force_resolution`: Choose the video resolution for downloading:
465
+ * `"Best"`: Highest available resolution
466
+ * `"Worst"`: Lowest available resolution
467
+ * `"720p"`: Force 720p resolution
468
+ * Or specify one of these resolutions:
469
+ - 1080p (1920x1080)
470
+ - 720p (1280x720)
471
+ - 480p (640x480)
472
+ - 360p (640x360)
473
+ - 320p (480x320)
474
+ - 240p (426x240)
475
+ - 240p (320x240)
476
+ - 144p (256x144)
477
+
462
478
  - `get_only_link`: Return M3U8 playlist/index URL instead of downloading
463
479
 
464
480
 
@@ -529,15 +545,31 @@ The `run-container` command mounts also the `config.json` file, so any change to
529
545
 
530
546
  ## Configuration
531
547
 
532
- You need to create an .env file and enter your Telegram token
548
+ 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.
549
+
550
+ To run the bot in the background, simply start it inside a screen session and then press Ctrl + A, followed by D, to detach from the session without stopping the bot.
533
551
 
534
- and user ID to authorize only one user to use it
552
+ Command Functions:
553
+
554
+ 🔹 /start – Starts a new search for a download. This command performs the same operations as manually running the script in the terminal with test_run.py.
555
+
556
+ 🔹 /list – Displays the status of active downloads, with options to:
557
+
558
+ Stop an incorrect download using /stop <ID>.
559
+
560
+ View the real-time output of a download using /screen <ID>.
561
+
562
+ ⚠ Warning: If a download is interrupted, incomplete files may remain in the folder specified in config.json. These files must be deleted manually to avoid storage or management issues.
563
+
564
+ 🛠 Configuration: Currently, the bot's settings are stored in the config.json file, which is located in the same directory as the telegram_bot.py script.
535
565
 
536
566
  ## .env Example:
537
567
 
568
+ You need to create an .env file and enter your Telegram token and user ID to authorize only one user to use it
569
+
538
570
  ```
539
571
  TOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram
540
- AUTHORIZED_USER_ID=12345678
572
+ AUTHORIZED_USER_ID=12345678
541
573
  DEBUG=False
542
574
  ```
543
575
 
@@ -549,11 +581,13 @@ pip install -r requirements.txt
549
581
 
550
582
  ## On Linux/MacOS:
551
583
 
584
+ Start the bot from the folder /StreamingCommunity/TelegramHelp
585
+
552
586
  ```bash
553
587
  python3 telegram_bot.py
554
588
  ```
555
589
 
556
- # Website Status
590
+ # Website Status
557
591
 
558
592
  | Website | Status | Command |
559
593
  |:-------------------|:------:|:--------:|
@@ -561,21 +595,21 @@ python3 telegram_bot.py
561
595
  | [AltadefinizioneGratis](https://altadefinizionegratis.pro/) | ✅ | -ALT |
562
596
  | [AnimeUnity](https://animeunity.so/) | ✅ | -ANI |
563
597
  | [Ilcorsaronero](https://ilcorsaronero.link/) | ✅ | `-ILC` |
564
- | [CB01New](https://cb01new.media/) | ✅ | -CB0 |
598
+ | [CB01New](https://cb01new.gold/) | ✅ | -CB0 |
565
599
  | [DDLStreamItaly](https://ddlstreamitaly.co/) | ✅ | -DDL |
566
- | [GuardaSerie](https://guardaserie.meme/) | ✅ | -GUA |
600
+ | [GuardaSerie](https://guardaserie.now/) | ✅ | -GUA |
567
601
  | [MostraGuarda](https://mostraguarda.stream/) | ✅ | -MOS |
568
602
  | [StreamingCommunity](https://streamingcommunity.paris/) | ✅ | -STR |
569
603
 
570
604
 
571
- # Tutorials
605
+ # Tutorials
572
606
 
573
607
  - [Windows Tutorial](https://www.youtube.com/watch?v=mZGqK4wdN-k)
574
608
  - [Linux Tutorial](https://www.youtube.com/watch?v=0qUNXPE_mTg)
575
609
  - [Pypy Tutorial](https://www.youtube.com/watch?v=C6m9ZKOK0p4)
576
610
  - [Compiled .exe Tutorial](https://www.youtube.com/watch?v=pm4lqsxkTVo)
577
611
 
578
- # To Do
612
+ # To Do
579
613
 
580
614
  - To Finish [website API](https://github.com/Arrowar/StreamingCommunity/tree/test_gui_1)
581
615
  - To finish [website API 2](https://github.com/hydrosh/StreamingCommunity/tree/test_gui_1)
@@ -0,0 +1,86 @@
1
+ StreamingCommunity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ StreamingCommunity/run.py,sha256=iEI6TghwB5kJtpYRrnk4y-fVoElIGELnZFxaeqO93L8,12261
3
+ StreamingCommunity/Api/Player/ddl.py,sha256=KNTrM6UzoyapfuLNWJvi16A6MJCa6h29JIs9oYasonc,2258
4
+ StreamingCommunity/Api/Player/maxstream.py,sha256=Q9td9lOxC_-8YwgB3bQ-H2686uMqjd23lptnsdAglYk,5153
5
+ StreamingCommunity/Api/Player/supervideo.py,sha256=udPbBUvlvHVUCZasOJvFmcQfSFmB0KquoSOWOiGur4M,5925
6
+ StreamingCommunity/Api/Player/vixcloud.py,sha256=n9SEx2G6-7OsvTMHcSbpO_XmU2U8IDQAwQ6C-qioBUE,9226
7
+ StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py,sha256=U-8QlD5kGzIk3-4t4D6QyYmiDe8UBrSuVi1YHRQb7AU,4295
8
+ StreamingCommunity/Api/Player/Helper/Vixcloud/util.py,sha256=KqTtHJzfhtKHmMTdA7OWMgdpTHTe6LyXCphBLTMYLYs,4727
9
+ StreamingCommunity/Api/Site/1337xx/__init__.py,sha256=AmvsV_jANao_agPGOrV8WFbGEjNlTCTk86Jec5RdRbs,1314
10
+ StreamingCommunity/Api/Site/1337xx/site.py,sha256=OyS4FQ_IOSfbNcXHs0cJgnuG3407GfsN4v8P7uGZnrw,2639
11
+ StreamingCommunity/Api/Site/1337xx/title.py,sha256=1_a8zMtjKX7E64U4jNq373KnGgKpdC1yNsenlclBJMo,1893
12
+ StreamingCommunity/Api/Site/altadefinizionegratis/__init__.py,sha256=-d6ajulRxJathFxAveXmzpzOFbkbMtoWpViAThR6arM,2201
13
+ StreamingCommunity/Api/Site/altadefinizionegratis/film.py,sha256=IIj7gZ1almed1aLsROd9-jek_q_wikf7CkPXowIEeW8,2274
14
+ StreamingCommunity/Api/Site/altadefinizionegratis/site.py,sha256=Uc9dsamGvzWTTHkEiC8ekPwU3U5u_CK8gmu_M9yCVDc,3498
15
+ StreamingCommunity/Api/Site/animeunity/__init__.py,sha256=2dul294DW-VnYGQeo5-WYlRZj1LjPbpL-bhlyuUl6WI,2219
16
+ StreamingCommunity/Api/Site/animeunity/film_serie.py,sha256=xftUA9RZf8bsyfzoXEmlhGS8ua-XfB3qcLYtPGpSh1I,5704
17
+ StreamingCommunity/Api/Site/animeunity/site.py,sha256=RoKRA28IObeGFgjINeXMziuGmAALv8-zGVb3O4KUwFg,5900
18
+ StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py,sha256=92PDY4CJSSmeHsVowqBuCzYmLa1pcXR8hCBXcuvlmvk,2886
19
+ StreamingCommunity/Api/Site/cb01new/__init__.py,sha256=-243pVwMjuAAPk7j7BjLL1SXIAK5ZHVHrsZ8hGhDIic,1329
20
+ StreamingCommunity/Api/Site/cb01new/film.py,sha256=KtFPGQSc9hbmasBiz8dDfILC41iu-AlWiYVVHTVqUWg,1615
21
+ StreamingCommunity/Api/Site/cb01new/site.py,sha256=gZeITd30ym_YK1GpTZu8QtpDMhhXvkSv5zonPh_f_4k,2218
22
+ StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py,sha256=kyYJErCiMmlI549SFkcjjhVXcInwgDAyKxJJsNEI88A,1469
23
+ StreamingCommunity/Api/Site/ddlstreamitaly/series.py,sha256=cLKRb1cq7LHveDFIpdbhgpSIJFeIhgsbvPeerVQh-LM,3335
24
+ StreamingCommunity/Api/Site/ddlstreamitaly/site.py,sha256=QCTouEGUqhhnigDfx66L0Sz4sXOhML4JfAjsN_Bogpw,2853
25
+ StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py,sha256=akHjQg4mFNdS39DyCyu2eE30ty_471YWJZ1NnTQT104,2549
26
+ StreamingCommunity/Api/Site/guardaserie/__init__.py,sha256=xCuKD72yOjazCF3GsIWLSeTzFpwr-8W33AgVKT5PFUU,1321
27
+ StreamingCommunity/Api/Site/guardaserie/series.py,sha256=f5-5Fy-Bh1QF9zA4zr-DJRgoQCO8sQ0Af0v5VEleHFg,5619
28
+ StreamingCommunity/Api/Site/guardaserie/site.py,sha256=HqwMAFDMouA9C0DWqSV1ziKxcNh6Kb8vO_PiowaVWhs,2643
29
+ StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py,sha256=cm1LcEUTIiccCgJpXwbe6EOnKmzsEFXOaEGm2i5P1JA,3263
30
+ StreamingCommunity/Api/Site/ilcorsaronero/__init__.py,sha256=P4raHiMhz-8UtCm4P1S065poMztTKzT9BovsfRXVuUs,1347
31
+ StreamingCommunity/Api/Site/ilcorsaronero/site.py,sha256=B5LwR0vLLDaXMfwFHF3hnTaP1X3Z28t7fV3-le4T3Mg,2022
32
+ StreamingCommunity/Api/Site/ilcorsaronero/title.py,sha256=aVkLZU5NsY40S_yrLYf2eAk3ZyEE_T9FlHZz9ZPCknM,1305
33
+ StreamingCommunity/Api/Site/ilcorsaronero/util/ilCorsarScraper.py,sha256=BJgmv2UO3XM0gNkSsAt1REJoIUXjD_1nxT6Tpp5HGQg,5114
34
+ StreamingCommunity/Api/Site/mostraguarda/__init__.py,sha256=Z4SpSr4OpNJYfhqxkNENZehk09jh72_D1cXTuoXNnVI,1184
35
+ StreamingCommunity/Api/Site/mostraguarda/film.py,sha256=VlODqQkwhJsIZBkVXScQbmtmDE-VBxI4J8R4mIa2yu0,2476
36
+ StreamingCommunity/Api/Site/streamingcommunity/__init__.py,sha256=xg6HC1U3bRExbH2Z-eDL5qr80Ol8lfyytiOZV1ygCi4,2453
37
+ StreamingCommunity/Api/Site/streamingcommunity/film.py,sha256=92BjTgSsQPRK_t5gocN9JNs_SviErjYBJq1DJ_hvuV8,2517
38
+ StreamingCommunity/Api/Site/streamingcommunity/series.py,sha256=YoR0X2w6wK3mYSjyS58mOLEmQLjhLbJ61t3EEXOkzeA,7791
39
+ StreamingCommunity/Api/Site/streamingcommunity/site.py,sha256=kkf6jnBP3MLtT3OHaEkv6aFJoElonCQUxIErkl_Bb_E,4453
40
+ StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py,sha256=t-Of4McSpJv8uZGP8hqBj1cuh57U8A5hhvMM18rHSaQ,4260
41
+ StreamingCommunity/Api/Template/__init__.py,sha256=oyfd_4_g5p5q6mxb_rKwSsudZnTM3W3kg1tLwxg-v-Q,46
42
+ StreamingCommunity/Api/Template/config_loader.py,sha256=FtVXEt7xqfNpTURZl7a0effYfns7Nb-OomJlfX2u4a0,2034
43
+ StreamingCommunity/Api/Template/site.py,sha256=BNff60a8TWhg8yRnpGQPXtR8UKAVI2Kn3M-Wf1XIeE8,2934
44
+ StreamingCommunity/Api/Template/Class/SearchType.py,sha256=FtO8xDUGEeJgMWsK2Ab7ZzAFsncalTYL2oEYi8uCnuk,2531
45
+ StreamingCommunity/Api/Template/Util/__init__.py,sha256=lIP-Of79FzENknlgllwHloFAnuNbozjKCDIFk5L5KRw,276
46
+ StreamingCommunity/Api/Template/Util/get_domain.py,sha256=OPgjNN3UgrMHPmy457_DbF5xSZ2fhvZCtRJHhqnYshY,7126
47
+ StreamingCommunity/Api/Template/Util/manage_ep.py,sha256=vti7Pj2MEDmOtoi0yYpZXOdyczqcS8AJ2sWlrrn0NaE,7852
48
+ StreamingCommunity/Api/Template/Util/recall_search.py,sha256=QSKDI4fyQfKF8C2eZXW6lBrAp1HTuhWQeA6g8ybDQYQ,1147
49
+ StreamingCommunity/Lib/Downloader/__init__.py,sha256=JhbBh5hOnSM7VmtkxJ7zZ_FtWEC1JdnKThsSBjLV5FY,140
50
+ StreamingCommunity/Lib/Downloader/HLS/downloader.py,sha256=POmu_pSQXuRK5ksYwMHzXG86D81u_q_2CG6dw2ZnDzw,21045
51
+ StreamingCommunity/Lib/Downloader/HLS/proxyes.py,sha256=H92gBhiwsomtURyBx__SQrML0nSx_0rAb2VWFd2rMAk,3275
52
+ StreamingCommunity/Lib/Downloader/HLS/segments.py,sha256=qydWmQIfz0d-jIVDRO9I5vcMlqgsOZc6qsIGimQmMIU,18797
53
+ StreamingCommunity/Lib/Downloader/MP4/downloader.py,sha256=5EjInbqDUFxPGBts4ExczD-uNycnLFcxMdxjIYZA1cA,7569
54
+ StreamingCommunity/Lib/Downloader/TOR/downloader.py,sha256=n8-56EoGpe3-FO72zL66ovLGTAZRJwzmNqeRGe8VSO8,11212
55
+ StreamingCommunity/Lib/FFmpeg/__init__.py,sha256=pFt6A1gD2tZ8REEXa8QgM7_CsenrmBLQXDh_I1bwZvM,131
56
+ StreamingCommunity/Lib/FFmpeg/capture.py,sha256=GjzT2BNtGL75A9scJNX1RqiRn4cy39dFeHnz2b_Ocw8,5431
57
+ StreamingCommunity/Lib/FFmpeg/command.py,sha256=dRAgpn3sLDNfq6FJ5AD9eAmClVJh0eIna0xyJIGcpfI,10663
58
+ StreamingCommunity/Lib/FFmpeg/util.py,sha256=lTWA9KuK8KWYymuNL_-YMW1WB6Y4aLTsItk9ezPD0NU,8093
59
+ StreamingCommunity/Lib/M3U8/__init__.py,sha256=H_KS2eDd3kVXMziFJnD0FCPvPHEizaqfoA36ElTv_r8,170
60
+ StreamingCommunity/Lib/M3U8/decryptor.py,sha256=yD94xUhGHx4-RcrHguarpmfTeSxtpkfsH1id6sUrOw0,6365
61
+ StreamingCommunity/Lib/M3U8/estimator.py,sha256=3JTo9dRzukSgxAyhnBfqdEa5lyL_jqYFurHcmuJ2rNw,6124
62
+ StreamingCommunity/Lib/M3U8/parser.py,sha256=5cwrIdG5xpNh8UKKi3Qmr6r0vALUa9gP-Utz1eZeFHE,21410
63
+ StreamingCommunity/Lib/M3U8/url_fixer.py,sha256=VKc9j6rXHQ9wEdn6IN5Sn_Gi-fGhCZOMv7SGOq-2a3E,1789
64
+ StreamingCommunity/Lib/TMBD/__init__.py,sha256=jSNsLuW4fBf1tGtIdz6fcRv1d5A-NiNnM_O0G6Hj30s,54
65
+ StreamingCommunity/Lib/TMBD/obj_tmbd.py,sha256=SsvxM4z0xU1IsSrB9o2dpRfuRDUYQk3uRs7AseftPPI,1929
66
+ StreamingCommunity/Lib/TMBD/tmdb.py,sha256=Nq06TDLpBgShd1mzOxujGfeiRHldiqtCh70w5poK484,10822
67
+ StreamingCommunity/TelegramHelp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
+ StreamingCommunity/TelegramHelp/telegram_bot.py,sha256=jqyo_1cc8ZPGaurHcTZPvrMDnbCLD7I4WhGPXNCt7Fo,26544
69
+ StreamingCommunity/Upload/update.py,sha256=ayuUzXEQcvc62SBC2NxJwvSvk4aoHZITHpmOuW5fT5w,2541
70
+ StreamingCommunity/Upload/version.py,sha256=lvrpaH0cNQ7HPCueUfroXVcjfZ3DlWUtnFoHkv8IZE8,171
71
+ StreamingCommunity/Util/_jsonConfig.py,sha256=p4VkL5tGXIhrTY-Ay9Iad9lyYyC2grSx4A9jMELv-3g,7574
72
+ StreamingCommunity/Util/call_stack.py,sha256=bVYEjwLJnRNJ1tgfwClpyVcLKCTeTMHM2S6-HM2Ibfo,1375
73
+ StreamingCommunity/Util/color.py,sha256=TWvoellnYd-oCTeU3bnXqkMf864KgF9YXwzjtI6rd4g,459
74
+ StreamingCommunity/Util/console.py,sha256=xdGMbH38By9d4ugYMVJFaUrcMJW2krKZh0zbptA3SVQ,218
75
+ StreamingCommunity/Util/ffmpeg_installer.py,sha256=q5yb_ZXKe9PhcG7JbKLfo1AZa8DNukgHqymPbudDuAY,13585
76
+ StreamingCommunity/Util/headers.py,sha256=RNM583pJIO0ytlf9HKJMQ2PFFwJaQZ1eeyMD5E1Uxew,1205
77
+ StreamingCommunity/Util/logger.py,sha256=ekHO3tryCwo5zqSe2RoI6s3qZsZx9ghinTchipMEovg,2112
78
+ StreamingCommunity/Util/message.py,sha256=F2QKjkcCBl6TjsaM5G6iDck0IhxBnDkKV3itwUebr5c,1403
79
+ StreamingCommunity/Util/os.py,sha256=xF8wfjI8aLfIN6DwKYc0g2CMkj6PNtJUd4LCNJVCZY4,17426
80
+ StreamingCommunity/Util/table.py,sha256=R3UbEJPXT0nIQf3huIYZUWKKwHC8aIAUHHuuS1N0r8E,8937
81
+ StreamingCommunity-2.5.8.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
82
+ StreamingCommunity-2.5.8.dist-info/METADATA,sha256=wwPwa-Hhf_tzNPo_osEzLrxBIykSnf2LSf-asH6zTBc,19650
83
+ StreamingCommunity-2.5.8.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
84
+ StreamingCommunity-2.5.8.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
85
+ StreamingCommunity-2.5.8.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
86
+ StreamingCommunity-2.5.8.dist-info/RECORD,,
@@ -1,15 +0,0 @@
1
- # 09.06.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- SERIES_FOLDER = config_manager.get('DEFAULT', 'serie_folder_name')
15
- MOVIE_FOLDER = config_manager.get('DEFAULT', 'movie_folder_name')
@@ -1,21 +0,0 @@
1
- # 26.05.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- SERIES_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'serie_folder_name'))
15
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
16
-
17
- if config_manager.get_bool("DEFAULT", "add_siteName"):
18
- SERIES_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'serie_folder_name'))
19
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
20
-
21
- TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot')
@@ -1,21 +0,0 @@
1
- # 26.05.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
15
- ANIME_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'anime_folder_name'))
16
-
17
- if config_manager.get_bool("DEFAULT", "add_siteName"):
18
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
19
- ANIME_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'anime_folder_name'))
20
-
21
- TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot')
@@ -1,19 +0,0 @@
1
- # 03.07.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- SERIES_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'serie_folder_name'))
15
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
16
-
17
- if config_manager.get_bool("DEFAULT", "add_siteName"):
18
- SERIES_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'serie_folder_name'))
19
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
@@ -1,20 +0,0 @@
1
- # 09.06.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
- COOKIE = config_manager.get_dict('SITE', SITE_NAME)['extra']
14
-
15
- SERIES_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'serie_folder_name'))
16
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
17
-
18
- if config_manager.get_bool("DEFAULT", "add_siteName"):
19
- SERIES_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'serie_folder_name'))
20
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
@@ -1,19 +0,0 @@
1
- # 09.06.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- SERIES_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'serie_folder_name'))
15
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
16
-
17
- if config_manager.get_bool("DEFAULT", "add_siteName"):
18
- SERIES_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'serie_folder_name'))
19
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
@@ -1,19 +0,0 @@
1
- # 09.06.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- SERIES_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'serie_folder_name'))
15
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
16
-
17
- if config_manager.get_bool("DEFAULT", "add_siteName"):
18
- SERIES_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'serie_folder_name'))
19
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
@@ -1,19 +0,0 @@
1
- # 26.05.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- SERIES_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'serie_folder_name'))
15
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
16
-
17
- if config_manager.get_bool("DEFAULT", "add_siteName"):
18
- SERIES_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'serie_folder_name'))
19
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
@@ -1,21 +0,0 @@
1
- # 26.05.24
2
-
3
- import os
4
-
5
-
6
- # Internal utilities
7
- from StreamingCommunity.Util._jsonConfig import config_manager
8
-
9
-
10
- SITE_NAME = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
11
- ROOT_PATH = config_manager.get('DEFAULT', 'root_path')
12
- DOMAIN_NOW = config_manager.get_dict('SITE', SITE_NAME)['domain']
13
-
14
- SERIES_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'serie_folder_name'))
15
- MOVIE_FOLDER = os.path.join(ROOT_PATH, config_manager.get('DEFAULT', 'movie_folder_name'))
16
-
17
- if config_manager.get_bool("DEFAULT", "add_siteName"):
18
- SERIES_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'serie_folder_name'))
19
- MOVIE_FOLDER = os.path.join(ROOT_PATH, SITE_NAME, config_manager.get('DEFAULT', 'movie_folder_name'))
20
-
21
- TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot')
@@ -1,82 +0,0 @@
1
- # 04.02.25
2
- # Made by: @GiuPic
3
-
4
- import json
5
- import time
6
- from typing import Optional
7
-
8
- class RequestManager:
9
- _instance = None
10
-
11
- def __new__(cls, *args, **kwargs):
12
- if not cls._instance:
13
- cls._instance = super().__new__(cls)
14
- return cls._instance
15
-
16
- def __init__(self, json_file: str = "active_requests.json"):
17
- if not hasattr(self, 'initialized'):
18
- self.json_file = json_file
19
- self.initialized = True
20
- self.on_response_callback = None
21
-
22
- def create_request(self, type: str) -> str:
23
- request_data = {
24
- "type": type,
25
- "response": None,
26
- "timestamp": time.time()
27
- }
28
-
29
- with open(self.json_file, "w") as f:
30
- json.dump(request_data, f)
31
-
32
- return "Ok"
33
-
34
- def save_response(self, message_text: str) -> bool:
35
- try:
36
- # Carica il file JSON
37
- with open(self.json_file, "r") as f:
38
- data = json.load(f)
39
-
40
- # Controlla se esiste la chiave 'type' e se la risposta è presente
41
- if "type" in data and "response" in data:
42
- data["response"] = message_text # Aggiorna la risposta
43
-
44
- with open(self.json_file, "w") as f:
45
- json.dump(data, f, indent=4)
46
-
47
- return True
48
- else:
49
- return False
50
-
51
- except (FileNotFoundError, json.JSONDecodeError) as e:
52
- print(f"⚠️ save_response - errore: {e}")
53
- return False
54
-
55
- def get_response(self) -> Optional[str]:
56
- try:
57
- with open(self.json_file, "r") as f:
58
- data = json.load(f)
59
-
60
- # Verifica se esiste la chiave "response"
61
- if "response" in data:
62
- response = data["response"] # Ottieni la risposta direttamente
63
-
64
- if response is not None and self.on_response_callback:
65
- self.on_response_callback(response)
66
-
67
- return response
68
-
69
- except (FileNotFoundError, json.JSONDecodeError) as e:
70
- print(f"get_response - errore: {e}")
71
- return None
72
-
73
- def clear_file(self) -> bool:
74
- try:
75
- with open(self.json_file, "w") as f:
76
- json.dump({}, f)
77
- print(f"File {self.json_file} è stato svuotato con successo.")
78
- return True
79
-
80
- except Exception as e:
81
- print(f"⚠️ clear_file - errore: {e}")
82
- return False