StreamingCommunity 1.7.6__py3-none-any.whl → 1.8.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/Src/Api/Player/Helper/Vixcloud/js_parser.py +4 -1
- StreamingCommunity/Src/Api/Player/Helper/Vixcloud/util.py +166 -166
- StreamingCommunity/Src/Api/Player/ddl.py +89 -89
- StreamingCommunity/Src/Api/Player/maxstream.py +151 -151
- StreamingCommunity/Src/Api/Player/supervideo.py +193 -193
- StreamingCommunity/Src/Api/Player/vixcloud.py +224 -212
- StreamingCommunity/Src/Api/Site/1337xx/__init__.py +50 -50
- StreamingCommunity/Src/Api/Site/1337xx/costant.py +14 -14
- StreamingCommunity/Src/Api/Site/1337xx/site.py +83 -83
- StreamingCommunity/Src/Api/Site/1337xx/title.py +66 -66
- StreamingCommunity/Src/Api/Site/altadefinizione/__init__.py +50 -50
- StreamingCommunity/Src/Api/Site/altadefinizione/costant.py +14 -14
- StreamingCommunity/Src/Api/Site/altadefinizione/film.py +69 -69
- StreamingCommunity/Src/Api/Site/altadefinizione/site.py +86 -86
- StreamingCommunity/Src/Api/Site/animeunity/__init__.py +50 -50
- StreamingCommunity/Src/Api/Site/animeunity/costant.py +15 -15
- StreamingCommunity/Src/Api/Site/animeunity/film_serie.py +131 -131
- StreamingCommunity/Src/Api/Site/animeunity/site.py +164 -164
- StreamingCommunity/Src/Api/Site/bitsearch/__init__.py +51 -51
- StreamingCommunity/Src/Api/Site/bitsearch/costant.py +15 -15
- StreamingCommunity/Src/Api/Site/bitsearch/site.py +84 -84
- StreamingCommunity/Src/Api/Site/bitsearch/title.py +47 -47
- StreamingCommunity/Src/Api/Site/cb01new/__init__.py +51 -51
- StreamingCommunity/Src/Api/Site/cb01new/costant.py +15 -15
- StreamingCommunity/Src/Api/Site/cb01new/film.py +69 -69
- StreamingCommunity/Src/Api/Site/cb01new/site.py +74 -74
- StreamingCommunity/Src/Api/Site/ddlstreamitaly/__init__.py +57 -57
- StreamingCommunity/Src/Api/Site/ddlstreamitaly/costant.py +16 -16
- StreamingCommunity/Src/Api/Site/ddlstreamitaly/series.py +142 -142
- StreamingCommunity/Src/Api/Site/ddlstreamitaly/site.py +92 -92
- StreamingCommunity/Src/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +82 -82
- StreamingCommunity/Src/Api/Site/guardaserie/__init__.py +52 -52
- StreamingCommunity/Src/Api/Site/guardaserie/costant.py +15 -15
- StreamingCommunity/Src/Api/Site/guardaserie/series.py +195 -195
- StreamingCommunity/Src/Api/Site/guardaserie/site.py +84 -84
- StreamingCommunity/Src/Api/Site/guardaserie/util/ScrapeSerie.py +110 -110
- StreamingCommunity/Src/Api/Site/mostraguarda/__init__.py +48 -48
- StreamingCommunity/Src/Api/Site/mostraguarda/costant.py +14 -14
- StreamingCommunity/Src/Api/Site/mostraguarda/film.py +94 -94
- StreamingCommunity/Src/Api/Site/piratebays/__init__.py +50 -50
- StreamingCommunity/Src/Api/Site/piratebays/costant.py +14 -14
- StreamingCommunity/Src/Api/Site/piratebays/site.py +88 -88
- StreamingCommunity/Src/Api/Site/piratebays/title.py +45 -45
- StreamingCommunity/Src/Api/Site/streamingcommunity/__init__.py +55 -55
- StreamingCommunity/Src/Api/Site/streamingcommunity/costant.py +14 -14
- StreamingCommunity/Src/Api/Site/streamingcommunity/film.py +70 -70
- StreamingCommunity/Src/Api/Site/streamingcommunity/series.py +203 -203
- StreamingCommunity/Src/Api/Site/streamingcommunity/site.py +125 -125
- StreamingCommunity/Src/Api/Template/Class/SearchType.py +101 -101
- StreamingCommunity/Src/Api/Template/Util/__init__.py +4 -4
- StreamingCommunity/Src/Api/Template/Util/get_domain.py +137 -137
- StreamingCommunity/Src/Api/Template/Util/manage_ep.py +153 -153
- StreamingCommunity/Src/Api/Template/Util/recall_search.py +37 -37
- StreamingCommunity/Src/Api/Template/__init__.py +2 -2
- StreamingCommunity/Src/Api/Template/site.py +87 -87
- StreamingCommunity/Src/Lib/Downloader/HLS/downloader.py +968 -968
- StreamingCommunity/Src/Lib/Downloader/HLS/proxyes.py +110 -110
- StreamingCommunity/Src/Lib/Downloader/HLS/segments.py +540 -540
- StreamingCommunity/Src/Lib/Downloader/MP4/downloader.py +156 -156
- StreamingCommunity/Src/Lib/Downloader/TOR/downloader.py +222 -222
- StreamingCommunity/Src/Lib/Downloader/__init__.py +4 -4
- StreamingCommunity/Src/Lib/Driver/driver_1.py +76 -76
- StreamingCommunity/Src/Lib/FFmpeg/__init__.py +4 -4
- StreamingCommunity/Src/Lib/FFmpeg/capture.py +170 -170
- StreamingCommunity/Src/Lib/FFmpeg/command.py +292 -292
- StreamingCommunity/Src/Lib/FFmpeg/util.py +241 -241
- StreamingCommunity/Src/Lib/M3U8/__init__.py +5 -5
- StreamingCommunity/Src/Lib/M3U8/decryptor.py +128 -128
- StreamingCommunity/Src/Lib/M3U8/estimator.py +172 -172
- StreamingCommunity/Src/Lib/M3U8/parser.py +666 -666
- StreamingCommunity/Src/Lib/M3U8/url_fixer.py +51 -51
- StreamingCommunity/Src/Lib/TMBD/__init__.py +1 -1
- StreamingCommunity/Src/Lib/TMBD/obj_tmbd.py +39 -39
- StreamingCommunity/Src/Lib/TMBD/tmdb.py +345 -345
- StreamingCommunity/Src/Upload/update.py +64 -64
- StreamingCommunity/Src/Upload/version.py +5 -5
- StreamingCommunity/Src/Util/_jsonConfig.py +204 -204
- StreamingCommunity/Src/Util/call_stack.py +42 -42
- StreamingCommunity/Src/Util/color.py +20 -20
- StreamingCommunity/Src/Util/console.py +12 -12
- StreamingCommunity/Src/Util/headers.py +147 -147
- StreamingCommunity/Src/Util/logger.py +53 -53
- StreamingCommunity/Src/Util/message.py +46 -46
- StreamingCommunity/Src/Util/os.py +417 -417
- StreamingCommunity/Src/Util/table.py +163 -163
- StreamingCommunity/run.py +196 -196
- {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/METADATA +1 -1
- StreamingCommunity-1.8.0.dist-info/RECORD +97 -0
- StreamingCommunity-1.7.6.dist-info/RECORD +0 -97
- {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/LICENSE +0 -0
- {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/WHEEL +0 -0
- {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/entry_points.txt +0 -0
- {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/top_level.txt +0 -0
|
@@ -1,163 +1,163 @@
|
|
|
1
|
-
# 03.03.24
|
|
2
|
-
|
|
3
|
-
from rich.console import Console
|
|
4
|
-
from rich.table import Table
|
|
5
|
-
from rich.prompt import Prompt
|
|
6
|
-
from rich.style import Style
|
|
7
|
-
from typing import Dict, List, Any
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
# Internal utilities
|
|
11
|
-
from .message import start_message
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class TVShowManager:
|
|
15
|
-
def __init__(self):
|
|
16
|
-
"""
|
|
17
|
-
Initialize TVShowManager with provided column information.
|
|
18
|
-
|
|
19
|
-
Parameters:
|
|
20
|
-
- column_info (Dict[str, Dict[str, str]]): Dictionary containing column names, their colors, and justification.
|
|
21
|
-
"""
|
|
22
|
-
self.console = Console()
|
|
23
|
-
self.tv_shows: List[Dict[str, Any]] = [] # List to store TV show data as dictionaries
|
|
24
|
-
self.slice_start: int = 0
|
|
25
|
-
self.slice_end: int = 5
|
|
26
|
-
self.step: int = self.slice_end
|
|
27
|
-
self.column_info = []
|
|
28
|
-
|
|
29
|
-
def set_slice_end(self, new_slice: int) -> None:
|
|
30
|
-
"""
|
|
31
|
-
Set the end of the slice for displaying TV shows.
|
|
32
|
-
|
|
33
|
-
Parameters:
|
|
34
|
-
- new_slice (int): The new value for the slice end.
|
|
35
|
-
"""
|
|
36
|
-
self.slice_end = new_slice
|
|
37
|
-
self.step = new_slice
|
|
38
|
-
|
|
39
|
-
def add_column(self, column_info: Dict[str, Dict[str, str]]) -> None:
|
|
40
|
-
"""
|
|
41
|
-
Add column information.
|
|
42
|
-
|
|
43
|
-
Parameters:
|
|
44
|
-
- column_info (Dict[str, Dict[str, str]]): Dictionary containing column names, their colors, and justification.
|
|
45
|
-
"""
|
|
46
|
-
self.column_info = column_info
|
|
47
|
-
|
|
48
|
-
def add_tv_show(self, tv_show: Dict[str, Any]):
|
|
49
|
-
"""
|
|
50
|
-
Add a TV show to the list of TV shows.
|
|
51
|
-
|
|
52
|
-
Parameters:
|
|
53
|
-
- tv_show (Dict[str, Any]): Dictionary containing TV show details.
|
|
54
|
-
"""
|
|
55
|
-
self.tv_shows.append(tv_show)
|
|
56
|
-
|
|
57
|
-
def display_data(self, data_slice: List[Dict[str, Any]]):
|
|
58
|
-
"""
|
|
59
|
-
Display TV show data in a tabular format.
|
|
60
|
-
|
|
61
|
-
Parameters:
|
|
62
|
-
- data_slice (List[Dict[str, Any]]): List of dictionaries containing TV show details to display.
|
|
63
|
-
"""
|
|
64
|
-
table = Table(border_style="white")
|
|
65
|
-
|
|
66
|
-
# Add columns dynamically based on provided column information
|
|
67
|
-
for col_name, col_style in self.column_info.items():
|
|
68
|
-
color = col_style.get("color", None)
|
|
69
|
-
if color:
|
|
70
|
-
style = Style(color=color)
|
|
71
|
-
else:
|
|
72
|
-
style = None
|
|
73
|
-
table.add_column(col_name, style=style, justify='center')
|
|
74
|
-
|
|
75
|
-
# Add rows dynamically based on available TV show data
|
|
76
|
-
for entry in data_slice:
|
|
77
|
-
# Create row data while handling missing keys
|
|
78
|
-
row_data = [entry.get(col_name, '') for col_name in self.column_info.keys()]
|
|
79
|
-
table.add_row(*row_data)
|
|
80
|
-
|
|
81
|
-
self.console.print(table) # Use self.console.print instead of print
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def run(self, force_int_input: bool = False, max_int_input: int = 0) -> str:
|
|
85
|
-
"""
|
|
86
|
-
Run the TV show manager application.
|
|
87
|
-
|
|
88
|
-
Parameters:
|
|
89
|
-
- force_int_input(bool): If True, only accept integer inputs from 0 to max_int_input
|
|
90
|
-
- max_int_input (int): range of row to show
|
|
91
|
-
|
|
92
|
-
Returns:
|
|
93
|
-
str: Last command executed before breaking out of the loop.
|
|
94
|
-
"""
|
|
95
|
-
total_items = len(self.tv_shows)
|
|
96
|
-
last_command = "" # Variable to store the last command executed
|
|
97
|
-
|
|
98
|
-
while True:
|
|
99
|
-
start_message()
|
|
100
|
-
|
|
101
|
-
# Display table
|
|
102
|
-
self.display_data(self.tv_shows[self.slice_start:self.slice_end])
|
|
103
|
-
|
|
104
|
-
# Handling user input for loading more items or quitting
|
|
105
|
-
if self.slice_end < total_items:
|
|
106
|
-
self.console.print(f"\n\n[yellow][INFO] [green]Press [red]Enter [green]for next page, or [red]'q' [green]to quit.")
|
|
107
|
-
|
|
108
|
-
if not force_int_input:
|
|
109
|
-
key = Prompt.ask(
|
|
110
|
-
"\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
|
|
111
|
-
"[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
|
|
112
|
-
)
|
|
113
|
-
|
|
114
|
-
else:
|
|
115
|
-
choices = [str(i) for i in range(0, max_int_input)]
|
|
116
|
-
choices.extend(["q", ""])
|
|
117
|
-
|
|
118
|
-
key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
|
|
119
|
-
last_command = key
|
|
120
|
-
|
|
121
|
-
if key.lower() == "q":
|
|
122
|
-
break
|
|
123
|
-
|
|
124
|
-
elif key == "":
|
|
125
|
-
self.slice_start += self.step
|
|
126
|
-
self.slice_end += self.step
|
|
127
|
-
if self.slice_end > total_items:
|
|
128
|
-
self.slice_end = total_items
|
|
129
|
-
|
|
130
|
-
else:
|
|
131
|
-
break
|
|
132
|
-
|
|
133
|
-
else:
|
|
134
|
-
# Last slice, ensure all remaining items are shown
|
|
135
|
-
self.console.print(f"\n\n[yellow][INFO] [red]You've reached the end. [green]Press [red]Enter [green]for next page, or [red]'q' [green]to quit.")
|
|
136
|
-
if not force_int_input:
|
|
137
|
-
key = Prompt.ask(
|
|
138
|
-
"\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
|
|
139
|
-
"[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
|
|
140
|
-
)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
else:
|
|
144
|
-
choices = [str(i) for i in range(0, max_int_input)]
|
|
145
|
-
choices.extend(["q", ""])
|
|
146
|
-
|
|
147
|
-
key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
|
|
148
|
-
last_command = key
|
|
149
|
-
|
|
150
|
-
if key.lower() == "q":
|
|
151
|
-
break
|
|
152
|
-
|
|
153
|
-
elif key == "":
|
|
154
|
-
self.slice_start = 0
|
|
155
|
-
self.slice_end = self.step
|
|
156
|
-
|
|
157
|
-
else:
|
|
158
|
-
break
|
|
159
|
-
|
|
160
|
-
return last_command
|
|
161
|
-
|
|
162
|
-
def clear(self):
|
|
163
|
-
self.tv_shows = []
|
|
1
|
+
# 03.03.24
|
|
2
|
+
|
|
3
|
+
from rich.console import Console
|
|
4
|
+
from rich.table import Table
|
|
5
|
+
from rich.prompt import Prompt
|
|
6
|
+
from rich.style import Style
|
|
7
|
+
from typing import Dict, List, Any
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Internal utilities
|
|
11
|
+
from .message import start_message
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class TVShowManager:
|
|
15
|
+
def __init__(self):
|
|
16
|
+
"""
|
|
17
|
+
Initialize TVShowManager with provided column information.
|
|
18
|
+
|
|
19
|
+
Parameters:
|
|
20
|
+
- column_info (Dict[str, Dict[str, str]]): Dictionary containing column names, their colors, and justification.
|
|
21
|
+
"""
|
|
22
|
+
self.console = Console()
|
|
23
|
+
self.tv_shows: List[Dict[str, Any]] = [] # List to store TV show data as dictionaries
|
|
24
|
+
self.slice_start: int = 0
|
|
25
|
+
self.slice_end: int = 5
|
|
26
|
+
self.step: int = self.slice_end
|
|
27
|
+
self.column_info = []
|
|
28
|
+
|
|
29
|
+
def set_slice_end(self, new_slice: int) -> None:
|
|
30
|
+
"""
|
|
31
|
+
Set the end of the slice for displaying TV shows.
|
|
32
|
+
|
|
33
|
+
Parameters:
|
|
34
|
+
- new_slice (int): The new value for the slice end.
|
|
35
|
+
"""
|
|
36
|
+
self.slice_end = new_slice
|
|
37
|
+
self.step = new_slice
|
|
38
|
+
|
|
39
|
+
def add_column(self, column_info: Dict[str, Dict[str, str]]) -> None:
|
|
40
|
+
"""
|
|
41
|
+
Add column information.
|
|
42
|
+
|
|
43
|
+
Parameters:
|
|
44
|
+
- column_info (Dict[str, Dict[str, str]]): Dictionary containing column names, their colors, and justification.
|
|
45
|
+
"""
|
|
46
|
+
self.column_info = column_info
|
|
47
|
+
|
|
48
|
+
def add_tv_show(self, tv_show: Dict[str, Any]):
|
|
49
|
+
"""
|
|
50
|
+
Add a TV show to the list of TV shows.
|
|
51
|
+
|
|
52
|
+
Parameters:
|
|
53
|
+
- tv_show (Dict[str, Any]): Dictionary containing TV show details.
|
|
54
|
+
"""
|
|
55
|
+
self.tv_shows.append(tv_show)
|
|
56
|
+
|
|
57
|
+
def display_data(self, data_slice: List[Dict[str, Any]]):
|
|
58
|
+
"""
|
|
59
|
+
Display TV show data in a tabular format.
|
|
60
|
+
|
|
61
|
+
Parameters:
|
|
62
|
+
- data_slice (List[Dict[str, Any]]): List of dictionaries containing TV show details to display.
|
|
63
|
+
"""
|
|
64
|
+
table = Table(border_style="white")
|
|
65
|
+
|
|
66
|
+
# Add columns dynamically based on provided column information
|
|
67
|
+
for col_name, col_style in self.column_info.items():
|
|
68
|
+
color = col_style.get("color", None)
|
|
69
|
+
if color:
|
|
70
|
+
style = Style(color=color)
|
|
71
|
+
else:
|
|
72
|
+
style = None
|
|
73
|
+
table.add_column(col_name, style=style, justify='center')
|
|
74
|
+
|
|
75
|
+
# Add rows dynamically based on available TV show data
|
|
76
|
+
for entry in data_slice:
|
|
77
|
+
# Create row data while handling missing keys
|
|
78
|
+
row_data = [entry.get(col_name, '') for col_name in self.column_info.keys()]
|
|
79
|
+
table.add_row(*row_data)
|
|
80
|
+
|
|
81
|
+
self.console.print(table) # Use self.console.print instead of print
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def run(self, force_int_input: bool = False, max_int_input: int = 0) -> str:
|
|
85
|
+
"""
|
|
86
|
+
Run the TV show manager application.
|
|
87
|
+
|
|
88
|
+
Parameters:
|
|
89
|
+
- force_int_input(bool): If True, only accept integer inputs from 0 to max_int_input
|
|
90
|
+
- max_int_input (int): range of row to show
|
|
91
|
+
|
|
92
|
+
Returns:
|
|
93
|
+
str: Last command executed before breaking out of the loop.
|
|
94
|
+
"""
|
|
95
|
+
total_items = len(self.tv_shows)
|
|
96
|
+
last_command = "" # Variable to store the last command executed
|
|
97
|
+
|
|
98
|
+
while True:
|
|
99
|
+
start_message()
|
|
100
|
+
|
|
101
|
+
# Display table
|
|
102
|
+
self.display_data(self.tv_shows[self.slice_start:self.slice_end])
|
|
103
|
+
|
|
104
|
+
# Handling user input for loading more items or quitting
|
|
105
|
+
if self.slice_end < total_items:
|
|
106
|
+
self.console.print(f"\n\n[yellow][INFO] [green]Press [red]Enter [green]for next page, or [red]'q' [green]to quit.")
|
|
107
|
+
|
|
108
|
+
if not force_int_input:
|
|
109
|
+
key = Prompt.ask(
|
|
110
|
+
"\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
|
|
111
|
+
"[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
else:
|
|
115
|
+
choices = [str(i) for i in range(0, max_int_input)]
|
|
116
|
+
choices.extend(["q", ""])
|
|
117
|
+
|
|
118
|
+
key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
|
|
119
|
+
last_command = key
|
|
120
|
+
|
|
121
|
+
if key.lower() == "q":
|
|
122
|
+
break
|
|
123
|
+
|
|
124
|
+
elif key == "":
|
|
125
|
+
self.slice_start += self.step
|
|
126
|
+
self.slice_end += self.step
|
|
127
|
+
if self.slice_end > total_items:
|
|
128
|
+
self.slice_end = total_items
|
|
129
|
+
|
|
130
|
+
else:
|
|
131
|
+
break
|
|
132
|
+
|
|
133
|
+
else:
|
|
134
|
+
# Last slice, ensure all remaining items are shown
|
|
135
|
+
self.console.print(f"\n\n[yellow][INFO] [red]You've reached the end. [green]Press [red]Enter [green]for next page, or [red]'q' [green]to quit.")
|
|
136
|
+
if not force_int_input:
|
|
137
|
+
key = Prompt.ask(
|
|
138
|
+
"\n[cyan]Insert media index [yellow](e.g., 1), [red]* [cyan]to download all media, "
|
|
139
|
+
"[yellow](e.g., 1-2) [cyan]for a range of media, or [yellow](e.g., 3-*) [cyan]to download from a specific index to the end"
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
else:
|
|
144
|
+
choices = [str(i) for i in range(0, max_int_input)]
|
|
145
|
+
choices.extend(["q", ""])
|
|
146
|
+
|
|
147
|
+
key = Prompt.ask("[cyan]Insert media [red]index", choices=choices, show_choices=False)
|
|
148
|
+
last_command = key
|
|
149
|
+
|
|
150
|
+
if key.lower() == "q":
|
|
151
|
+
break
|
|
152
|
+
|
|
153
|
+
elif key == "":
|
|
154
|
+
self.slice_start = 0
|
|
155
|
+
self.slice_end = self.step
|
|
156
|
+
|
|
157
|
+
else:
|
|
158
|
+
break
|
|
159
|
+
|
|
160
|
+
return last_command
|
|
161
|
+
|
|
162
|
+
def clear(self):
|
|
163
|
+
self.tv_shows = []
|