StreamingCommunity 3.1.0__py3-none-any.whl → 3.2.0__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.
- StreamingCommunity/Api/Player/ddl.py +4 -2
- StreamingCommunity/Api/Player/hdplayer.py +2 -1
- StreamingCommunity/Api/Player/maxstream.py +7 -7
- StreamingCommunity/Api/Player/mediapolisvod.py +4 -4
- StreamingCommunity/Api/Player/mixdrop.py +6 -5
- StreamingCommunity/Api/Player/supervideo.py +3 -2
- StreamingCommunity/Api/Player/sweetpixel.py +4 -3
- StreamingCommunity/Api/Player/vixcloud.py +6 -5
- StreamingCommunity/Lib/Downloader/HLS/segments.py +5 -4
- StreamingCommunity/Lib/Downloader/MP4/downloader.py +3 -3
- StreamingCommunity/Upload/update.py +1 -1
- StreamingCommunity/Upload/version.py +1 -1
- StreamingCommunity/Util/config_json.py +5 -7
- {streamingcommunity-3.1.0.dist-info → streamingcommunity-3.2.0.dist-info}/METADATA +1 -1
- {streamingcommunity-3.1.0.dist-info → streamingcommunity-3.2.0.dist-info}/RECORD +19 -19
- {streamingcommunity-3.1.0.dist-info → streamingcommunity-3.2.0.dist-info}/WHEEL +0 -0
- {streamingcommunity-3.1.0.dist-info → streamingcommunity-3.2.0.dist-info}/entry_points.txt +0 -0
- {streamingcommunity-3.1.0.dist-info → streamingcommunity-3.2.0.dist-info}/licenses/LICENSE +0 -0
- {streamingcommunity-3.1.0.dist-info → streamingcommunity-3.2.0.dist-info}/top_level.txt +0 -0
|
@@ -15,6 +15,7 @@ from StreamingCommunity.Util.headers import get_userAgent
|
|
|
15
15
|
|
|
16
16
|
# Variable
|
|
17
17
|
max_timeout = config_manager.get_int("REQUESTS", "timeout")
|
|
18
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class VideoSource:
|
|
@@ -41,7 +42,8 @@ class VideoSource:
|
|
|
41
42
|
url=url,
|
|
42
43
|
headers=self.headers,
|
|
43
44
|
cookies=self.cookie,
|
|
44
|
-
timeout=max_timeout
|
|
45
|
+
timeout=max_timeout,
|
|
46
|
+
verify=REQUEST_VERIFY
|
|
45
47
|
)
|
|
46
48
|
response.raise_for_status()
|
|
47
49
|
|
|
@@ -77,4 +79,4 @@ class VideoSource:
|
|
|
77
79
|
logging.error("Failed to retrieve content from the URL.")
|
|
78
80
|
|
|
79
81
|
except Exception as e:
|
|
80
|
-
logging.error(f"An error occurred while parsing the playlist: {e}")
|
|
82
|
+
logging.error(f"An error occurred while parsing the playlist: {e}")
|
|
@@ -14,11 +14,12 @@ from StreamingCommunity.Util.config_json import config_manager
|
|
|
14
14
|
|
|
15
15
|
# Variable
|
|
16
16
|
MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
|
|
17
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
17
18
|
|
|
18
19
|
|
|
19
20
|
class VideoSource:
|
|
20
21
|
def __init__(self, proxy=None):
|
|
21
|
-
self.client = httpx.Client(headers={'user-agent': get_userAgent()}, timeout=MAX_TIMEOUT, proxy=proxy)
|
|
22
|
+
self.client = httpx.Client(headers={'user-agent': get_userAgent()}, timeout=MAX_TIMEOUT, proxy=proxy, verify=REQUEST_VERIFY)
|
|
22
23
|
|
|
23
24
|
def extractLinkHdPlayer(self, response):
|
|
24
25
|
"""Extract iframe source from the page."""
|
|
@@ -18,7 +18,7 @@ from StreamingCommunity.Util.headers import get_userAgent
|
|
|
18
18
|
|
|
19
19
|
# Variable
|
|
20
20
|
MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
|
|
21
|
-
|
|
21
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
22
22
|
|
|
23
23
|
class VideoSource:
|
|
24
24
|
def __init__(self, url: str):
|
|
@@ -39,7 +39,7 @@ class VideoSource:
|
|
|
39
39
|
Sends a request to the initial URL and extracts the redirect URL.
|
|
40
40
|
"""
|
|
41
41
|
try:
|
|
42
|
-
response = httpx.get(self.url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
|
|
42
|
+
response = httpx.get(self.url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
43
43
|
response.raise_for_status()
|
|
44
44
|
|
|
45
45
|
# Extract the redirect URL from the HTML
|
|
@@ -58,7 +58,7 @@ class VideoSource:
|
|
|
58
58
|
Sends a request to the redirect URL and extracts the Maxstream URL.
|
|
59
59
|
"""
|
|
60
60
|
try:
|
|
61
|
-
response = httpx.get(self.redirect_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
|
|
61
|
+
response = httpx.get(self.redirect_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
62
62
|
response.raise_for_status()
|
|
63
63
|
|
|
64
64
|
# Extract the Maxstream URL from the HTML
|
|
@@ -77,12 +77,12 @@ class VideoSource:
|
|
|
77
77
|
|
|
78
78
|
# Make request to stayonline api
|
|
79
79
|
data = {'id': self.redirect_url.split("/")[-2], 'ref': ''}
|
|
80
|
-
response = httpx.post('https://stayonline.pro/ajax/linkEmbedView.php', headers=headers, data=data)
|
|
80
|
+
response = httpx.post('https://stayonline.pro/ajax/linkEmbedView.php', headers=headers, data=data, verify=REQUEST_VERIFY)
|
|
81
81
|
response.raise_for_status()
|
|
82
82
|
uprot_url = response.json()['data']['value']
|
|
83
83
|
|
|
84
84
|
# Retry getting maxtstream url
|
|
85
|
-
response = httpx.get(uprot_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
|
|
85
|
+
response = httpx.get(uprot_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
86
86
|
response.raise_for_status()
|
|
87
87
|
soup = BeautifulSoup(response.text, "html.parser")
|
|
88
88
|
maxstream_url = soup.find("a").get("href")
|
|
@@ -104,7 +104,7 @@ class VideoSource:
|
|
|
104
104
|
Sends a request to the Maxstream URL and extracts the .m3u8 file URL.
|
|
105
105
|
"""
|
|
106
106
|
try:
|
|
107
|
-
response = httpx.get(self.maxstream_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
|
|
107
|
+
response = httpx.get(self.maxstream_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
108
108
|
response.raise_for_status()
|
|
109
109
|
soup = BeautifulSoup(response.text, "html.parser")
|
|
110
110
|
|
|
@@ -138,4 +138,4 @@ class VideoSource:
|
|
|
138
138
|
"""
|
|
139
139
|
self.get_redirect_url()
|
|
140
140
|
self.get_maxstream_url()
|
|
141
|
-
return self.get_m3u8_url()
|
|
141
|
+
return self.get_m3u8_url()
|
|
@@ -12,7 +12,7 @@ from StreamingCommunity.Util.headers import get_headers
|
|
|
12
12
|
|
|
13
13
|
# Variable
|
|
14
14
|
MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
|
|
15
|
-
|
|
15
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
16
16
|
|
|
17
17
|
class VideoSource:
|
|
18
18
|
|
|
@@ -29,7 +29,7 @@ class VideoSource:
|
|
|
29
29
|
return "Error: Unable to determine video JSON URL"
|
|
30
30
|
|
|
31
31
|
try:
|
|
32
|
-
response = httpx.get(video_url, headers=get_headers(), timeout=MAX_TIMEOUT)
|
|
32
|
+
response = httpx.get(video_url, headers=get_headers(), timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
33
33
|
if response.status_code != 200:
|
|
34
34
|
return f"Error: Failed to fetch video data (Status: {response.status_code})"
|
|
35
35
|
|
|
@@ -50,7 +50,7 @@ class VideoSource:
|
|
|
50
50
|
'cont': element_key,
|
|
51
51
|
'output': '62',
|
|
52
52
|
}
|
|
53
|
-
stream_response = httpx.get('https://mediapolisvod.rai.it/relinker/relinkerServlet.htm', params=params, headers=get_headers(), timeout=MAX_TIMEOUT)
|
|
53
|
+
stream_response = httpx.get('https://mediapolisvod.rai.it/relinker/relinkerServlet.htm', params=params, headers=get_headers(), timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
54
54
|
|
|
55
55
|
if stream_response.status_code != 200:
|
|
56
56
|
return f"Error: Failed to fetch stream URL (Status: {stream_response.status_code})"
|
|
@@ -61,4 +61,4 @@ class VideoSource:
|
|
|
61
61
|
return m3u8_url
|
|
62
62
|
|
|
63
63
|
except Exception as e:
|
|
64
|
-
return f"Error: {str(e)}"
|
|
64
|
+
return f"Error: {str(e)}"
|
|
@@ -17,7 +17,7 @@ from StreamingCommunity.Util.headers import get_userAgent
|
|
|
17
17
|
|
|
18
18
|
# Variable
|
|
19
19
|
MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
|
|
20
|
-
|
|
20
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
21
21
|
|
|
22
22
|
class VideoSource:
|
|
23
23
|
STAYONLINE_BASE_URL = "https://stayonline.pro"
|
|
@@ -45,7 +45,7 @@ class VideoSource:
|
|
|
45
45
|
def get_redirect_url(self) -> str:
|
|
46
46
|
"""Extract the stayonline redirect URL from the initial page."""
|
|
47
47
|
try:
|
|
48
|
-
response = httpx.get(self.url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
|
|
48
|
+
response = httpx.get(self.url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
49
49
|
response.raise_for_status()
|
|
50
50
|
soup = BeautifulSoup(response.text, "html.parser")
|
|
51
51
|
|
|
@@ -68,7 +68,7 @@ class VideoSource:
|
|
|
68
68
|
raise ValueError("Redirect URL not set. Call get_redirect_url first.")
|
|
69
69
|
|
|
70
70
|
try:
|
|
71
|
-
response = httpx.get(self.redirect_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT)
|
|
71
|
+
response = httpx.get(self.redirect_url, headers=self.headers, follow_redirects=True, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
72
72
|
response.raise_for_status()
|
|
73
73
|
soup = BeautifulSoup(response.text, "html.parser")
|
|
74
74
|
|
|
@@ -89,7 +89,7 @@ class VideoSource:
|
|
|
89
89
|
self.headers['referer'] = f'{self.STAYONLINE_BASE_URL}/l/{link_id}/'
|
|
90
90
|
data = {'id': link_id, 'ref': ''}
|
|
91
91
|
|
|
92
|
-
response = httpx.post(f'{self.STAYONLINE_BASE_URL}/ajax/linkView.php', headers=self.headers, data=data, timeout=MAX_TIMEOUT)
|
|
92
|
+
response = httpx.post(f'{self.STAYONLINE_BASE_URL}/ajax/linkView.php', headers=self.headers, data=data, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
93
93
|
response.raise_for_status()
|
|
94
94
|
return response.json()['data']['value']
|
|
95
95
|
|
|
@@ -128,7 +128,8 @@ class VideoSource:
|
|
|
128
128
|
response = httpx.get(
|
|
129
129
|
f'{self.MIXDROP_BASE_URL}/e/{video_id}',
|
|
130
130
|
headers=self._get_mixdrop_headers(),
|
|
131
|
-
timeout=MAX_TIMEOUT
|
|
131
|
+
timeout=MAX_TIMEOUT,
|
|
132
|
+
verify=REQUEST_VERIFY
|
|
132
133
|
)
|
|
133
134
|
response.raise_for_status()
|
|
134
135
|
soup = BeautifulSoup(response.text, "html.parser")
|
|
@@ -17,6 +17,7 @@ from StreamingCommunity.Util.headers import get_headers
|
|
|
17
17
|
|
|
18
18
|
# Variable
|
|
19
19
|
MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
|
|
20
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
class VideoSource:
|
|
@@ -41,7 +42,7 @@ class VideoSource:
|
|
|
41
42
|
- str: The response content if successful, None otherwise.
|
|
42
43
|
"""
|
|
43
44
|
try:
|
|
44
|
-
response = requests.get(url, headers=self.headers, timeout=MAX_TIMEOUT, impersonate="chrome110")
|
|
45
|
+
response = requests.get(url, headers=self.headers, timeout=MAX_TIMEOUT, impersonate="chrome110", verify=REQUEST_VERIFY)
|
|
45
46
|
if response.status_code >= 400:
|
|
46
47
|
logging.error(f"Request failed with status code: {response.status_code}")
|
|
47
48
|
return None
|
|
@@ -161,4 +162,4 @@ class VideoSource:
|
|
|
161
162
|
|
|
162
163
|
except Exception as e:
|
|
163
164
|
logging.error(f"An error occurred: {e}")
|
|
164
|
-
return None
|
|
165
|
+
return None
|
|
@@ -14,7 +14,7 @@ from StreamingCommunity.Util.headers import get_userAgent
|
|
|
14
14
|
|
|
15
15
|
# Variable
|
|
16
16
|
MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
|
|
17
|
-
|
|
17
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
18
18
|
|
|
19
19
|
class VideoSource:
|
|
20
20
|
def __init__(self, full_url, episode_data, session_id, csrf_token):
|
|
@@ -30,7 +30,8 @@ class VideoSource:
|
|
|
30
30
|
cookies={"sessionId": session_id},
|
|
31
31
|
headers={"User-Agent": get_userAgent(), "csrf-token": csrf_token},
|
|
32
32
|
base_url=full_url,
|
|
33
|
-
timeout=MAX_TIMEOUT
|
|
33
|
+
timeout=MAX_TIMEOUT,
|
|
34
|
+
verify=REQUEST_VERIFY
|
|
34
35
|
)
|
|
35
36
|
|
|
36
37
|
def get_playlist(self):
|
|
@@ -46,4 +47,4 @@ class VideoSource:
|
|
|
46
47
|
|
|
47
48
|
except Exception as e:
|
|
48
49
|
logging.error(f"Error in new API system: {e}")
|
|
49
|
-
return None
|
|
50
|
+
return None
|
|
@@ -20,6 +20,7 @@ from .Helper.Vixcloud.js_parser import JavaScriptParser
|
|
|
20
20
|
|
|
21
21
|
# Variable
|
|
22
22
|
MAX_TIMEOUT = config_manager.get_int("REQUESTS", "timeout")
|
|
23
|
+
REQUEST_VERIFY = config_manager.get_bool('REQUESTS', 'verify')
|
|
23
24
|
console = Console()
|
|
24
25
|
|
|
25
26
|
|
|
@@ -57,7 +58,7 @@ class VideoSource:
|
|
|
57
58
|
}
|
|
58
59
|
|
|
59
60
|
try:
|
|
60
|
-
response = httpx.get(f"{self.url}/iframe/{self.media_id}", headers=self.headers, params=params, timeout=MAX_TIMEOUT, proxy=self.proxy)
|
|
61
|
+
response = httpx.get(f"{self.url}/iframe/{self.media_id}", headers=self.headers, params=params, timeout=MAX_TIMEOUT, proxy=self.proxy, verify=REQUEST_VERIFY)
|
|
61
62
|
response.raise_for_status()
|
|
62
63
|
|
|
63
64
|
# Parse response with BeautifulSoup to get iframe source
|
|
@@ -100,7 +101,7 @@ class VideoSource:
|
|
|
100
101
|
"""
|
|
101
102
|
try:
|
|
102
103
|
if self.iframe_src is not None:
|
|
103
|
-
response = httpx.get(self.iframe_src, headers=self.headers, timeout=MAX_TIMEOUT)
|
|
104
|
+
response = httpx.get(self.iframe_src, headers=self.headers, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
104
105
|
response.raise_for_status()
|
|
105
106
|
|
|
106
107
|
# Parse response with BeautifulSoup to get content
|
|
@@ -178,7 +179,7 @@ class VideoSourceAnime(VideoSource):
|
|
|
178
179
|
str: Parsed script content
|
|
179
180
|
"""
|
|
180
181
|
try:
|
|
181
|
-
response = httpx.get(f"{self.url}/embed-url/{episode_id}", headers=self.headers, timeout=MAX_TIMEOUT)
|
|
182
|
+
response = httpx.get(f"{self.url}/embed-url/{episode_id}", headers=self.headers, timeout=MAX_TIMEOUT, verify=REQUEST_VERIFY)
|
|
182
183
|
response.raise_for_status()
|
|
183
184
|
|
|
184
185
|
# Extract and clean embed URL
|
|
@@ -186,7 +187,7 @@ class VideoSourceAnime(VideoSource):
|
|
|
186
187
|
self.iframe_src = embed_url
|
|
187
188
|
|
|
188
189
|
# Fetch video content using embed URL
|
|
189
|
-
video_response = httpx.get(embed_url)
|
|
190
|
+
video_response = httpx.get(embed_url, verify=REQUEST_VERIFY)
|
|
190
191
|
video_response.raise_for_status()
|
|
191
192
|
|
|
192
193
|
# Parse response with BeautifulSoup to get content of the scriot
|
|
@@ -198,4 +199,4 @@ class VideoSourceAnime(VideoSource):
|
|
|
198
199
|
|
|
199
200
|
except Exception as e:
|
|
200
201
|
logging.error(f"Error fetching embed URL: {e}")
|
|
201
|
-
return None
|
|
202
|
+
return None
|
|
@@ -110,7 +110,7 @@ class M3U8_Segments:
|
|
|
110
110
|
self.key_base_url = f"{parsed_url.scheme}://{parsed_url.netloc}/"
|
|
111
111
|
|
|
112
112
|
try:
|
|
113
|
-
client_params = {'headers': {'User-Agent': get_userAgent()}, 'timeout': MAX_TIMEOOUT}
|
|
113
|
+
client_params = {'headers': {'User-Agent': get_userAgent()}, 'timeout': MAX_TIMEOOUT, 'verify': REQUEST_VERIFY}
|
|
114
114
|
response = httpx.get(url=key_uri, **client_params)
|
|
115
115
|
response.raise_for_status()
|
|
116
116
|
|
|
@@ -158,7 +158,7 @@ class M3U8_Segments:
|
|
|
158
158
|
"""
|
|
159
159
|
if self.is_index_url:
|
|
160
160
|
try:
|
|
161
|
-
client_params = {'headers': {'User-Agent': get_userAgent()}, 'timeout': MAX_TIMEOOUT}
|
|
161
|
+
client_params = {'headers': {'User-Agent': get_userAgent()}, 'timeout': MAX_TIMEOOUT, 'verify': REQUEST_VERIFY}
|
|
162
162
|
response = httpx.get(self.url, **client_params, follow_redirects=True)
|
|
163
163
|
response.raise_for_status()
|
|
164
164
|
|
|
@@ -202,7 +202,8 @@ class M3U8_Segments:
|
|
|
202
202
|
'headers': {'User-Agent': get_userAgent()},
|
|
203
203
|
'timeout': SEGMENT_MAX_TIMEOUT,
|
|
204
204
|
'follow_redirects': True,
|
|
205
|
-
'http2': False
|
|
205
|
+
'http2': False,
|
|
206
|
+
'verify': REQUEST_VERIFY
|
|
206
207
|
}
|
|
207
208
|
return httpx.Client(**client_params)
|
|
208
209
|
|
|
@@ -463,4 +464,4 @@ class M3U8_Segments:
|
|
|
463
464
|
f"[white]Failed segments: [red]{self.info_nFailed}")
|
|
464
465
|
|
|
465
466
|
if self.info_nRetry > len(self.segments) * 0.3:
|
|
466
|
-
console.print("[yellow]Warning: High retry count detected. Consider reducing worker count in config.")
|
|
467
|
+
console.print("[yellow]Warning: High retry count detected. Consider reducing worker count in config.")
|
|
@@ -88,7 +88,7 @@ def MP4_downloader(url: str, path: str, referer: str = None, headers_: dict = No
|
|
|
88
88
|
return None, False
|
|
89
89
|
|
|
90
90
|
if GET_ONLY_LINK:
|
|
91
|
-
console.print(f"URL: {url}[/bold red]")
|
|
91
|
+
console.print(f"[bold red]URL: {url}[/bold red]")
|
|
92
92
|
return path, True
|
|
93
93
|
|
|
94
94
|
if not (url.lower().startswith('http://') or url.lower().startswith('https://')):
|
|
@@ -115,7 +115,7 @@ def MP4_downloader(url: str, path: str, referer: str = None, headers_: dict = No
|
|
|
115
115
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
|
116
116
|
|
|
117
117
|
try:
|
|
118
|
-
with httpx.Client() as client:
|
|
118
|
+
with httpx.Client(verify=REQUEST_VERIFY) as client:
|
|
119
119
|
with client.stream("GET", url, headers=headers) as response:
|
|
120
120
|
response.raise_for_status()
|
|
121
121
|
total = int(response.headers.get('content-length', 0))
|
|
@@ -188,4 +188,4 @@ def MP4_downloader(url: str, path: str, referer: str = None, headers_: dict = No
|
|
|
188
188
|
return None, interrupt_handler.kill_download
|
|
189
189
|
|
|
190
190
|
finally:
|
|
191
|
-
signal.signal(signal.SIGINT, original_handler)
|
|
191
|
+
signal.signal(signal.SIGINT, original_handler)
|
|
@@ -98,4 +98,4 @@ def update():
|
|
|
98
98
|
console.print(f"\n[red]{__title__} has been downloaded [yellow]{total_download_count} [red]times, but only [yellow]{percentual_stars}% [red]of users have starred it.\n\
|
|
99
99
|
[cyan]Help the repository grow today by leaving a [yellow]star [cyan]and [yellow]sharing [cyan]it with others online!")
|
|
100
100
|
|
|
101
|
-
time.sleep(4)
|
|
101
|
+
time.sleep(4)
|
|
@@ -36,10 +36,8 @@ class ConfigManager:
|
|
|
36
36
|
base_path = os.path.dirname(sys.executable)
|
|
37
37
|
|
|
38
38
|
else:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
current_file_path = os.path.abspath(__file__)
|
|
42
|
-
base_path = os.path.dirname(os.path.dirname(os.path.dirname(current_file_path)))
|
|
39
|
+
# Use the current working directory where the script is executed
|
|
40
|
+
base_path = os.getcwd()
|
|
43
41
|
|
|
44
42
|
# Initialize file paths
|
|
45
43
|
self.file_path = os.path.join(base_path, file_name)
|
|
@@ -275,7 +273,7 @@ class ConfigManager:
|
|
|
275
273
|
}
|
|
276
274
|
|
|
277
275
|
try:
|
|
278
|
-
console.print(
|
|
276
|
+
console.print("[bold cyan]Retrieving site data from GitHub:[/bold cyan]")
|
|
279
277
|
response = requests.get(domains_github_url, timeout=8, headers=headers)
|
|
280
278
|
|
|
281
279
|
if response.ok:
|
|
@@ -344,7 +342,7 @@ class ConfigManager:
|
|
|
344
342
|
try:
|
|
345
343
|
logging.info(f"Downloading {filename} from {url}...")
|
|
346
344
|
console.print(f"[bold cyan]File download:[/bold cyan] {os.path.basename(filename)}")
|
|
347
|
-
response = requests.get(url, timeout=8, headers={'User-Agent': get_userAgent()})
|
|
345
|
+
response = requests.get(url, timeout=8, headers={'User-Agent': get_userAgent()}, verify=self.get_bool('REQUESTS', 'verify'))
|
|
348
346
|
|
|
349
347
|
if response.status_code == 200:
|
|
350
348
|
with open(filename, 'wb') as f:
|
|
@@ -570,4 +568,4 @@ def get_use_large_bar():
|
|
|
570
568
|
|
|
571
569
|
|
|
572
570
|
# Initialize the ConfigManager when the module is imported
|
|
573
|
-
config_manager = ConfigManager()
|
|
571
|
+
config_manager = ConfigManager()
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
StreamingCommunity/__init__.py,sha256=Cw-N0VCg7sef1WqdtvVwrhs1zc4LoUhs5C8k7vpM1lQ,207
|
|
2
2
|
StreamingCommunity/global_search.py,sha256=ip3D0OKNRTXHpe_Wy7v2KM-yNZdnnbG5FOBYSSk6wB8,12401
|
|
3
3
|
StreamingCommunity/run.py,sha256=I-FXtuLuBOmn963vs9hkvURLRI6CdVhCsIuuoY8ALF4,14146
|
|
4
|
-
StreamingCommunity/Api/Player/ddl.py,sha256=
|
|
5
|
-
StreamingCommunity/Api/Player/hdplayer.py,sha256=
|
|
6
|
-
StreamingCommunity/Api/Player/maxstream.py,sha256=
|
|
7
|
-
StreamingCommunity/Api/Player/mediapolisvod.py,sha256=
|
|
8
|
-
StreamingCommunity/Api/Player/mixdrop.py,sha256=
|
|
9
|
-
StreamingCommunity/Api/Player/supervideo.py,sha256=
|
|
10
|
-
StreamingCommunity/Api/Player/sweetpixel.py,sha256=
|
|
11
|
-
StreamingCommunity/Api/Player/vixcloud.py,sha256=
|
|
4
|
+
StreamingCommunity/Api/Player/ddl.py,sha256=cPinK99iX4ThvAHLlzcACcnFvM-M_NK0f4imh9PQY1I,2174
|
|
5
|
+
StreamingCommunity/Api/Player/hdplayer.py,sha256=0_qnBx1nepDMd4qwg3eZQlyT7GlSs7hW9jK_5af7Pus,1961
|
|
6
|
+
StreamingCommunity/Api/Player/maxstream.py,sha256=JlVTCAo9ze0wF2h0eNPYqdorhwK7DPXpmLAyHMnT7-Y,5017
|
|
7
|
+
StreamingCommunity/Api/Player/mediapolisvod.py,sha256=Npm3HHUO5Wav8c2QX9E2c3SSW6d1STJw-kK8kHRF-zo,2403
|
|
8
|
+
StreamingCommunity/Api/Player/mixdrop.py,sha256=XwGjI7aqxeyyY6Ft8AOhnEE4jfRH2Z1JUxLaArE9UUM,5134
|
|
9
|
+
StreamingCommunity/Api/Player/supervideo.py,sha256=AuAA6eXYODJN-ytdvKjqlzZLOHpwx3kwgy1CSiogs-o,5388
|
|
10
|
+
StreamingCommunity/Api/Player/sweetpixel.py,sha256=Qi4dcEDXbFjFPH9CHl0T0DfIJUfUXL0vyFdIUnIHkMI,1741
|
|
11
|
+
StreamingCommunity/Api/Player/vixcloud.py,sha256=7d6quxzA19hqT9C1gXMTkzM7zNELlX435s0ozW-RSD0,6687
|
|
12
12
|
StreamingCommunity/Api/Player/Helper/Vixcloud/js_parser.py,sha256=U-8QlD5kGzIk3-4t4D6QyYmiDe8UBrSuVi1YHRQb7AU,4295
|
|
13
13
|
StreamingCommunity/Api/Player/Helper/Vixcloud/util.py,sha256=QLUgbwQrpuPIVNzdBlAiEJXnd-eCj_JQFckZZEEL55w,5214
|
|
14
14
|
StreamingCommunity/Api/Site/1337xx/__init__.py,sha256=-lZenAXIv69E38G1AssvRbdQ5ghZS-DjV-SifsLLpn8,2032
|
|
@@ -59,8 +59,8 @@ StreamingCommunity/Api/Template/Util/__init__.py,sha256=ZWQQd6iymNFDol9HaKPhVBoR
|
|
|
59
59
|
StreamingCommunity/Api/Template/Util/manage_ep.py,sha256=FYe2DC9SXIXzlRYI7fW4ieBpfrxYzsUgt2C47tYRk7U,9252
|
|
60
60
|
StreamingCommunity/Lib/Downloader/__init__.py,sha256=JhbBh5hOnSM7VmtkxJ7zZ_FtWEC1JdnKThsSBjLV5FY,140
|
|
61
61
|
StreamingCommunity/Lib/Downloader/HLS/downloader.py,sha256=kU7DN7cqdU5Uwo8d3TGXMIdep7QQhtU71Oe0s-Kks1k,22117
|
|
62
|
-
StreamingCommunity/Lib/Downloader/HLS/segments.py,sha256=
|
|
63
|
-
StreamingCommunity/Lib/Downloader/MP4/downloader.py,sha256=
|
|
62
|
+
StreamingCommunity/Lib/Downloader/HLS/segments.py,sha256=SY5bwvECVg0xGLlAYIBieWk2_y3QXRR2VjH2bVdWWYc,18150
|
|
63
|
+
StreamingCommunity/Lib/Downloader/MP4/downloader.py,sha256=U3kARWZXNUvZLy6nm4pcbUHwBSvy5bMqBUBz6Vc9w90,7546
|
|
64
64
|
StreamingCommunity/Lib/Downloader/TOR/downloader.py,sha256=CrRGdLGI_45AnhtTZm8r7KO7uGmU9k6pywy-qO18LG8,19242
|
|
65
65
|
StreamingCommunity/Lib/FFmpeg/__init__.py,sha256=6PBsZdE1jrD2EKOVyx3JEHnyDZzVeKlPkH5T0zyfOgU,130
|
|
66
66
|
StreamingCommunity/Lib/FFmpeg/capture.py,sha256=QZYtuUG3L5_BsHFdzBU-5pZrX1PYxfCTx8bXShGF_bs,5029
|
|
@@ -78,19 +78,19 @@ StreamingCommunity/Lib/TMBD/tmdb.py,sha256=byg0EFnlmd9JeLvn1N9K3QkB1KEfeMuFa7OVf
|
|
|
78
78
|
StreamingCommunity/TelegramHelp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
79
79
|
StreamingCommunity/TelegramHelp/config.json,sha256=x1rtclDIrlnFcmiAmCQnV3WpnlTl5ds1LRRqECIF7xk,1581
|
|
80
80
|
StreamingCommunity/TelegramHelp/telegram_bot.py,sha256=zCqj7xBofh9FYfEYl55mgT945jqtKo7qJhn-SMLvAvA,26455
|
|
81
|
-
StreamingCommunity/Upload/update.py,sha256=
|
|
82
|
-
StreamingCommunity/Upload/version.py,sha256=
|
|
81
|
+
StreamingCommunity/Upload/update.py,sha256=ZGQHcnTLAfXla_PqvykDeg2-WKOYfX9zX2I3KrdKHpc,3814
|
|
82
|
+
StreamingCommunity/Upload/version.py,sha256=mWUalfzzk89wwGI_TzqFuccaBZMhYGl-h6E4Ce5FeMs,170
|
|
83
83
|
StreamingCommunity/Util/color.py,sha256=NvD0Eni-25oOOkY-szCEoc0lGvzQxyL7xhM0RE4EvUM,458
|
|
84
|
-
StreamingCommunity/Util/config_json.py,sha256=
|
|
84
|
+
StreamingCommunity/Util/config_json.py,sha256=Q1V1Umrp4LEkelNQ638_ANAsGEioHzYnvy3FfQOJAHs,24227
|
|
85
85
|
StreamingCommunity/Util/ffmpeg_installer.py,sha256=yRVIPwbh05tZ-duZmXkH0qasLNxaQCAT_E4cTP79Z3c,14890
|
|
86
86
|
StreamingCommunity/Util/headers.py,sha256=TItkaFMx1GqsVNEIS3Tr0BGU5EHyF-HkZVliHORT3P8,308
|
|
87
87
|
StreamingCommunity/Util/logger.py,sha256=9kGD6GmWj2pM8ADpJc85o7jm8DD0c5Aguqnq-9kmxos,3314
|
|
88
88
|
StreamingCommunity/Util/message.py,sha256=81vPmsGBusovIhheIO4Ec6p7BYvMj1wE_CthtRyp6OM,1333
|
|
89
89
|
StreamingCommunity/Util/os.py,sha256=8mAZhYsFJ9ZDt9hdFcDqBzAZ0Fv8tM3aqRkdiewK9ok,17330
|
|
90
90
|
StreamingCommunity/Util/table.py,sha256=Nw5PlsvfEIOQZWy5VhsU5OK3heuBXGwsqmLl0k8yQzc,9813
|
|
91
|
-
streamingcommunity-3.
|
|
92
|
-
streamingcommunity-3.
|
|
93
|
-
streamingcommunity-3.
|
|
94
|
-
streamingcommunity-3.
|
|
95
|
-
streamingcommunity-3.
|
|
96
|
-
streamingcommunity-3.
|
|
91
|
+
streamingcommunity-3.2.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
92
|
+
streamingcommunity-3.2.0.dist-info/METADATA,sha256=qyR_qHvyfigIxwFMt7vnmUCL7Bo9yOu6cTSVVCdZxME,25190
|
|
93
|
+
streamingcommunity-3.2.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
94
|
+
streamingcommunity-3.2.0.dist-info/entry_points.txt,sha256=Qph9XYfDC8n4LfDLOSl6gJGlkb9eFb5f-JOr_Wb_5rk,67
|
|
95
|
+
streamingcommunity-3.2.0.dist-info/top_level.txt,sha256=YsOcxKP-WOhWpIWgBlh0coll9XUx7aqmRPT7kmt3fH0,19
|
|
96
|
+
streamingcommunity-3.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|