StreamingCommunity 1.7.6__py3-none-any.whl → 1.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 (101) hide show
  1. StreamingCommunity/{Src/Api → Api}/Player/Helper/Vixcloud/js_parser.py +4 -1
  2. StreamingCommunity/{Src/Api → Api}/Player/Helper/Vixcloud/util.py +166 -166
  3. StreamingCommunity/{Src/Api → Api}/Player/ddl.py +89 -89
  4. StreamingCommunity/{Src/Api → Api}/Player/maxstream.py +151 -151
  5. StreamingCommunity/{Src/Api → Api}/Player/supervideo.py +193 -193
  6. StreamingCommunity/{Src/Api → Api}/Player/vixcloud.py +224 -212
  7. StreamingCommunity/{Src/Api → Api}/Site/1337xx/__init__.py +50 -50
  8. StreamingCommunity/{Src/Api → Api}/Site/1337xx/costant.py +15 -15
  9. StreamingCommunity/{Src/Api → Api}/Site/1337xx/site.py +83 -83
  10. StreamingCommunity/{Src/Api → Api}/Site/1337xx/title.py +66 -66
  11. StreamingCommunity/{Src/Api → Api}/Site/altadefinizione/__init__.py +50 -50
  12. StreamingCommunity/{Src/Api/Site/mostraguarda → Api/Site/altadefinizione}/costant.py +15 -15
  13. StreamingCommunity/{Src/Api → Api}/Site/altadefinizione/film.py +69 -69
  14. StreamingCommunity/{Src/Api → Api}/Site/altadefinizione/site.py +86 -86
  15. StreamingCommunity/{Src/Api → Api}/Site/animeunity/__init__.py +50 -50
  16. StreamingCommunity/{Src/Api/Site/altadefinizione → Api/Site/animeunity}/costant.py +15 -15
  17. StreamingCommunity/{Src/Api → Api}/Site/animeunity/film_serie.py +130 -131
  18. StreamingCommunity/{Src/Api → Api}/Site/animeunity/site.py +164 -164
  19. StreamingCommunity/{Src/Api → Api}/Site/animeunity/util/ScrapeSerie.py +3 -3
  20. StreamingCommunity/{Src/Api → Api}/Site/bitsearch/__init__.py +51 -51
  21. StreamingCommunity/{Src/Api → Api}/Site/bitsearch/costant.py +15 -15
  22. StreamingCommunity/{Src/Api → Api}/Site/bitsearch/site.py +84 -84
  23. StreamingCommunity/{Src/Api → Api}/Site/bitsearch/title.py +47 -47
  24. StreamingCommunity/{Src/Api → Api}/Site/cb01new/__init__.py +51 -51
  25. StreamingCommunity/{Src/Api → Api}/Site/cb01new/costant.py +15 -15
  26. StreamingCommunity/{Src/Api → Api}/Site/cb01new/film.py +69 -69
  27. StreamingCommunity/{Src/Api → Api}/Site/cb01new/site.py +74 -74
  28. StreamingCommunity/{Src/Api → Api}/Site/ddlstreamitaly/__init__.py +57 -57
  29. StreamingCommunity/{Src/Api → Api}/Site/ddlstreamitaly/costant.py +16 -16
  30. StreamingCommunity/{Src/Api → Api}/Site/ddlstreamitaly/series.py +141 -142
  31. StreamingCommunity/{Src/Api → Api}/Site/ddlstreamitaly/site.py +92 -92
  32. StreamingCommunity/{Src/Api → Api}/Site/ddlstreamitaly/util/ScrapeSerie.py +84 -82
  33. StreamingCommunity/{Src/Api → Api}/Site/guardaserie/__init__.py +52 -52
  34. StreamingCommunity/{Src/Api/Site/piratebays → Api/Site/guardaserie}/costant.py +15 -15
  35. StreamingCommunity/{Src/Api → Api}/Site/guardaserie/series.py +195 -195
  36. StreamingCommunity/{Src/Api → Api}/Site/guardaserie/site.py +84 -84
  37. StreamingCommunity/{Src/Api → Api}/Site/guardaserie/util/ScrapeSerie.py +110 -110
  38. StreamingCommunity/{Src/Api → Api}/Site/mostraguarda/__init__.py +48 -48
  39. StreamingCommunity/{Src/Api/Site/animeunity → Api/Site/mostraguarda}/costant.py +15 -15
  40. StreamingCommunity/{Src/Api → Api}/Site/mostraguarda/film.py +94 -94
  41. StreamingCommunity/{Src/Api → Api}/Site/piratebays/__init__.py +50 -50
  42. StreamingCommunity/{Src/Api/Site/guardaserie → Api/Site/piratebays}/costant.py +15 -15
  43. StreamingCommunity/{Src/Api → Api}/Site/piratebays/site.py +88 -88
  44. StreamingCommunity/{Src/Api → Api}/Site/piratebays/title.py +45 -45
  45. StreamingCommunity/{Src/Api → Api}/Site/streamingcommunity/__init__.py +55 -55
  46. StreamingCommunity/{Src/Api → Api}/Site/streamingcommunity/costant.py +15 -15
  47. StreamingCommunity/{Src/Api → Api}/Site/streamingcommunity/film.py +70 -70
  48. StreamingCommunity/{Src/Api → Api}/Site/streamingcommunity/series.py +205 -203
  49. StreamingCommunity/{Src/Api → Api}/Site/streamingcommunity/site.py +125 -125
  50. StreamingCommunity/{Src/Api → Api}/Site/streamingcommunity/util/ScrapeSerie.py +3 -3
  51. StreamingCommunity/{Src/Api → Api}/Template/Class/SearchType.py +101 -101
  52. StreamingCommunity/{Src/Api → Api}/Template/Util/__init__.py +4 -4
  53. StreamingCommunity/{Src/Api → Api}/Template/Util/get_domain.py +137 -137
  54. StreamingCommunity/{Src/Api → Api}/Template/Util/manage_ep.py +153 -153
  55. StreamingCommunity/{Src/Api → Api}/Template/Util/recall_search.py +37 -37
  56. StreamingCommunity/Api/Template/__init__.py +3 -0
  57. StreamingCommunity/{Src/Api → Api}/Template/site.py +87 -87
  58. StreamingCommunity/{Src/Lib → Lib}/Downloader/HLS/downloader.py +968 -968
  59. StreamingCommunity/{Src/Lib → Lib}/Downloader/HLS/proxyes.py +110 -110
  60. StreamingCommunity/{Src/Lib → Lib}/Downloader/HLS/segments.py +538 -540
  61. StreamingCommunity/{Src/Lib → Lib}/Downloader/MP4/downloader.py +156 -156
  62. StreamingCommunity/{Src/Lib → Lib}/Downloader/TOR/downloader.py +222 -222
  63. StreamingCommunity/{Src/Lib → Lib}/Downloader/__init__.py +4 -4
  64. StreamingCommunity/{Src/Lib → Lib}/Driver/driver_1.py +76 -76
  65. StreamingCommunity/{Src/Lib → Lib}/FFmpeg/__init__.py +4 -4
  66. StreamingCommunity/{Src/Lib → Lib}/FFmpeg/capture.py +170 -170
  67. StreamingCommunity/{Src/Lib → Lib}/FFmpeg/command.py +292 -292
  68. StreamingCommunity/{Src/Lib → Lib}/FFmpeg/util.py +241 -241
  69. StreamingCommunity/{Src/Lib → Lib}/M3U8/__init__.py +5 -5
  70. StreamingCommunity/{Src/Lib → Lib}/M3U8/decryptor.py +164 -129
  71. StreamingCommunity/{Src/Lib → Lib}/M3U8/estimator.py +175 -172
  72. StreamingCommunity/{Src/Lib → Lib}/M3U8/parser.py +666 -666
  73. StreamingCommunity/{Src/Lib → Lib}/M3U8/url_fixer.py +51 -51
  74. StreamingCommunity/Lib/TMBD/__init__.py +2 -0
  75. StreamingCommunity/{Src/Lib → Lib}/TMBD/obj_tmbd.py +39 -39
  76. StreamingCommunity/{Src/Lib → Lib}/TMBD/tmdb.py +345 -345
  77. StreamingCommunity/{Src/Upload → Upload}/update.py +68 -64
  78. StreamingCommunity/{Src/Upload → Upload}/version.py +5 -5
  79. StreamingCommunity/{Src/Util → Util}/_jsonConfig.py +204 -204
  80. StreamingCommunity/{Src/Util → Util}/call_stack.py +42 -42
  81. StreamingCommunity/{Src/Util → Util}/color.py +20 -20
  82. StreamingCommunity/{Src/Util → Util}/console.py +12 -12
  83. StreamingCommunity/Util/ffmpeg_installer.py +275 -0
  84. StreamingCommunity/{Src/Util → Util}/headers.py +147 -147
  85. StreamingCommunity/{Src/Util → Util}/logger.py +53 -53
  86. StreamingCommunity/{Src/Util → Util}/message.py +46 -46
  87. StreamingCommunity/{Src/Util → Util}/os.py +514 -417
  88. StreamingCommunity/{Src/Util → Util}/table.py +163 -163
  89. StreamingCommunity/run.py +202 -196
  90. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.9.1.dist-info}/METADATA +126 -60
  91. StreamingCommunity-1.9.1.dist-info/RECORD +95 -0
  92. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.9.1.dist-info}/WHEEL +1 -1
  93. StreamingCommunity/Src/Api/Site/animeunity/anime.py +0 -126
  94. StreamingCommunity/Src/Api/Site/ddlstreamitaly/Player/ScrapeSerie.py +0 -83
  95. StreamingCommunity/Src/Api/Site/guardaserie/Player/ScrapeSerie.py +0 -110
  96. StreamingCommunity/Src/Api/Template/__init__.py +0 -3
  97. StreamingCommunity/Src/Lib/TMBD/__init__.py +0 -2
  98. StreamingCommunity-1.7.6.dist-info/RECORD +0 -97
  99. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.9.1.dist-info}/LICENSE +0 -0
  100. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.9.1.dist-info}/entry_points.txt +0 -0
  101. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.9.1.dist-info}/top_level.txt +0 -0
@@ -1,170 +1,170 @@
1
- # 16.04.24
2
-
3
- import re
4
- import logging
5
- import threading
6
- import subprocess
7
-
8
-
9
- # Internal utilities
10
- from StreamingCommunity.Src.Util.console import console
11
- from StreamingCommunity.Src.Util.os import internet_manager
12
-
13
-
14
- # Variable
15
- terminate_flag = threading.Event()
16
-
17
-
18
- def capture_output(process: subprocess.Popen, description: str) -> None:
19
- """
20
- Function to capture and print output from a subprocess.
21
-
22
- Parameters:
23
- - process (subprocess.Popen): The subprocess whose output is captured.
24
- - description (str): Description of the command being executed.
25
- """
26
- try:
27
-
28
- # Variable to store the length of the longest progress string
29
- max_length = 0
30
-
31
- for line in iter(process.stdout.readline, ''):
32
- try:
33
- line = line.strip()
34
- if not line:
35
- continue
36
-
37
- logging.info(f"FFMPEG line: {line}")
38
-
39
- # Capture only error
40
- if "rror" in str(line):
41
- console.log(f"[red]FFMPEG: {str(line).strip()}")
42
-
43
- # Check if termination is requested
44
- if terminate_flag.is_set():
45
- break
46
-
47
- if "size=" in line:
48
- try:
49
-
50
- # Parse the output line to extract relevant information
51
- data = parse_output_line(line)
52
-
53
- if 'q' in data:
54
- is_end = (float(data.get('q', -1.0)) == -1.0)
55
- size_key = 'Lsize' if is_end else 'size'
56
- byte_size = int(re.findall(r'\d+', data.get(size_key, '0'))[0]) * 1000
57
- else:
58
- byte_size = int(re.findall(r'\d+', data.get('size', '0'))[0]) * 1000
59
-
60
-
61
- # Construct the progress string with formatted output information
62
- progress_string = (f"[yellow][FFmpeg] [white][{description}[white]]: "
63
- f"([green]'speed': [yellow]{data.get('speed', 'N/A')}[white], "
64
- f"[green]'size': [yellow]{internet_manager.format_file_size(byte_size)}[white])")
65
- max_length = max(max_length, len(progress_string))
66
-
67
- # Print the progress string to the console, overwriting the previous line
68
- console.print(progress_string.ljust(max_length), end="\r")
69
-
70
- except Exception as e:
71
- logging.error(f"Error parsing output line: {line} - {e}")
72
-
73
- except Exception as e:
74
- logging.error(f"Error processing line from subprocess: {e}")
75
-
76
- except Exception as e:
77
- logging.error(f"Error in capture_output: {e}")
78
-
79
- finally:
80
- try:
81
- terminate_process(process)
82
- except Exception as e:
83
- logging.error(f"Error terminating process: {e}")
84
-
85
-
86
- def parse_output_line(line: str) -> dict:
87
- """
88
- Function to parse the output line and extract relevant information.
89
-
90
- Parameters:
91
- - line (str): The output line to parse.
92
-
93
- Returns:
94
- dict: A dictionary containing parsed information.
95
- """
96
- try:
97
-
98
- data = {}
99
-
100
- # Split the line by whitespace and extract key-value pairs
101
- parts = line.replace(" ", "").replace("= ", "=").split()
102
-
103
- for part in parts:
104
- key_value = part.split('=')
105
-
106
- if len(key_value) == 2:
107
- key = key_value[0]
108
- value = key_value[1]
109
- data[key] = value
110
-
111
- return data
112
-
113
- except Exception as e:
114
- logging.error(f"Error parsing line: {line} - {e}")
115
- return {}
116
-
117
-
118
- def terminate_process(process):
119
- """
120
- Function to terminate a subprocess if it's still running.
121
-
122
- Parameters:
123
- - process (subprocess.Popen): The subprocess to terminate.
124
- """
125
- try:
126
- if process.poll() is None: # Check if the process is still running
127
- process.kill()
128
- except Exception as e:
129
- logging.error(f"Failed to terminate process: {e}")
130
-
131
-
132
- def capture_ffmpeg_real_time(ffmpeg_command: list, description: str) -> None:
133
- """
134
- Function to capture real-time output from ffmpeg process.
135
-
136
- Parameters:
137
- - ffmpeg_command (list): The command to execute ffmpeg.
138
- - description (str): Description of the command being executed.
139
- """
140
-
141
- global terminate_flag
142
-
143
- # Clear the terminate_flag before starting a new capture
144
- terminate_flag.clear()
145
-
146
- try:
147
-
148
- # Start the ffmpeg process with subprocess.Popen
149
- process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
150
-
151
- # Start a thread to capture and print output
152
- output_thread = threading.Thread(target=capture_output, args=(process, description))
153
- output_thread.start()
154
-
155
- try:
156
- # Wait for ffmpeg process to complete
157
- process.wait()
158
-
159
- except KeyboardInterrupt:
160
- logging.error("Terminating ffmpeg process...")
161
-
162
- except Exception as e:
163
- logging.error(f"Error in ffmpeg process: {e}")
164
-
165
- finally:
166
- terminate_flag.set() # Signal the output capture thread to terminate
167
- output_thread.join() # Wait for the output capture thread to complete
168
-
169
- except Exception as e:
170
- logging.error(f"Failed to start ffmpeg process: {e}")
1
+ # 16.04.24
2
+
3
+ import re
4
+ import logging
5
+ import threading
6
+ import subprocess
7
+
8
+
9
+ # Internal utilities
10
+ from StreamingCommunity.Util.console import console
11
+ from StreamingCommunity.Util.os import internet_manager
12
+
13
+
14
+ # Variable
15
+ terminate_flag = threading.Event()
16
+
17
+
18
+ def capture_output(process: subprocess.Popen, description: str) -> None:
19
+ """
20
+ Function to capture and print output from a subprocess.
21
+
22
+ Parameters:
23
+ - process (subprocess.Popen): The subprocess whose output is captured.
24
+ - description (str): Description of the command being executed.
25
+ """
26
+ try:
27
+
28
+ # Variable to store the length of the longest progress string
29
+ max_length = 0
30
+
31
+ for line in iter(process.stdout.readline, ''):
32
+ try:
33
+ line = line.strip()
34
+ if not line:
35
+ continue
36
+
37
+ logging.info(f"FFMPEG line: {line}")
38
+
39
+ # Capture only error
40
+ if "rror" in str(line):
41
+ console.log(f"[red]FFMPEG: {str(line).strip()}")
42
+
43
+ # Check if termination is requested
44
+ if terminate_flag.is_set():
45
+ break
46
+
47
+ if "size=" in line:
48
+ try:
49
+
50
+ # Parse the output line to extract relevant information
51
+ data = parse_output_line(line)
52
+
53
+ if 'q' in data:
54
+ is_end = (float(data.get('q', -1.0)) == -1.0)
55
+ size_key = 'Lsize' if is_end else 'size'
56
+ byte_size = int(re.findall(r'\d+', data.get(size_key, '0'))[0]) * 1000
57
+ else:
58
+ byte_size = int(re.findall(r'\d+', data.get('size', '0'))[0]) * 1000
59
+
60
+
61
+ # Construct the progress string with formatted output information
62
+ progress_string = (f"[yellow][FFmpeg] [white][{description}[white]]: "
63
+ f"([green]'speed': [yellow]{data.get('speed', 'N/A')}[white], "
64
+ f"[green]'size': [yellow]{internet_manager.format_file_size(byte_size)}[white])")
65
+ max_length = max(max_length, len(progress_string))
66
+
67
+ # Print the progress string to the console, overwriting the previous line
68
+ console.print(progress_string.ljust(max_length), end="\r")
69
+
70
+ except Exception as e:
71
+ logging.error(f"Error parsing output line: {line} - {e}")
72
+
73
+ except Exception as e:
74
+ logging.error(f"Error processing line from subprocess: {e}")
75
+
76
+ except Exception as e:
77
+ logging.error(f"Error in capture_output: {e}")
78
+
79
+ finally:
80
+ try:
81
+ terminate_process(process)
82
+ except Exception as e:
83
+ logging.error(f"Error terminating process: {e}")
84
+
85
+
86
+ def parse_output_line(line: str) -> dict:
87
+ """
88
+ Function to parse the output line and extract relevant information.
89
+
90
+ Parameters:
91
+ - line (str): The output line to parse.
92
+
93
+ Returns:
94
+ dict: A dictionary containing parsed information.
95
+ """
96
+ try:
97
+
98
+ data = {}
99
+
100
+ # Split the line by whitespace and extract key-value pairs
101
+ parts = line.replace(" ", "").replace("= ", "=").split()
102
+
103
+ for part in parts:
104
+ key_value = part.split('=')
105
+
106
+ if len(key_value) == 2:
107
+ key = key_value[0]
108
+ value = key_value[1]
109
+ data[key] = value
110
+
111
+ return data
112
+
113
+ except Exception as e:
114
+ logging.error(f"Error parsing line: {line} - {e}")
115
+ return {}
116
+
117
+
118
+ def terminate_process(process):
119
+ """
120
+ Function to terminate a subprocess if it's still running.
121
+
122
+ Parameters:
123
+ - process (subprocess.Popen): The subprocess to terminate.
124
+ """
125
+ try:
126
+ if process.poll() is None: # Check if the process is still running
127
+ process.kill()
128
+ except Exception as e:
129
+ logging.error(f"Failed to terminate process: {e}")
130
+
131
+
132
+ def capture_ffmpeg_real_time(ffmpeg_command: list, description: str) -> None:
133
+ """
134
+ Function to capture real-time output from ffmpeg process.
135
+
136
+ Parameters:
137
+ - ffmpeg_command (list): The command to execute ffmpeg.
138
+ - description (str): Description of the command being executed.
139
+ """
140
+
141
+ global terminate_flag
142
+
143
+ # Clear the terminate_flag before starting a new capture
144
+ terminate_flag.clear()
145
+
146
+ try:
147
+
148
+ # Start the ffmpeg process with subprocess.Popen
149
+ process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
150
+
151
+ # Start a thread to capture and print output
152
+ output_thread = threading.Thread(target=capture_output, args=(process, description))
153
+ output_thread.start()
154
+
155
+ try:
156
+ # Wait for ffmpeg process to complete
157
+ process.wait()
158
+
159
+ except KeyboardInterrupt:
160
+ logging.error("Terminating ffmpeg process...")
161
+
162
+ except Exception as e:
163
+ logging.error(f"Error in ffmpeg process: {e}")
164
+
165
+ finally:
166
+ terminate_flag.set() # Signal the output capture thread to terminate
167
+ output_thread.join() # Wait for the output capture thread to complete
168
+
169
+ except Exception as e:
170
+ logging.error(f"Failed to start ffmpeg process: {e}")