StreamingCommunity 2.8.0__py3-none-any.whl → 2.9.1__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 (23) hide show
  1. StreamingCommunity/Api/Player/supervideo.py +5 -14
  2. StreamingCommunity/Api/Site/1337xx/site.py +1 -1
  3. StreamingCommunity/Api/Site/animeunity/site.py +1 -1
  4. StreamingCommunity/Api/Site/cb01new/film.py +3 -5
  5. StreamingCommunity/Api/Site/cb01new/site.py +1 -1
  6. StreamingCommunity/Api/Site/ddlstreamitaly/site.py +1 -1
  7. StreamingCommunity/Api/Site/guardaserie/series.py +4 -7
  8. StreamingCommunity/Api/Site/guardaserie/site.py +1 -1
  9. StreamingCommunity/Api/Site/mostraguarda/film.py +3 -5
  10. StreamingCommunity/Api/Site/streamingcommunity/film.py +3 -5
  11. StreamingCommunity/Api/Site/streamingcommunity/series.py +3 -5
  12. StreamingCommunity/Api/Site/streamingcommunity/site.py +1 -1
  13. StreamingCommunity/Api/Template/Util/get_domain.py +3 -2
  14. StreamingCommunity/Lib/Downloader/HLS/downloader.py +5 -1
  15. StreamingCommunity/Lib/Downloader/MP4/downloader.py +13 -17
  16. StreamingCommunity/Lib/M3U8/parser.py +24 -10
  17. StreamingCommunity/Upload/version.py +1 -1
  18. {StreamingCommunity-2.8.0.dist-info → StreamingCommunity-2.9.1.dist-info}/METADATA +1 -1
  19. {StreamingCommunity-2.8.0.dist-info → StreamingCommunity-2.9.1.dist-info}/RECORD +23 -23
  20. {StreamingCommunity-2.8.0.dist-info → StreamingCommunity-2.9.1.dist-info}/LICENSE +0 -0
  21. {StreamingCommunity-2.8.0.dist-info → StreamingCommunity-2.9.1.dist-info}/WHEEL +0 -0
  22. {StreamingCommunity-2.8.0.dist-info → StreamingCommunity-2.9.1.dist-info}/entry_points.txt +0 -0
  23. {StreamingCommunity-2.8.0.dist-info → StreamingCommunity-2.9.1.dist-info}/top_level.txt +0 -0
@@ -12,7 +12,7 @@ from bs4 import BeautifulSoup
12
12
 
13
13
  # Internal utilities
14
14
  from StreamingCommunity.Util.config_json import config_manager
15
- from StreamingCommunity.Util.headers import get_userAgent
15
+ from StreamingCommunity.Util.headers import get_headers
16
16
 
17
17
 
18
18
  # Variable
@@ -27,11 +27,7 @@ class VideoSource:
27
27
  Attributes:
28
28
  - url (str): The URL of the video source.
29
29
  """
30
- self.headers = {
31
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
32
- 'accept-language': 'it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7',
33
- 'User-Agent': get_userAgent()
34
- }
30
+ self.headers = get_headers()
35
31
  self.client = httpx.Client()
36
32
  self.url = url
37
33
 
@@ -66,7 +62,7 @@ class VideoSource:
66
62
  """
67
63
  iframes = soup.find_all("iframe")
68
64
  if iframes and len(iframes) > 1:
69
- return iframes[1].get("src")
65
+ return iframes[0].get("src") or iframes[0].get("data-src")
70
66
 
71
67
  return None
72
68
 
@@ -115,13 +111,8 @@ class VideoSource:
115
111
  logging.error("Failed to fetch HTML content.")
116
112
  return None
117
113
 
118
- soup = BeautifulSoup(html_content, "html.parser")
119
- if not soup:
120
- logging.error("Failed to parse HTML content.")
121
- return None
122
-
123
114
  # Find master playlist
124
- data_js = self.get_result_node_js(soup)
115
+ data_js = self.get_result_node_js(BeautifulSoup(html_content, "html.parser"))
125
116
 
126
117
  if data_js is not None:
127
118
  match = re.search(r'sources:\s*\[\{\s*file:\s*"([^"]+)"', data_js)
@@ -131,7 +122,7 @@ class VideoSource:
131
122
 
132
123
  else:
133
124
 
134
- iframe_src = self.get_iframe(soup)
125
+ iframe_src = self.get_iframe(BeautifulSoup(html_content, "html.parser"))
135
126
  if not iframe_src:
136
127
  logging.error("No iframe found.")
137
128
  return None
@@ -41,7 +41,7 @@ def title_search(word_to_search: str) -> int:
41
41
  table_show_manager.clear()
42
42
 
43
43
  # Check if domain is working
44
- domain_to_use, base_url = search_domain(site_constant.SITE_NAME, site_constant.FULL_URL)
44
+ domain_to_use, base_url = search_domain(site_constant.FULL_URL)
45
45
 
46
46
  if domain_to_use is None or base_url is None:
47
47
  console.log("[bold red]Error: Unable to determine valid domain or base URL.[/bold red]")
@@ -111,7 +111,7 @@ def title_search(title: str) -> int:
111
111
  table_show_manager.clear()
112
112
 
113
113
  # Check if domain is working
114
- domain_to_use, base_url = search_domain(site_constant.SITE_NAME, site_constant.FULL_URL)
114
+ domain_to_use, base_url = search_domain(site_constant.FULL_URL)
115
115
 
116
116
  if domain_to_use is None or base_url is None:
117
117
  console.print("[bold red]Error: Unable to determine valid domain or base URL.[/bold red]")
@@ -55,10 +55,8 @@ def download_film(select_title: MediaItem) -> str:
55
55
  output_path=os.path.join(mp4_path, title_name)
56
56
  ).start()
57
57
 
58
- if "error" in r_proc.keys():
59
- try:
60
- os.remove(r_proc['path'])
61
- except:
62
- pass
58
+ if r_proc['error'] is not None:
59
+ try: os.remove(r_proc['path'])
60
+ except: pass
63
61
 
64
62
  return r_proc['path']
@@ -42,7 +42,7 @@ def title_search(word_to_search: str) -> int:
42
42
  table_show_manager.clear()
43
43
 
44
44
  # Check if domain is working
45
- domain_to_use, base_url = search_domain(site_constant.SITE_NAME, site_constant.FULL_URL)
45
+ domain_to_use, base_url = search_domain(site_constant.FULL_URL)
46
46
 
47
47
  if domain_to_use is None or base_url is None:
48
48
  console.print("[bold red]Error: Unable to determine valid domain or base URL.[/bold red]")
@@ -43,7 +43,7 @@ def title_search(word_to_search: str) -> int:
43
43
  table_show_manager.clear()
44
44
 
45
45
  # Check if domain is working
46
- domain_to_use, base_url = search_domain(site_constant.SITE_NAME, site_constant.FULL_URL)
46
+ domain_to_use, base_url = search_domain(site_constant.FULL_URL)
47
47
 
48
48
  if domain_to_use is None or base_url is None:
49
49
  console.print("[bold red]Error: Unable to determine valid domain or base URL.[/bold red]")
@@ -72,13 +72,10 @@ def download_video(index_season_selected: int, index_episode_selected: int, scap
72
72
  m3u8_url=master_playlist,
73
73
  output_path=os.path.join(mp4_path, mp4_name)
74
74
  ).start()
75
-
76
-
77
- if "error" in r_proc.keys():
78
- try:
79
- os.remove(r_proc['path'])
80
- except:
81
- pass
75
+
76
+ if r_proc['error'] is not None:
77
+ try: os.remove(r_proc['path'])
78
+ except: pass
82
79
 
83
80
  return r_proc['path'], r_proc['stopped']
84
81
 
@@ -42,7 +42,7 @@ def title_search(word_to_search: str) -> int:
42
42
  table_show_manager.clear()
43
43
 
44
44
  # Check if domain is working
45
- domain_to_use, base_url = search_domain(site_constant.SITE_NAME, site_constant.FULL_URL)
45
+ domain_to_use, base_url = search_domain(site_constant.FULL_URL)
46
46
 
47
47
  if domain_to_use is None or base_url is None:
48
48
  console.print("[bold red]Error: Unable to determine valid domain or base URL.[/bold red]")
@@ -86,10 +86,8 @@ def download_film(movie_details: Json_film) -> str:
86
86
  output_path=os.path.join(mp4_path, title_name)
87
87
  ).start()
88
88
 
89
- if "error" in r_proc.keys():
90
- try:
91
- os.remove(r_proc['path'])
92
- except:
93
- pass
89
+ if r_proc['error'] is not None:
90
+ try: os.remove(r_proc['path'])
91
+ except: pass
94
92
 
95
93
  return r_proc['path']
@@ -80,10 +80,8 @@ def download_film(select_title: MediaItem) -> str:
80
80
  if script_id != "unknown":
81
81
  TelegramSession.deleteScriptId(script_id)
82
82
 
83
- if "error" in r_proc.keys():
84
- try:
85
- os.remove(r_proc['path'])
86
- except:
87
- pass
83
+ if r_proc['error'] is not None:
84
+ try: os.remove(r_proc['path'])
85
+ except: pass
88
86
 
89
87
  return r_proc['path']
@@ -86,11 +86,9 @@ def download_video(index_season_selected: int, index_episode_selected: int, scra
86
86
  output_path=os.path.join(mp4_path, mp4_name)
87
87
  ).start()
88
88
 
89
- if "error" in r_proc.keys():
90
- try:
91
- os.remove(r_proc['path'])
92
- except:
93
- pass
89
+ if r_proc['error'] is not None:
90
+ try: os.remove(r_proc['path'])
91
+ except: pass
94
92
 
95
93
  return r_proc['path'], r_proc['stopped']
96
94
 
@@ -38,7 +38,7 @@ def title_search(title_search: str) -> int:
38
38
  Returns:
39
39
  int: The number of titles found.
40
40
  """
41
- domain_to_use, base_url = search_domain(site_constant.SITE_NAME, site_constant.FULL_URL)
41
+ domain_to_use, base_url = search_domain(site_constant.FULL_URL)
42
42
 
43
43
  if domain_to_use is None or base_url is None:
44
44
  console.print("[bold red]Error: Unable to determine valid domain or base URL.[/bold red]")
@@ -67,7 +67,8 @@ def validate_url(url, base_url):
67
67
  return False, None
68
68
 
69
69
  client = httpx.Client(
70
- verify=VERIFY,
70
+ http1=True,
71
+ verify=certifi.where(),
71
72
  headers=get_headers(),
72
73
  timeout=MAX_TIMEOUT
73
74
  )
@@ -82,7 +83,7 @@ def validate_url(url, base_url):
82
83
 
83
84
  return True, base_domain
84
85
 
85
- def search_domain(site_name: str, base_url: str, get_first: bool = False):
86
+ def search_domain(base_url: str):
86
87
  """Search for valid domain matching site name and base URL."""
87
88
  try:
88
89
  is_correct, redirect_tld = validate_url(base_url, base_url)
@@ -429,7 +429,8 @@ class HLS_Downloader:
429
429
  'path': self.path_manager.output_path,
430
430
  'url': self.m3u8_url,
431
431
  'is_master': False,
432
- 'error': 'File already exists',
432
+ 'msg': 'File already exists',
433
+ 'error': None,
433
434
  'stopped': False
434
435
  }
435
436
  if TELEGRAM_BOT:
@@ -473,6 +474,8 @@ class HLS_Downloader:
473
474
  'path': self.path_manager.output_path,
474
475
  'url': self.m3u8_url,
475
476
  'is_master': self.m3u8_manager.is_master,
477
+ 'msg': None,
478
+ 'error': None,
476
479
  'stopped': download_stopped
477
480
  }
478
481
 
@@ -485,6 +488,7 @@ class HLS_Downloader:
485
488
  'path': None,
486
489
  'url': self.m3u8_url,
487
490
  'is_master': getattr(self.m3u8_manager, 'is_master', None),
491
+ 'msg': None,
488
492
  'error': error_msg,
489
493
  'stopped': False
490
494
  }
@@ -84,7 +84,7 @@ def MP4_downloader(url: str, path: str, referer: str = None, headers_: dict = No
84
84
  console.log("[red]Output file already exists.")
85
85
  if TELEGRAM_BOT:
86
86
  bot.send_message(f"Contenuto già scaricato!", None)
87
- return 400
87
+ return None, False
88
88
 
89
89
  if GET_ONLY_LINK:
90
90
  return {'path': path, 'url': url}
@@ -92,23 +92,19 @@ def MP4_downloader(url: str, path: str, referer: str = None, headers_: dict = No
92
92
  if not (url.lower().startswith('http://') or url.lower().startswith('https://')):
93
93
  logging.error(f"Invalid URL: {url}")
94
94
  console.print(f"[bold red]Invalid URL: {url}[/bold red]")
95
- return None
95
+ return None, False
96
96
 
97
- try:
98
- headers = {}
99
- if referer:
100
- headers['Referer'] = referer
101
-
102
- if headers_:
103
- headers.update(headers_)
104
- else:
105
- headers['User-Agent'] = get_userAgent()
106
-
107
- except Exception as header_err:
108
- logging.error(f"Error preparing headers: {header_err}")
109
- console.print(f"[bold red]Error preparing headers: {header_err}[/bold red]")
110
- return None
97
+ # Set headers
98
+ headers = {}
99
+ if referer:
100
+ headers['Referer'] = referer
111
101
 
102
+ if headers_:
103
+ headers.update(headers_)
104
+ else:
105
+ headers['User-Agent'] = get_userAgent()
106
+
107
+ # Set interrupt handler
112
108
  temp_path = f"{path}.temp"
113
109
  interrupt_handler = InterruptHandler()
114
110
  original_handler = signal.signal(signal.SIGINT, partial(signal_handler, interrupt_handler=interrupt_handler, original_handler=signal.getsignal(signal.SIGINT)))
@@ -123,7 +119,7 @@ def MP4_downloader(url: str, path: str, referer: str = None, headers_: dict = No
123
119
 
124
120
  if total == 0:
125
121
  console.print("[bold red]No video stream found.[/bold red]")
126
- return None
122
+ return None, False
127
123
 
128
124
  progress_bar = tqdm(
129
125
  total=total,
@@ -503,25 +503,35 @@ class M3U8_Parser:
503
503
  except Exception as e:
504
504
  logging.error(f"Error parsing video info: {e}")
505
505
 
506
- def __parse_encryption_keys__(self, m3u8_obj) -> None:
506
+ def __parse_encryption_keys__(self, obj) -> None:
507
507
  """
508
- Extracts encryption keys from the M3U8 object.
508
+ Extracts encryption keys either from the M3U8 object or from individual segments.
509
509
 
510
510
  Parameters:
511
- - m3u8_obj: The M3U8 object containing encryption keys.
511
+ - obj: Either the main M3U8 object or an individual segment.
512
512
  """
513
513
  try:
514
- if m3u8_obj.key is not None:
514
+ if hasattr(obj, 'key') and obj.key is not None:
515
+ key_info = {
516
+ 'method': obj.key.method,
517
+ 'iv': obj.key.iv,
518
+ 'uri': obj.key.uri
519
+ }
520
+
515
521
  if self.keys is None:
516
- self.keys = {
517
- 'method': m3u8_obj.key.method,
518
- 'iv': m3u8_obj.key.iv,
519
- 'uri': m3u8_obj.key.uri
520
- }
522
+ self.keys = key_info
523
+
524
+ """
525
+ elif obj.key.uri not in self.keys:
526
+ if isinstance(self.keys, dict):
527
+ self.keys[obj.key.uri] = key_info
528
+ else:
529
+ old_key = self.keys
530
+ self.keys = {'default': old_key, obj.key.uri: key_info}
531
+ """
521
532
 
522
533
  except Exception as e:
523
534
  logging.error(f"Error parsing encryption keys: {e}")
524
- sys.exit(0)
525
535
  pass
526
536
 
527
537
  def __parse_subtitles_and_audio__(self, m3u8_obj) -> None:
@@ -574,6 +584,10 @@ class M3U8_Parser:
574
584
  self.segments.append(segment.uri)
575
585
  else:
576
586
  self.subtitle.append(segment.uri)
587
+
588
+ # Second check if there is key in main m3u8 obj
589
+ if self.keys is None:
590
+ self.__parse_encryption_keys__(m3u8_obj)
577
591
 
578
592
  except Exception as e:
579
593
  logging.error(f"Error parsing segments: {e}")
@@ -1,5 +1,5 @@
1
1
  __title__ = 'StreamingCommunity'
2
- __version__ = '2.8.0'
2
+ __version__ = '2.9.1'
3
3
  __author__ = 'Arrowar'
4
4
  __description__ = 'A command-line program to download film'
5
5
  __copyright__ = 'Copyright 2024'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: StreamingCommunity
3
- Version: 2.8.0
3
+ Version: 2.9.1
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
@@ -2,46 +2,46 @@ StreamingCommunity/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
2
2
  StreamingCommunity/run.py,sha256=AbEL0cyAaRgaG5qE1c7Z6SVZ4Wu7WIH9pZmwC4FDWW8,12076
3
3
  StreamingCommunity/Api/Player/ddl.py,sha256=M_ePETCMBpIHr5K5Yb7EML5VXwqkR7vJHQcGIv4AEQw,2261
4
4
  StreamingCommunity/Api/Player/maxstream.py,sha256=lQ6sbhBqMR9e6N-03nWZ3qsUlRT9l68d8dTA0th1XVQ,4984
5
- StreamingCommunity/Api/Player/supervideo.py,sha256=OLbT8GNOT87ZSuBC5PbtbW8tiXzHK-Uttijqqp_Y06k,5297
5
+ StreamingCommunity/Api/Player/supervideo.py,sha256=owyoSkLDJwASNYQw77ZbJ5ptCXOFsAC5ghN-o0RaML0,5001
6
6
  StreamingCommunity/Api/Player/vixcloud.py,sha256=NOZhW59hyBnG5FfmppcnIudAztr7seWzQBzAN3KC_3M,6317
7
7
  StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py,sha256=U-8QlD5kGzIk3-4t4D6QyYmiDe8UBrSuVi1YHRQb7AU,4295
8
8
  StreamingCommunity/Api/Player/Helper/Vixcloud/util.py,sha256=xt96JIbfE5W4Y59W888Cp-baRwnQVEDQO_x7Wq5iyNQ,5492
9
9
  StreamingCommunity/Api/Site/1337xx/__init__.py,sha256=r0K84qeonGnk9bgbKklF6rJ1qhT1Si1MH2hnXnH_SIE,1378
10
- StreamingCommunity/Api/Site/1337xx/site.py,sha256=-XFLF7k5SXPnh07Jv4KxmSW4w8OSl4ci4oQeU_WTJoE,2672
10
+ StreamingCommunity/Api/Site/1337xx/site.py,sha256=u6a453wVy3vJrGcLlSUhErKzr63lv-o9cx36RjFpPRs,2647
11
11
  StreamingCommunity/Api/Site/1337xx/title.py,sha256=lGb-IbWEIfg9Eu3XIu6IfxTOjvXkFL_NO9UEZcxOAfE,1831
12
12
  StreamingCommunity/Api/Site/animeunity/__init__.py,sha256=Lz9trBzQZL11wGyIT2Y4CWe3JxOkDUPzTQXXO76s0oQ,2278
13
13
  StreamingCommunity/Api/Site/animeunity/film_serie.py,sha256=noYqH5NHUk_JO6GeqN7-PQy3tplDRKYWYI_cgT1SzqI,5771
14
- StreamingCommunity/Api/Site/animeunity/site.py,sha256=TtInV7gV6sZBWooiihKWdXogV_AjqfB-bo3ymbRt1S0,5937
14
+ StreamingCommunity/Api/Site/animeunity/site.py,sha256=7NX59B89xpZ6Tj96a_ZCsVMDwOq8fxdw81vrlnvNjn4,5912
15
15
  StreamingCommunity/Api/Site/animeunity/util/ScrapeSerie.py,sha256=6Vbw5KVwUbgooGjUIRAuXr9cWSkHDkAFP7EiXF2T4OM,2709
16
16
  StreamingCommunity/Api/Site/cb01new/__init__.py,sha256=yOfCNYZU5M5rCvNtwvyTgGjJv7qGmNWRAzk0AtAgbhU,1393
17
- StreamingCommunity/Api/Site/cb01new/film.py,sha256=Pqyu4jq3264JzKfSGiHqibBgF29LriDjS752PYbsoIo,1649
18
- StreamingCommunity/Api/Site/cb01new/site.py,sha256=PaBBkydddvajDesutjLZPmk5zWs_EDhg6uZnq8TIO5U,2548
17
+ StreamingCommunity/Api/Site/cb01new/film.py,sha256=trrEGcklB6FhqpJvGaEwHI0EThK__e9O6DuknKAFNHw,1628
18
+ StreamingCommunity/Api/Site/cb01new/site.py,sha256=q9bHKgHkXWE0vOcfQ9bKU0QDzbLassfSN2im2O4EYiI,2523
19
19
  StreamingCommunity/Api/Site/ddlstreamitaly/__init__.py,sha256=_tQbsAJgZufjszrFZ0Om3ia6oYJHMjiHfXAMScqf4yQ,1533
20
20
  StreamingCommunity/Api/Site/ddlstreamitaly/series.py,sha256=z3te51do5C_O77rDTR1N01aQ76BIGe5pm5i_PWJepQ4,3369
21
- StreamingCommunity/Api/Site/ddlstreamitaly/site.py,sha256=N-SF9nr09tBVVbzigwijTSr4ffRmuKOyNak6vy4g3cw,2938
21
+ StreamingCommunity/Api/Site/ddlstreamitaly/site.py,sha256=_I4fZuzE5DnwAGOBOJK_IYW04RETwl3N2J0FUJAjQqg,2913
22
22
  StreamingCommunity/Api/Site/ddlstreamitaly/util/ScrapeSerie.py,sha256=HY8YEvzWp3sy1q07rFLXLZhGYvapA1amMZByYvs0iJM,2553
23
23
  StreamingCommunity/Api/Site/guardaserie/__init__.py,sha256=ZR9Fz6v2cS2Ve8BfAlvTNK-d5_Xwp5_eqrnFupgxj5Q,1385
24
- StreamingCommunity/Api/Site/guardaserie/series.py,sha256=YNCr8ywqW1dmH8hkAQbYDMbwWB-i8CZSx2glXDxs18o,5694
25
- StreamingCommunity/Api/Site/guardaserie/site.py,sha256=nXqpYyWQVAZlGtwfR_IL9T2DO-APCkZ-clYIEip9_bc,2563
24
+ StreamingCommunity/Api/Site/guardaserie/series.py,sha256=52OjjItPuVglqlpFFVeJiSXrUL5WFhC-GfyRo7yWnsM,5665
25
+ StreamingCommunity/Api/Site/guardaserie/site.py,sha256=5Y5svAT4QYZrNDPM9couf6M94g0g320NfoAuJt4dp94,2538
26
26
  StreamingCommunity/Api/Site/guardaserie/util/ScrapeSerie.py,sha256=4sZRWm8r5X80q285hemRf7MAWeaN5yfOU6i1SjKU4Tg,3268
27
27
  StreamingCommunity/Api/Site/mostraguarda/__init__.py,sha256=rsM2_7FmwyV3ibUbpcflk-eyH8ouBv0ZdCA5tCCVB70,1234
28
- StreamingCommunity/Api/Site/mostraguarda/film.py,sha256=UvhAoU6NHhgpETqbLiQlw4GTbc_fK7_2FwMxEhrWUf0,2740
28
+ StreamingCommunity/Api/Site/mostraguarda/film.py,sha256=dA7Vo9bU7g8eY8Vaj06_n2MHlKBMHh4B_MIw2sO872A,2719
29
29
  StreamingCommunity/Api/Site/streamingcommunity/__init__.py,sha256=FV3ch-farw3tN_-Ay3JV_-TIoHzgQzxEJWPlFibE62Y,2351
30
- StreamingCommunity/Api/Site/streamingcommunity/film.py,sha256=qeNj542UvuOH4ucZ1wuGOLAO8zOUV1okZTZKh1xjQ1c,2551
31
- StreamingCommunity/Api/Site/streamingcommunity/series.py,sha256=Z1CQpue963yfkr7sDQm-8yCS7jISJiSYJCsuk0Em-Qs,7942
32
- StreamingCommunity/Api/Site/streamingcommunity/site.py,sha256=o_xhIxG23Q8klL0o6Yk2DOuJNDKTJGd2EOsPWOwR6Pc,2998
30
+ StreamingCommunity/Api/Site/streamingcommunity/film.py,sha256=LaZzEQms9t7r30_PjHPgIOUkVDyotX0qFDBMKMVNSWo,2530
31
+ StreamingCommunity/Api/Site/streamingcommunity/series.py,sha256=T4Yw-cjdQ8GsOLPJwd8iDIcTND1olg81MopsaSDd1Ik,7921
32
+ StreamingCommunity/Api/Site/streamingcommunity/site.py,sha256=OID6QB_WMydwVCYD0SupHpEP0VwHIBmwifwuIHW9HaE,2973
33
33
  StreamingCommunity/Api/Site/streamingcommunity/util/ScrapeSerie.py,sha256=YYetljW4yr6eoiLe6nDUuFZ9NI8K85tF6859ikITmsY,3571
34
34
  StreamingCommunity/Api/Template/__init__.py,sha256=oyfd_4_g5p5q6mxb_rKwSsudZnTM3W3kg1tLwxg-v-Q,46
35
35
  StreamingCommunity/Api/Template/config_loader.py,sha256=seJjLi05_8xrs4tdt4zXNCPa9TLp7n5FufFM2XErokI,2166
36
36
  StreamingCommunity/Api/Template/site.py,sha256=MJF8oc4iW29nU8SF_J94UaSjanTVBMhKiRl3xrA0qBA,2849
37
37
  StreamingCommunity/Api/Template/Class/SearchType.py,sha256=FtO8xDUGEeJgMWsK2Ab7ZzAFsncalTYL2oEYi8uCnuk,2531
38
38
  StreamingCommunity/Api/Template/Util/__init__.py,sha256=GZZgT816VwTYekPOwLExHenpak0gO-V3LLGTYIElt3A,234
39
- StreamingCommunity/Api/Template/Util/get_domain.py,sha256=VmBtv419J96qgceLlEecIG7Sw2EsPNM_YPcUMhxGXcE,2775
39
+ StreamingCommunity/Api/Template/Util/get_domain.py,sha256=tWQKWs5LJZna4a2P0IfxlSZDbZTDjiqq9SmHTbK-PyU,2763
40
40
  StreamingCommunity/Api/Template/Util/manage_ep.py,sha256=xYDC3tlx6gjQqCqcyKCfQVQeE6aWU5sdrovj8uuvbd8,8118
41
41
  StreamingCommunity/Lib/Downloader/__init__.py,sha256=JhbBh5hOnSM7VmtkxJ7zZ_FtWEC1JdnKThsSBjLV5FY,140
42
- StreamingCommunity/Lib/Downloader/HLS/downloader.py,sha256=I5YaQvLPsTmyYIjQaSftNN7Ybnz6Z881-y2aTKvU3XM,21046
42
+ StreamingCommunity/Lib/Downloader/HLS/downloader.py,sha256=h-44aunSdcCbG4CXPeZP2LWypA9T905E4RnTP4kSyZ0,21168
43
43
  StreamingCommunity/Lib/Downloader/HLS/segments.py,sha256=4D-B_KfwiQq6suMgJxL_aMrOqqX5RVc4Vy0Ktc7tFKM,17609
44
- StreamingCommunity/Lib/Downloader/MP4/downloader.py,sha256=MNiWiG0-KcYpc1oth6kr5EOM8pyfbOZrLGXW9FsQzGE,7617
44
+ StreamingCommunity/Lib/Downloader/MP4/downloader.py,sha256=KTNivIvVwn72rA34fNPxT5Q88u7IS3vHLn_Y_jdrZww,7434
45
45
  StreamingCommunity/Lib/Downloader/TOR/downloader.py,sha256=KVZxCl1VB1-OuTjUhVS5Ycog_P0vCGTfRzhZPv8O7Ps,11267
46
46
  StreamingCommunity/Lib/FFmpeg/__init__.py,sha256=6PBsZdE1jrD2EKOVyx3JEHnyDZzVeKlPkH5T0zyfOgU,130
47
47
  StreamingCommunity/Lib/FFmpeg/capture.py,sha256=73BEpTijksErZOu46iRxwl3idKzZ-sVXXRr4nocIGY0,5168
@@ -50,7 +50,7 @@ StreamingCommunity/Lib/FFmpeg/util.py,sha256=Yyo-z9TOPGFdD_VscWi35Kcw88y4loGNLpN
50
50
  StreamingCommunity/Lib/M3U8/__init__.py,sha256=H_KS2eDd3kVXMziFJnD0FCPvPHEizaqfoA36ElTv_r8,170
51
51
  StreamingCommunity/Lib/M3U8/decryptor.py,sha256=kuxxsd3eN0VGRrMJWXzHo8gCpT0u3fSZs_lwxlE5Fqs,2948
52
52
  StreamingCommunity/Lib/M3U8/estimator.py,sha256=5Qevboxu1h5Q-72bkHy0-Vess9pOIaUrpFYfBVWNDN8,5709
53
- StreamingCommunity/Lib/M3U8/parser.py,sha256=VmYgMF6d3Jr2ucuiRzv8NUJ79oPGc3cgp2VB19-dh0Y,20990
53
+ StreamingCommunity/Lib/M3U8/parser.py,sha256=xN16pQZSCN9mQl_s7OcuH07-mNgVMpAS_hERq6zp7XM,21558
54
54
  StreamingCommunity/Lib/M3U8/url_fixer.py,sha256=zldE4yOuNBV6AAvL1KI6p7XdRI_R5YZRscbDgT1564M,1735
55
55
  StreamingCommunity/Lib/TMBD/__init__.py,sha256=XzE42tw3Ws59DD1PF8WmGtZ0D4D7Hk3Af8QthNE-22U,66
56
56
  StreamingCommunity/Lib/TMBD/obj_tmbd.py,sha256=dRSvJFS5yqmsBZcw2wqbStcBtXNjU_3n5czMyremAtU,1187
@@ -58,7 +58,7 @@ StreamingCommunity/Lib/TMBD/tmdb.py,sha256=LjO21d7iexnSwKBYjgXFECojVSE8WCspQszJJ
58
58
  StreamingCommunity/TelegramHelp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
59
  StreamingCommunity/TelegramHelp/telegram_bot.py,sha256=Qe1__aoK4PpDuing8JtWgdHzLee8LuYYyfeLNA7yADU,26307
60
60
  StreamingCommunity/Upload/update.py,sha256=TXWAOfvZr1So_oME11YvX_L5zRy2tM-ijF-_g1jf87o,2548
61
- StreamingCommunity/Upload/version.py,sha256=7JR_YWMxvHLgem5ngwXtwhWFFHvfG9zxK5Y3CpJVHTU,171
61
+ StreamingCommunity/Upload/version.py,sha256=7zxploGPmBn4yRD_nqHbaaNTjsXjfVwEsD0XQTKoZp8,171
62
62
  StreamingCommunity/Util/color.py,sha256=NvD0Eni-25oOOkY-szCEoc0lGvzQxyL7xhM0RE4EvUM,458
63
63
  StreamingCommunity/Util/config_json.py,sha256=dmo7FTboEuEs1nYf17RYaTyT03qRvOLJzGgBitYHXs4,19379
64
64
  StreamingCommunity/Util/ffmpeg_installer.py,sha256=q5yb_ZXKe9PhcG7JbKLfo1AZa8DNukgHqymPbudDuAY,13585
@@ -67,9 +67,9 @@ StreamingCommunity/Util/logger.py,sha256=9kGD6GmWj2pM8ADpJc85o7jm8DD0c5Aguqnq-9k
67
67
  StreamingCommunity/Util/message.py,sha256=SJaIPLvWeQqsIODVUKw3TgYRmBChovmlbcF6OUxqMI8,1425
68
68
  StreamingCommunity/Util/os.py,sha256=MUGJKQbNMWeoUrnJ2Ug3hoyYlrPDqU9BY94UmiUbxfA,14858
69
69
  StreamingCommunity/Util/table.py,sha256=X1t9VPYl9GemLMk_-x_WfpysQ-3Iv8vh0aTIJKm0fK0,8565
70
- StreamingCommunity-2.8.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
71
- StreamingCommunity-2.8.0.dist-info/METADATA,sha256=qyKRC4btZchkSAPdZDkuL0jU-PiGzpykRNpDMBg7Xu4,21498
72
- StreamingCommunity-2.8.0.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
73
- StreamingCommunity-2.8.0.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
74
- StreamingCommunity-2.8.0.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
75
- StreamingCommunity-2.8.0.dist-info/RECORD,,
70
+ StreamingCommunity-2.9.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
71
+ StreamingCommunity-2.9.1.dist-info/METADATA,sha256=3FfkiFkbxuqlPg_CUvgg3eQs2mKLkH9bFaAfjiIXUOs,21498
72
+ StreamingCommunity-2.9.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
73
+ StreamingCommunity-2.9.1.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
74
+ StreamingCommunity-2.9.1.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
75
+ StreamingCommunity-2.9.1.dist-info/RECORD,,