StreamingCommunity 3.0.0__py3-none-any.whl → 3.0.2__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 (29) hide show
  1. StreamingCommunity/Api/Player/hdplayer.py +65 -0
  2. StreamingCommunity/Api/Player/mixdrop.py +145 -0
  3. StreamingCommunity/Api/Site/1337xx/site.py +5 -2
  4. StreamingCommunity/Api/Site/altadefinizione/site.py +1 -1
  5. StreamingCommunity/Api/Site/animeunity/site.py +2 -1
  6. StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py +22 -12
  7. StreamingCommunity/Api/Site/animeworld/site.py +1 -1
  8. StreamingCommunity/Api/Site/ddlstreamitaly/site.py +1 -1
  9. StreamingCommunity/Api/Site/guardaserie/site.py +1 -1
  10. StreamingCommunity/Api/Site/raiplay/site.py +2 -2
  11. StreamingCommunity/Api/Site/streamingcommunity/series.py +2 -2
  12. StreamingCommunity/Api/Site/streamingcommunity/site.py +1 -1
  13. StreamingCommunity/Api/Site/streamingwatch/__init__.py +95 -0
  14. StreamingCommunity/Api/Site/{cb01new → streamingwatch}/film.py +12 -13
  15. StreamingCommunity/Api/Site/streamingwatch/series.py +160 -0
  16. StreamingCommunity/Api/Site/streamingwatch/site.py +111 -0
  17. StreamingCommunity/Api/Site/streamingwatch/util/ScrapeSerie.py +118 -0
  18. StreamingCommunity/Lib/Proxies/proxy.py +232 -0
  19. StreamingCommunity/Upload/version.py +1 -1
  20. StreamingCommunity/Util/config_json.py +11 -13
  21. {streamingcommunity-3.0.0.dist-info → streamingcommunity-3.0.2.dist-info}/METADATA +16 -2
  22. {streamingcommunity-3.0.0.dist-info → streamingcommunity-3.0.2.dist-info}/RECORD +26 -22
  23. {streamingcommunity-3.0.0.dist-info → streamingcommunity-3.0.2.dist-info}/WHEEL +1 -1
  24. StreamingCommunity/Api/Player/maxstream.py +0 -140
  25. StreamingCommunity/Api/Site/cb01new/__init__.py +0 -71
  26. StreamingCommunity/Api/Site/cb01new/site.py +0 -81
  27. {streamingcommunity-3.0.0.dist-info → streamingcommunity-3.0.2.dist-info}/entry_points.txt +0 -0
  28. {streamingcommunity-3.0.0.dist-info → streamingcommunity-3.0.2.dist-info}/licenses/LICENSE +0 -0
  29. {streamingcommunity-3.0.0.dist-info → streamingcommunity-3.0.2.dist-info}/top_level.txt +0 -0
@@ -12,6 +12,10 @@ from typing import Any, List
12
12
  from rich.console import Console
13
13
 
14
14
 
15
+ # Internal utilities
16
+ from StreamingCommunity.Util.headers import get_userAgent
17
+
18
+
15
19
  # Variable
16
20
  console = Console()
17
21
  download_site_data = True
@@ -134,7 +138,7 @@ class ConfigManager:
134
138
  console.print(f"[bold cyan]Downloading reference configuration:[/bold cyan] [green]{self.reference_config_url}[/green]")
135
139
 
136
140
  try:
137
- response = requests.get(self.reference_config_url, timeout=10)
141
+ response = requests.get(self.reference_config_url, timeout=8, headers={'User-Agent': get_userAgent()})
138
142
 
139
143
  if response.status_code == 200:
140
144
  with open(self.file_path, 'wb') as f:
@@ -156,7 +160,7 @@ class ConfigManager:
156
160
  try:
157
161
  # Download the reference configuration
158
162
  console.print(f"[bold cyan]Validating configuration with GitHub...[/bold cyan]")
159
- response = requests.get(self.reference_config_url, timeout=10)
163
+ response = requests.get(self.reference_config_url, timeout=8, headers={'User-Agent': get_userAgent()})
160
164
 
161
165
  if not response.ok:
162
166
  raise Exception(f"Error downloading reference configuration. Code: {response.status_code}")
@@ -267,13 +271,14 @@ class ConfigManager:
267
271
  headers = {
268
272
  "apikey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inp2Zm5ncG94d3Jnc3duenl0YWRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDAxNTIxNjMsImV4cCI6MjA1NTcyODE2M30.FNTCCMwi0QaKjOu8gtZsT5yQttUW8QiDDGXmzkn89QE",
269
273
  "Authorization": f"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inp2Zm5ncG94d3Jnc3duenl0YWRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDAxNTIxNjMsImV4cCI6MjA1NTcyODE2M30.FNTCCMwi0QaKjOu8gtZsT5yQttUW8QiDDGXmzkn89QE",
270
- "Content-Type": "application/json"
274
+ "Content-Type": "application/json",
275
+ "User-Agent": get_userAgent()
271
276
  }
272
277
 
273
278
  try:
274
279
  console.print("[bold cyan]Retrieving site data from API...[/bold cyan]")
275
- response = requests.get("https://zvfngpoxwrgswnzytadh.supabase.co/rest/v1/public", headers=headers, timeout=10)
276
-
280
+ response = requests.get("https://zvfngpoxwrgswnzytadh.supabase.co/rest/v1/public", timeout=8, headers=headers)
281
+
277
282
  if response.ok:
278
283
  data = response.json()
279
284
  if data and len(data) > 0:
@@ -282,13 +287,6 @@ class ConfigManager:
282
287
  site_count = len(self.configSite) if isinstance(self.configSite, dict) else 0
283
288
  console.print(f"[bold green]Site data retrieved:[/bold green] {site_count} streaming services available")
284
289
 
285
- # Show some sites as examples
286
- if site_count > 0:
287
- examples = list(self.configSite.items())[:3]
288
- sites_info = []
289
- for site, info in examples:
290
- url = info.get('full_url', 'N/A')
291
- console.print(f" • [cyan]{site}[/cyan]: {url}")
292
290
  else:
293
291
  console.print("[bold yellow]API returned an empty data set[/bold yellow]")
294
292
  else:
@@ -347,7 +345,7 @@ class ConfigManager:
347
345
  try:
348
346
  logging.info(f"Downloading {filename} from {url}...")
349
347
  console.print(f"[bold cyan]File download:[/bold cyan] {os.path.basename(filename)}")
350
- response = requests.get(url, timeout=10)
348
+ response = requests.get(url, timeout=8, headers={'User-Agent': get_userAgent()})
351
349
 
352
350
  if response.status_code == 200:
353
351
  with open(filename, 'wb') as f:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: StreamingCommunity
3
- Version: 3.0.0
3
+ Version: 3.0.2
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
@@ -832,11 +832,25 @@ Contributions are welcome! Steps:
832
832
  4. Push to branch (`git push origin feature/AmazingFeature`)
833
833
  5. Open Pull Request
834
834
 
835
-
836
835
  # Disclaimer
837
836
 
838
837
  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.
839
838
 
839
+ ## Useful Project
840
+
841
+ ### 🎯 [Unit3Dup](https://github.com/31December99/Unit3Dup)
842
+ Bot in Python per la generazione e l'upload automatico di torrent su tracker basati su Unit3D.
843
+
844
+
845
+ ### 🇮🇹 [MammaMia](https://github.com/UrloMythus/MammaMia)
846
+ Addon per Stremio che consente lo streaming HTTPS di film, serie, anime e TV in diretta in lingua italiana.
847
+
848
+ ### 🧩 [streamingcommunity-unofficialapi](https://github.com/Blu-Tiger/streamingcommunity-unofficialapi)
849
+ API non ufficiale per accedere ai contenuti del sito italiano StreamingCommunity.
850
+
851
+ ### 🎥 [stream-buddy](https://github.com/Bbalduzz/stream-buddy)
852
+ Tool per guardare o scaricare film dalla piattaforma StreamingCommunity.
853
+
840
854
  ## Contributors
841
855
 
842
856
  <a href="https://github.com/Arrowar/StreamingCommunity/graphs/contributors" alt="View Contributors">
@@ -2,52 +2,55 @@ StreamingCommunity/__init__.py,sha256=Cw-N0VCg7sef1WqdtvVwrhs1zc4LoUhs5C8k7vpM1l
2
2
  StreamingCommunity/global_search.py,sha256=LgRTjVBJYyLiKYa3EIb33vRnVQ-COoQT7gASfVW8-Dg,12022
3
3
  StreamingCommunity/run.py,sha256=xBq2GS3JznLZBAF5DnJplNtJBzqOl_zHQXVmXxDMnBs,13108
4
4
  StreamingCommunity/Api/Player/ddl.py,sha256=S3UZFonJl3d3xU1fQrosRFXFhwAm8hGVQ8Ff8g-6xSI,2071
5
- StreamingCommunity/Api/Player/maxstream.py,sha256=WXg8xncFXFiaUmTVXxB3NyknQtbvd0sF1eRaoDO24bU,4822
5
+ StreamingCommunity/Api/Player/hdplayer.py,sha256=HpymvDycFw5W9pgqTKLPdIxc5clLQb4P8JMxUn9R7O8,1802
6
6
  StreamingCommunity/Api/Player/mediapolisvod.py,sha256=OcdnE1BMSwPZM-nw74GXNJ44E9RYwGnc_kFEA-G8XyY,2294
7
+ StreamingCommunity/Api/Player/mixdrop.py,sha256=B5KEv-S0xg8b8X2doSxPVcjgwDIlB5TP3m35zfn3v5w,4968
7
8
  StreamingCommunity/Api/Player/supervideo.py,sha256=hr9QViI-XD0Dqhcx90oaH8_j0d6cxpVaf-EuCjMs6hI,5199
8
9
  StreamingCommunity/Api/Player/sweetpixel.py,sha256=gJSe1fop5J216CB3u8vstxLPP5YbcyoGUH4y3X3-JaQ,1643
9
10
  StreamingCommunity/Api/Player/vixcloud.py,sha256=qI9ppYEMGaJ1B5y693BOMeRQri-F4-94SfRkS-9udfM,6287
10
11
  StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py,sha256=U-8QlD5kGzIk3-4t4D6QyYmiDe8UBrSuVi1YHRQb7AU,4295
11
12
  StreamingCommunity/Api/Player/Helper/Vixcloud/util.py,sha256=QLUgbwQrpuPIVNzdBlAiEJXnd-eCj_JQFckZZEEL55w,5214
12
13
  StreamingCommunity/Api/Site/1337xx/__init__.py,sha256=OdQxYoJ9UyGSAutZwqH1FgmOH-Z6vGVHb0CLKhwEZGM,1999
13
- StreamingCommunity/Api/Site/1337xx/site.py,sha256=lwpZt8ALBd9_ImuFWKrRx6KCIqPmDMdqZCM-n-pxvGI,2283
14
+ StreamingCommunity/Api/Site/1337xx/site.py,sha256=5XVUMTQn1UqMYgo7tPAw7bGMA-tqhQnfeOGKkgGh9OA,2349
14
15
  StreamingCommunity/Api/Site/1337xx/title.py,sha256=8T3cVRb-Mt9QdOtKWVVFHz8iOHqspf7iw28E7bfTV78,1865
15
16
  StreamingCommunity/Api/Site/altadefinizione/__init__.py,sha256=Oxjfyg6VolwV6n2VGgICLvdRVPPMzJXMSdz8oI2Xs0M,4145
16
17
  StreamingCommunity/Api/Site/altadefinizione/film.py,sha256=0XeqMrMHnk5nbFkVTFaNZWtlXI8pETl7dsORDtIMbjg,4395
17
18
  StreamingCommunity/Api/Site/altadefinizione/series.py,sha256=-rCYx-Fa7aZiYepcIne7OdH1aaUFZZAPX-ToBv6mxFs,8192
18
- StreamingCommunity/Api/Site/altadefinizione/site.py,sha256=S-ucgLNXUYZPjgSNjEYVxlkpMkJyjpr7mYf_jBcYwqM,2860
19
+ StreamingCommunity/Api/Site/altadefinizione/site.py,sha256=2kUNQ8ebYlX5dkSql-CvEhU01TOTNtuyEMIAD6SC3lg,2865
19
20
  StreamingCommunity/Api/Site/altadefinizione/util/ScrapeSerie.py,sha256=bSApjfY9xd5dw0tZ1t7vB6ifAo5vAkeeEwX6IS7yH1o,3756
20
21
  StreamingCommunity/Api/Site/animeunity/__init__.py,sha256=EayZqxyWltgjRRDNfM32JRzgeyElK85o6s0_YJ0dpBk,4031
21
22
  StreamingCommunity/Api/Site/animeunity/film.py,sha256=Vqg6yag2siR-Y3ougBsV8mzdQXChxg6ghz_KVXFQ3pE,998
22
23
  StreamingCommunity/Api/Site/animeunity/serie.py,sha256=ib86sLXYsYbrvrFNbzKdhlwMUO3DT7JS5yTTrrSr2jk,5711
23
- StreamingCommunity/Api/Site/animeunity/site.py,sha256=KLBQ08TAMyzsrZ3SAxw8hZefreCtZAuU1KwEbaJnUAE,5646
24
- StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py,sha256=9q108tS2St3ogR73nGZhMlCTHoZH-taE_CTBC6LY6d0,3374
24
+ StreamingCommunity/Api/Site/animeunity/site.py,sha256=iRFMUdtHricrc09gmVS1kUOQ-EqH_8zafh8ag4HHiUA,5672
25
+ StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py,sha256=Ze6a8D2MRhiOvSw3mTpL3ue2iVc6pA5aqoyUMCTnT7A,3809
25
26
  StreamingCommunity/Api/Site/animeworld/__init__.py,sha256=UzHQbfxx_i6qzM586LL940CoiI3Y98IGIVP4-hXUxn4,2790
26
27
  StreamingCommunity/Api/Site/animeworld/film.py,sha256=W9KOS9Wvx3Mlqx5WojR-NgnF9WX8mI79JZPS7UwG-dc,1763
27
28
  StreamingCommunity/Api/Site/animeworld/serie.py,sha256=MXyV1fK05jPW4iV9NWrRKW-R4ect-TSN78-2APayniU,3516
28
- StreamingCommunity/Api/Site/animeworld/site.py,sha256=1Ah4CmKXdqsoCGTbyPRSVJRAxtcW449kpBnPKnzR1K8,3650
29
+ StreamingCommunity/Api/Site/animeworld/site.py,sha256=-I70fk2IKWeGuS_3WPM4G2ZrmheKIMChgv2I2kWW0Es,3655
29
30
  StreamingCommunity/Api/Site/animeworld/util/ScrapeSerie.py,sha256=CBTCH_wnTXUK_MKwq9a1k_XdvOlUrMpbUmpkD5fXVQ0,3589
30
- StreamingCommunity/Api/Site/cb01new/__init__.py,sha256=fy0dPL0NnZxSz3UL_i_zE809Rus7-ZI60WsXq9S4NUs,2039
31
- StreamingCommunity/Api/Site/cb01new/film.py,sha256=vjd1ftm4LhxxG0TTKEwlOXtx0AYgxBbV5ZlQH8aSxGU,1695
32
- StreamingCommunity/Api/Site/cb01new/site.py,sha256=ROT3yh6mpC85qHJAvPkWply91tFd8-V7ayX_3KsdtR4,2152
33
31
  StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py,sha256=2FGeGNJ5SHPQzKEEmVMFWft4woGgJ-XLeNxjbSb6L9s,2141
34
32
  StreamingCommunity/Api/Site/ddlstreamitaly/series.py,sha256=F_D_2lwHHWN5hgLs8oUDNCYe-4SEPtWzJoU4yT_Nzfg,3726
35
- StreamingCommunity/Api/Site/ddlstreamitaly/site.py,sha256=hspimNOnIkLdJMrYLgXHmXepLz_mu8z257camnlGfaI,2596
33
+ StreamingCommunity/Api/Site/ddlstreamitaly/site.py,sha256=Rh0icHsYc9RIEkaRQspeKyaFSunADntIcAwvRcnqHjw,2601
36
34
  StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py,sha256=tETaN-2GyFBeRsoLnGw3Kz4D4j2TMcnPzGjzlC62w_Y,3655
37
35
  StreamingCommunity/Api/Site/guardaserie/__init__.py,sha256=p5hzqshw5hwDl9nJ8FBWbzfPe2j7c5eNYiaftDThGcU,2768
38
36
  StreamingCommunity/Api/Site/guardaserie/series.py,sha256=U9rMZCjRqHLFjo468vikxl-2RqO6DCJjebB-G8Y6LDg,6492
39
- StreamingCommunity/Api/Site/guardaserie/site.py,sha256=DrtHD365Ezh3GGcluvTIJxWYSjhaJpiY1w6pg4M1odw,2321
37
+ StreamingCommunity/Api/Site/guardaserie/site.py,sha256=6PPp6qykuKZ3Sa2uY7E1xTwh1-8vHINsEpokGnathmw,2326
40
38
  StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py,sha256=_aXU-YcUtSwbC2b6QpNnWDZR8m6vp9xzBEx_zdu5tgI,4196
41
39
  StreamingCommunity/Api/Site/raiplay/__init__.py,sha256=xkxVkFsSxA6DHRqPuzQYXnCVNUBhfUG5xxlz6iwf1mw,3132
42
40
  StreamingCommunity/Api/Site/raiplay/film.py,sha256=wBv5kQXx7-aCKhAZ5LABZ8zUzu_jPGdXOl9OM2p8dpY,1982
43
41
  StreamingCommunity/Api/Site/raiplay/series.py,sha256=uQVbeA_g3Z1Ciqeq99gsY2F8mC5DssH3ueGbCW8gd9Q,6161
44
- StreamingCommunity/Api/Site/raiplay/site.py,sha256=FtIR_oT-ag1sh5XnaOAhEOE8biHZmXtZnsFAjKszU8U,5154
42
+ StreamingCommunity/Api/Site/raiplay/site.py,sha256=0s1yHhEIA-JJVb2uVe_SZKILx7TIisadZmov7ZhG28s,5160
45
43
  StreamingCommunity/Api/Site/raiplay/util/ScrapeSerie.py,sha256=5F6abToCTtsvW8iIACbChZ0fPlymJiCSF_y8FRsDu7M,5002
46
44
  StreamingCommunity/Api/Site/streamingcommunity/__init__.py,sha256=Ej-xZ6x99zeq3p5O7-e_Evi_529x3eq_VryBLejCBiA,3796
47
45
  StreamingCommunity/Api/Site/streamingcommunity/film.py,sha256=TPt0yB1DKShDIz_1OEVG1IolMoAKBOaWIZ8lQF61dfM,2575
48
- StreamingCommunity/Api/Site/streamingcommunity/series.py,sha256=jWwgawBovZkL7pafvd55L68AMAy7ZyvCPNZdh72bqq8,8859
49
- StreamingCommunity/Api/Site/streamingcommunity/site.py,sha256=nKII_DjKN1ePeYdMn4titYgvPRMbm8PmEXIM6npGkeI,3129
46
+ StreamingCommunity/Api/Site/streamingcommunity/series.py,sha256=zDvmxGHvljpyX82CSE88Zf7EIYtuXAxLDkk0qUTBRdA,8860
47
+ StreamingCommunity/Api/Site/streamingcommunity/site.py,sha256=GlkxDJH5QezpLoPKRZhLE3ovX4G4ZbsBf5yVG7zbQYw,3134
50
48
  StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py,sha256=3sNz9uD-o9xz0dKpSnQsLPC_45v5fnW9Mzas2rQ8-Uc,5579
49
+ StreamingCommunity/Api/Site/streamingwatch/__init__.py,sha256=Y6YsO6m52mKCj0AUXRmBY__zpNmSklWl32U0c7o5yIQ,3544
50
+ StreamingCommunity/Api/Site/streamingwatch/film.py,sha256=QWE4e7Z9c0oTidP76cZPWdOKFU77_RbMXOHOlLRtPFk,1664
51
+ StreamingCommunity/Api/Site/streamingwatch/series.py,sha256=HF4SykhaOathLeCbYrRd1-BdCg30pDRQRCI43FnM2ck,6233
52
+ StreamingCommunity/Api/Site/streamingwatch/site.py,sha256=tFPQTjT9AwZuAh3Z-cn110Xb1snEh4CCNv8Zuc1Vch8,3250
53
+ StreamingCommunity/Api/Site/streamingwatch/util/ScrapeSerie.py,sha256=tEiwL7R5wI8F9ZLOiI-E7pEh72UJaNtswCjhx_wRlBY,4300
51
54
  StreamingCommunity/Api/Template/__init__.py,sha256=oyfd_4_g5p5q6mxb_rKwSsudZnTM3W3kg1tLwxg-v-Q,46
52
55
  StreamingCommunity/Api/Template/config_loader.py,sha256=2RT_0mqQmWzXM4rYaqss-yhXztYAcfNkTalFPjzv270,2056
53
56
  StreamingCommunity/Api/Template/site.py,sha256=BJjQktdu2q2pkGflJv3UdrpSEmzJCJnaT-u-jD5zhgs,2861
@@ -68,24 +71,25 @@ StreamingCommunity/Lib/M3U8/decryptor.py,sha256=kuxxsd3eN0VGRrMJWXzHo8gCpT0u3fSZ
68
71
  StreamingCommunity/Lib/M3U8/estimator.py,sha256=8gwTxJ3poRqZdHUTD9_oqXegiPWSXFuqLmqCZBnXS8A,5893
69
72
  StreamingCommunity/Lib/M3U8/parser.py,sha256=cSjXPOSgTewrfLgREyQ47wzoOeoYo3L4lOfEWZKxad8,22485
70
73
  StreamingCommunity/Lib/M3U8/url_fixer.py,sha256=zldE4yOuNBV6AAvL1KI6p7XdRI_R5YZRscbDgT1564M,1735
74
+ StreamingCommunity/Lib/Proxies/proxy.py,sha256=76O8VYg4TLH17ylqEySeXBjSKLpJ11ZjTwifTib5ft8,9349
71
75
  StreamingCommunity/Lib/TMBD/__init__.py,sha256=XzE42tw3Ws59DD1PF8WmGtZ0D4D7Hk3Af8QthNE-22U,66
72
76
  StreamingCommunity/Lib/TMBD/obj_tmbd.py,sha256=dRSvJFS5yqmsBZcw2wqbStcBtXNjU_3n5czMyremAtU,1187
73
77
  StreamingCommunity/Lib/TMBD/tmdb.py,sha256=byg0EFnlmd9JeLvn1N9K3QkB1KEfeMuFa7OVfGqks1Y,10685
74
78
  StreamingCommunity/TelegramHelp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
79
  StreamingCommunity/TelegramHelp/telegram_bot.py,sha256=Qe1__aoK4PpDuing8JtWgdHzLee8LuYYyfeLNA7yADU,26307
76
80
  StreamingCommunity/Upload/update.py,sha256=mJTKUIOhC2j03sWXUK6oAZxHyObNP2r1fl3y0BC2jes,3351
77
- StreamingCommunity/Upload/version.py,sha256=w7FJx8AjjjVxIMxI1IxHS70oEvmUKg7KBImjlhijaMI,171
81
+ StreamingCommunity/Upload/version.py,sha256=JkfhUckV_-HFFWrZzhBGxqLfJSFCKABAXBxJNOYruyQ,171
78
82
  StreamingCommunity/Util/color.py,sha256=NvD0Eni-25oOOkY-szCEoc0lGvzQxyL7xhM0RE4EvUM,458
79
- StreamingCommunity/Util/config_json.py,sha256=xiE5JNw9HgbBdBqKhlywwWw1EnoyDdG47wcxFDTC8sA,24960
83
+ StreamingCommunity/Util/config_json.py,sha256=r31BJP67EItcI6GioEX7FJzmzM0mubmZ7M73mvZ9YWo,24801
80
84
  StreamingCommunity/Util/ffmpeg_installer.py,sha256=yRVIPwbh05tZ-duZmXkH0qasLNxaQCAT_E4cTP79Z3c,14890
81
85
  StreamingCommunity/Util/headers.py,sha256=TItkaFMx1GqsVNEIS3Tr0BGU5EHyF-HkZVliHORT3P8,308
82
86
  StreamingCommunity/Util/logger.py,sha256=9kGD6GmWj2pM8ADpJc85o7jm8DD0c5Aguqnq-9kmxos,3314
83
87
  StreamingCommunity/Util/message.py,sha256=SJaIPLvWeQqsIODVUKw3TgYRmBChovmlbcF6OUxqMI8,1425
84
88
  StreamingCommunity/Util/os.py,sha256=0AD2DYoan9dl1ZC1pjDoUM7D8sRa9p81cGdI-lP1OX4,14993
85
89
  StreamingCommunity/Util/table.py,sha256=Nw5PlsvfEIOQZWy5VhsU5OK3heuBXGwsqmLl0k8yQzc,9813
86
- streamingcommunity-3.0.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
87
- streamingcommunity-3.0.0.dist-info/METADATA,sha256=OwSAYErIcsUYH-VDC9VlXEpNByWJpCBCCZgC-vMu5UY,25012
88
- streamingcommunity-3.0.0.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
89
- streamingcommunity-3.0.0.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
90
- streamingcommunity-3.0.0.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
91
- streamingcommunity-3.0.0.dist-info/RECORD,,
90
+ streamingcommunity-3.0.2.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
91
+ streamingcommunity-3.0.2.dist-info/METADATA,sha256=YNS9YdPhsYFpd7TG5b42rg7nb9Qa4V4z8ajb2F8p7Hs,25692
92
+ streamingcommunity-3.0.2.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
93
+ streamingcommunity-3.0.2.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
94
+ streamingcommunity-3.0.2.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
95
+ streamingcommunity-3.0.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (79.0.0)
2
+ Generator: setuptools (80.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,140 +0,0 @@
1
- # 05.07.24
2
-
3
- import re
4
- import logging
5
-
6
-
7
- # External libraries
8
- import httpx
9
- import jsbeautifier
10
- from bs4 import BeautifulSoup
11
-
12
-
13
- # Internal utilities
14
- from StreamingCommunity.Util.config_json import config_manager
15
- from StreamingCommunity.Util.headers import get_userAgent
16
-
17
-
18
- # Variable
19
- MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
20
-
21
-
22
- class VideoSource:
23
- def __init__(self, url: str):
24
- """
25
- Sets up the video source with the provided URL.
26
-
27
- Parameters:
28
- - url (str): The URL of the video.
29
- """
30
- self.url = url
31
- self.redirect_url = None
32
- self.maxstream_url = None
33
- self.m3u8_url = None
34
- self.headers = {'user-agent': get_userAgent()}
35
-
36
- def get_redirect_url(self):
37
- """
38
- Sends a request to the initial URL and extracts the redirect URL.
39
- """
40
- try:
41
- response = httpx.get(self.url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
42
- response.raise_for_status()
43
-
44
- # Extract the redirect URL from the HTML
45
- soup = BeautifulSoup(response.text, "html.parser")
46
- self.redirect_url = soup.find("div", id="iframen1").get("data-src")
47
- logging.info(f"Redirect URL: {self.redirect_url}")
48
-
49
- return self.redirect_url
50
-
51
- except Exception as e:
52
- logging.error(f"Error parsing HTML: {e}")
53
- raise
54
-
55
- def get_maxstream_url(self):
56
- """
57
- Sends a request to the redirect URL and extracts the Maxstream URL.
58
- """
59
- try:
60
- response = httpx.get(self.redirect_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
61
- response.raise_for_status()
62
-
63
- # Extract the Maxstream URL from the HTML
64
- soup = BeautifulSoup(response.text, "html.parser")
65
- maxstream_url = soup.find("a")
66
-
67
- if maxstream_url is None:
68
-
69
- # If no anchor tag is found, try the alternative method
70
- logging.warning("Anchor tag not found. Trying the alternative method.")
71
- headers = {
72
- 'origin': 'https://stayonline.pro',
73
- 'user-agent': get_userAgent(),
74
- 'x-requested-with': 'XMLHttpRequest',
75
- }
76
-
77
- # Make request to stayonline api
78
- data = {'id': self.redirect_url.split("/")[-2], 'ref': ''}
79
- response = httpx.post('https://stayonline.pro/ajax/linkEmbedView.php', headers=headers, data=data)
80
- response.raise_for_status()
81
- uprot_url = response.json()['data']['value']
82
-
83
- # Retry getting maxtstream url
84
- response = httpx.get(uprot_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
85
- response.raise_for_status()
86
- soup = BeautifulSoup(response.text, "html.parser")
87
- maxstream_url = soup.find("a").get("href")
88
-
89
- else:
90
- maxstream_url = maxstream_url.get("href")
91
-
92
- self.maxstream_url = maxstream_url
93
- logging.info(f"Maxstream URL: {self.maxstream_url}")
94
-
95
- return self.maxstream_url
96
-
97
- except Exception as e:
98
- logging.error(f"Error during the request: {e}")
99
- raise
100
-
101
- def get_m3u8_url(self):
102
- """
103
- Sends a request to the Maxstream URL and extracts the .m3u8 file URL.
104
- """
105
- try:
106
- response = httpx.get(self.maxstream_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
107
- response.raise_for_status()
108
- soup = BeautifulSoup(response.text, "html.parser")
109
-
110
- # Iterate over all script tags in the HTML
111
- for script in soup.find_all("script"):
112
- if "eval(function(p,a,c,k,e,d)" in script.text:
113
-
114
- # Execute the script using
115
- data_js = jsbeautifier.beautify(script.text)
116
-
117
- # Extract the .m3u8 URL from the script's output
118
- match = re.search(r'sources:\s*\[\{\s*src:\s*"([^"]+)"', data_js)
119
-
120
- if match:
121
- self.m3u8_url = match.group(1)
122
- logging.info(f"M3U8 URL: {self.m3u8_url}")
123
- break
124
-
125
- else:
126
- logging.error("Failed to find M3U8 URL: No match found")
127
-
128
- return self.m3u8_url
129
-
130
- except Exception as e:
131
- logging.error(f"Error executing the Node.js script: {e}")
132
- raise
133
-
134
- def get_playlist(self):
135
- """
136
- Executes the entire flow to obtain the final .m3u8 file URL.
137
- """
138
- self.get_redirect_url()
139
- self.get_maxstream_url()
140
- return self.get_m3u8_url()
@@ -1,71 +0,0 @@
1
- # 09.06.24
2
-
3
- from urllib.parse import quote_plus
4
-
5
-
6
- # External library
7
- from rich.console import Console
8
- from rich.prompt import Prompt
9
-
10
-
11
- # Internal utilities
12
- from StreamingCommunity.Api.Template import get_select_title
13
- from StreamingCommunity.Api.Template.config_loader import site_constant
14
- from StreamingCommunity.Api.Template.Class.SearchType import MediaItem
15
-
16
-
17
- # Logic class
18
- from .site import title_search, media_search_manager, table_show_manager
19
- from .film import download_film
20
-
21
-
22
- # Variable
23
- indice = 4
24
- _useFor = "film"
25
- _priority = 0
26
- _engineDownload = "mp4"
27
-
28
- msg = Prompt()
29
- console = Console()
30
-
31
-
32
- def process_search_result(select_title):
33
- """
34
- Handles the search result and initiates the download for either a film or series.
35
- """
36
- # !!! ADD TYPE DONT WORK FOR SERIE
37
- download_film(select_title)
38
-
39
- def search(string_to_search: str = None, get_onlyDatabase: bool = False, direct_item: dict = None):
40
- """
41
- Main function of the application for search.
42
-
43
- Parameters:
44
- string_to_search (str, optional): String to search for
45
- get_onylDatabase (bool, optional): If True, return only the database object
46
- direct_item (dict, optional): Direct item to process (bypass search)
47
- """
48
- if direct_item:
49
- select_title = MediaItem(**direct_item)
50
- process_search_result(select_title)
51
- return
52
-
53
- if string_to_search is None:
54
- string_to_search = msg.ask(f"\n[purple]Insert word to search in [green]{site_constant.SITE_NAME}").strip()
55
-
56
- # Search on database
57
- len_database = title_search(quote_plus(string_to_search))
58
-
59
- ## If only the database is needed, return the manager
60
- if get_onlyDatabase:
61
- return media_search_manager
62
-
63
- if len_database > 0:
64
- select_title = get_select_title(table_show_manager, media_search_manager)
65
- process_search_result(select_title)
66
-
67
- else:
68
-
69
- # If no results are found, ask again
70
- console.print(f"\n[red]Nothing matching was found for[white]: [purple]{string_to_search}")
71
- search()
@@ -1,81 +0,0 @@
1
- # 03.07.24
2
-
3
- import sys
4
-
5
-
6
- # External libraries
7
- import httpx
8
- from bs4 import BeautifulSoup
9
- from rich.console import Console
10
-
11
-
12
- # Internal utilities
13
- from StreamingCommunity.Util.config_json import config_manager
14
- from StreamingCommunity.Util.headers import get_userAgent
15
- from StreamingCommunity.Util.table import TVShowManager
16
-
17
-
18
- # Logic class
19
- from StreamingCommunity.Api.Template.config_loader import site_constant
20
- from StreamingCommunity.Api.Template.Class.SearchType import MediaManager
21
-
22
-
23
- # Variable
24
- console = Console()
25
- media_search_manager = MediaManager()
26
- table_show_manager = TVShowManager()
27
- max_timeout = config_manager.get_int("REQUESTS", "timeout")
28
-
29
-
30
- def title_search(query: str) -> int:
31
- """
32
- Search for titles based on a search query.
33
-
34
- Parameters:
35
- - query (str): The query to search for.
36
-
37
- Returns:
38
- - int: The number of titles found.
39
- """
40
- media_search_manager.clear()
41
- table_show_manager.clear()
42
-
43
- search_url = f"{site_constant.FULL_URL}/?s={query}"
44
- console.print(f"[cyan]Search url: [yellow]{search_url}")
45
-
46
- try:
47
- response = httpx.get(
48
- search_url,
49
- headers={'user-agent': get_userAgent()},
50
- timeout=max_timeout,
51
- follow_redirects=True,
52
- verify=False
53
- )
54
- response.raise_for_status()
55
-
56
- except Exception as e:
57
- console.print(f"Site: {site_constant.SITE_NAME}, request search error: {e}")
58
- return 0
59
-
60
- # Create soup and find table
61
- soup = BeautifulSoup(response.text, "html.parser")
62
-
63
- for card in soup.find_all("div", class_=["card", "mp-post", "horizontal"]):
64
- try:
65
- title_tag = card.find("h3", class_="card-title").find("a")
66
- url = title_tag.get("href")
67
- title = title_tag.get_text(strip=True)
68
-
69
- title_info = {
70
- 'name': title,
71
- 'url': url,
72
- 'type': 'film'
73
- }
74
-
75
- media_search_manager.add_media(title_info)
76
-
77
- except Exception as e:
78
- print(f"Error parsing a film entry: {e}")
79
-
80
- # Return the number of titles found
81
- return media_search_manager.get_length()