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.

Files changed (93) hide show
  1. StreamingCommunity/Src/Api/Player/Helper/Vixcloud/js_parser.py +4 -1
  2. StreamingCommunity/Src/Api/Player/Helper/Vixcloud/util.py +166 -166
  3. StreamingCommunity/Src/Api/Player/ddl.py +89 -89
  4. StreamingCommunity/Src/Api/Player/maxstream.py +151 -151
  5. StreamingCommunity/Src/Api/Player/supervideo.py +193 -193
  6. StreamingCommunity/Src/Api/Player/vixcloud.py +224 -212
  7. StreamingCommunity/Src/Api/Site/1337xx/__init__.py +50 -50
  8. StreamingCommunity/Src/Api/Site/1337xx/costant.py +14 -14
  9. StreamingCommunity/Src/Api/Site/1337xx/site.py +83 -83
  10. StreamingCommunity/Src/Api/Site/1337xx/title.py +66 -66
  11. StreamingCommunity/Src/Api/Site/altadefinizione/__init__.py +50 -50
  12. StreamingCommunity/Src/Api/Site/altadefinizione/costant.py +14 -14
  13. StreamingCommunity/Src/Api/Site/altadefinizione/film.py +69 -69
  14. StreamingCommunity/Src/Api/Site/altadefinizione/site.py +86 -86
  15. StreamingCommunity/Src/Api/Site/animeunity/__init__.py +50 -50
  16. StreamingCommunity/Src/Api/Site/animeunity/costant.py +15 -15
  17. StreamingCommunity/Src/Api/Site/animeunity/film_serie.py +131 -131
  18. StreamingCommunity/Src/Api/Site/animeunity/site.py +164 -164
  19. StreamingCommunity/Src/Api/Site/bitsearch/__init__.py +51 -51
  20. StreamingCommunity/Src/Api/Site/bitsearch/costant.py +15 -15
  21. StreamingCommunity/Src/Api/Site/bitsearch/site.py +84 -84
  22. StreamingCommunity/Src/Api/Site/bitsearch/title.py +47 -47
  23. StreamingCommunity/Src/Api/Site/cb01new/__init__.py +51 -51
  24. StreamingCommunity/Src/Api/Site/cb01new/costant.py +15 -15
  25. StreamingCommunity/Src/Api/Site/cb01new/film.py +69 -69
  26. StreamingCommunity/Src/Api/Site/cb01new/site.py +74 -74
  27. StreamingCommunity/Src/Api/Site/ddlstreamitaly/__init__.py +57 -57
  28. StreamingCommunity/Src/Api/Site/ddlstreamitaly/costant.py +16 -16
  29. StreamingCommunity/Src/Api/Site/ddlstreamitaly/series.py +142 -142
  30. StreamingCommunity/Src/Api/Site/ddlstreamitaly/site.py +92 -92
  31. StreamingCommunity/Src/Api/Site/ddlstreamitaly/util/ScrapeSerie.py +82 -82
  32. StreamingCommunity/Src/Api/Site/guardaserie/__init__.py +52 -52
  33. StreamingCommunity/Src/Api/Site/guardaserie/costant.py +15 -15
  34. StreamingCommunity/Src/Api/Site/guardaserie/series.py +195 -195
  35. StreamingCommunity/Src/Api/Site/guardaserie/site.py +84 -84
  36. StreamingCommunity/Src/Api/Site/guardaserie/util/ScrapeSerie.py +110 -110
  37. StreamingCommunity/Src/Api/Site/mostraguarda/__init__.py +48 -48
  38. StreamingCommunity/Src/Api/Site/mostraguarda/costant.py +14 -14
  39. StreamingCommunity/Src/Api/Site/mostraguarda/film.py +94 -94
  40. StreamingCommunity/Src/Api/Site/piratebays/__init__.py +50 -50
  41. StreamingCommunity/Src/Api/Site/piratebays/costant.py +14 -14
  42. StreamingCommunity/Src/Api/Site/piratebays/site.py +88 -88
  43. StreamingCommunity/Src/Api/Site/piratebays/title.py +45 -45
  44. StreamingCommunity/Src/Api/Site/streamingcommunity/__init__.py +55 -55
  45. StreamingCommunity/Src/Api/Site/streamingcommunity/costant.py +14 -14
  46. StreamingCommunity/Src/Api/Site/streamingcommunity/film.py +70 -70
  47. StreamingCommunity/Src/Api/Site/streamingcommunity/series.py +203 -203
  48. StreamingCommunity/Src/Api/Site/streamingcommunity/site.py +125 -125
  49. StreamingCommunity/Src/Api/Template/Class/SearchType.py +101 -101
  50. StreamingCommunity/Src/Api/Template/Util/__init__.py +4 -4
  51. StreamingCommunity/Src/Api/Template/Util/get_domain.py +137 -137
  52. StreamingCommunity/Src/Api/Template/Util/manage_ep.py +153 -153
  53. StreamingCommunity/Src/Api/Template/Util/recall_search.py +37 -37
  54. StreamingCommunity/Src/Api/Template/__init__.py +2 -2
  55. StreamingCommunity/Src/Api/Template/site.py +87 -87
  56. StreamingCommunity/Src/Lib/Downloader/HLS/downloader.py +968 -968
  57. StreamingCommunity/Src/Lib/Downloader/HLS/proxyes.py +110 -110
  58. StreamingCommunity/Src/Lib/Downloader/HLS/segments.py +540 -540
  59. StreamingCommunity/Src/Lib/Downloader/MP4/downloader.py +156 -156
  60. StreamingCommunity/Src/Lib/Downloader/TOR/downloader.py +222 -222
  61. StreamingCommunity/Src/Lib/Downloader/__init__.py +4 -4
  62. StreamingCommunity/Src/Lib/Driver/driver_1.py +76 -76
  63. StreamingCommunity/Src/Lib/FFmpeg/__init__.py +4 -4
  64. StreamingCommunity/Src/Lib/FFmpeg/capture.py +170 -170
  65. StreamingCommunity/Src/Lib/FFmpeg/command.py +292 -292
  66. StreamingCommunity/Src/Lib/FFmpeg/util.py +241 -241
  67. StreamingCommunity/Src/Lib/M3U8/__init__.py +5 -5
  68. StreamingCommunity/Src/Lib/M3U8/decryptor.py +128 -128
  69. StreamingCommunity/Src/Lib/M3U8/estimator.py +172 -172
  70. StreamingCommunity/Src/Lib/M3U8/parser.py +666 -666
  71. StreamingCommunity/Src/Lib/M3U8/url_fixer.py +51 -51
  72. StreamingCommunity/Src/Lib/TMBD/__init__.py +1 -1
  73. StreamingCommunity/Src/Lib/TMBD/obj_tmbd.py +39 -39
  74. StreamingCommunity/Src/Lib/TMBD/tmdb.py +345 -345
  75. StreamingCommunity/Src/Upload/update.py +64 -64
  76. StreamingCommunity/Src/Upload/version.py +5 -5
  77. StreamingCommunity/Src/Util/_jsonConfig.py +204 -204
  78. StreamingCommunity/Src/Util/call_stack.py +42 -42
  79. StreamingCommunity/Src/Util/color.py +20 -20
  80. StreamingCommunity/Src/Util/console.py +12 -12
  81. StreamingCommunity/Src/Util/headers.py +147 -147
  82. StreamingCommunity/Src/Util/logger.py +53 -53
  83. StreamingCommunity/Src/Util/message.py +46 -46
  84. StreamingCommunity/Src/Util/os.py +417 -417
  85. StreamingCommunity/Src/Util/table.py +163 -163
  86. StreamingCommunity/run.py +196 -196
  87. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/METADATA +1 -1
  88. StreamingCommunity-1.8.0.dist-info/RECORD +97 -0
  89. StreamingCommunity-1.7.6.dist-info/RECORD +0 -97
  90. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/LICENSE +0 -0
  91. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/WHEEL +0 -0
  92. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/entry_points.txt +0 -0
  93. {StreamingCommunity-1.7.6.dist-info → StreamingCommunity-1.8.0.dist-info}/top_level.txt +0 -0
@@ -1,20 +1,20 @@
1
- # 24.05.24
2
-
3
- class Colors:
4
- BLACK = "\033[30m"
5
- RED = "\033[31m"
6
- GREEN = "\033[32m"
7
- YELLOW = "\033[33m"
8
- BLUE = "\033[34m"
9
- MAGENTA = "\033[35m"
10
- CYAN = "\033[36m"
11
- LIGHT_GRAY = "\033[37m"
12
- DARK_GRAY = "\033[90m"
13
- LIGHT_RED = "\033[91m"
14
- LIGHT_GREEN = "\033[92m"
15
- LIGHT_YELLOW = "\033[93m"
16
- LIGHT_BLUE = "\033[94m"
17
- LIGHT_MAGENTA = "\033[95m"
18
- LIGHT_CYAN = "\033[96m"
19
- WHITE = "\033[97m"
20
- RESET = "\033[0m"
1
+ # 24.05.24
2
+
3
+ class Colors:
4
+ BLACK = "\033[30m"
5
+ RED = "\033[31m"
6
+ GREEN = "\033[32m"
7
+ YELLOW = "\033[33m"
8
+ BLUE = "\033[34m"
9
+ MAGENTA = "\033[35m"
10
+ CYAN = "\033[36m"
11
+ LIGHT_GRAY = "\033[37m"
12
+ DARK_GRAY = "\033[90m"
13
+ LIGHT_RED = "\033[91m"
14
+ LIGHT_GREEN = "\033[92m"
15
+ LIGHT_YELLOW = "\033[93m"
16
+ LIGHT_BLUE = "\033[94m"
17
+ LIGHT_MAGENTA = "\033[95m"
18
+ LIGHT_CYAN = "\033[96m"
19
+ WHITE = "\033[97m"
20
+ RESET = "\033[0m"
@@ -1,12 +1,12 @@
1
- # 24.02.24
2
-
3
- from rich.console import Console
4
- from rich.prompt import Prompt, Confirm
5
- from rich.panel import Panel
6
- from rich.table import Table
7
- from rich.text import Text
8
-
9
-
10
- # Variable
11
- msg = Prompt()
12
- console = Console()
1
+ # 24.02.24
2
+
3
+ from rich.console import Console
4
+ from rich.prompt import Prompt, Confirm
5
+ from rich.panel import Panel
6
+ from rich.table import Table
7
+ from rich.text import Text
8
+
9
+
10
+ # Variable
11
+ msg = Prompt()
12
+ console = Console()
@@ -1,147 +1,147 @@
1
- # 4.04.24
2
-
3
- import re
4
- import random
5
-
6
-
7
- # External library
8
- from fake_useragent import UserAgent
9
-
10
-
11
- # Variable
12
- ua = UserAgent()
13
-
14
-
15
- def extract_versions(user_agent):
16
- """
17
- Extract browser versions from the user agent.
18
-
19
- Parameters:
20
- user_agent (str): User agent of the browser.
21
-
22
- Returns:
23
- list: List of browser versions.
24
- """
25
-
26
- # Patterns to extract versions from various user agents
27
- patterns = {
28
- 'chrome': re.compile(r'Chrome/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
29
- 'firefox': re.compile(r'Firefox/(\d+)\.?(\d+)?\.?(\d+)?'),
30
- 'safari': re.compile(r'Version/(\d+)\.(\d+)\.(\d+) Safari/(\d+)\.(\d+)\.(\d+)'),
31
- 'edge': re.compile(r'Edg/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
32
- 'edgios': re.compile(r'EdgiOS/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
33
- 'crios': re.compile(r'CriOS/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
34
- }
35
-
36
- for key, pattern in patterns.items():
37
- match = pattern.search(user_agent)
38
- if match:
39
- return [match.group(i+1) for i in range(match.lastindex)]
40
-
41
- # Fallback values if specific versions are not found
42
- return ['99', '0', '0', '0']
43
-
44
- def get_platform(user_agent):
45
- """
46
- Determine the device platform from the user agent.
47
-
48
- Parameters:
49
- user_agent (str): User agent of the browser.
50
-
51
- Returns:
52
- str: Device platform.
53
- """
54
- if 'Windows' in user_agent:
55
- return '"Windows"'
56
- elif 'Mac OS X' in user_agent:
57
- return '"macOS"'
58
- elif 'Android' in user_agent:
59
- return '"Android"'
60
- elif 'iPhone' in user_agent or 'iPad' in user_agent:
61
- return '"iOS"'
62
- elif 'Linux' in user_agent:
63
- return '"Linux"'
64
- return '"Unknown"'
65
-
66
- def get_model(user_agent):
67
- """
68
- Determine the device model from the user agent.
69
-
70
- Parameters:
71
- user_agent (str): User agent of the browser.
72
-
73
- Returns:
74
- str: Device model.
75
- """
76
- if 'iPhone' in user_agent:
77
- return '"iPhone"'
78
- elif 'iPad' in user_agent:
79
- return '"iPad"'
80
- elif 'Android' in user_agent:
81
- return '"Android"'
82
- elif 'Windows' in user_agent:
83
- return '"PC"'
84
- elif 'Mac OS X' in user_agent:
85
- return '"Mac"'
86
- elif 'Linux' in user_agent:
87
- return '"Linux"'
88
- return '"Unknown"'
89
-
90
- def random_headers(referer: str = None):
91
- """
92
- Generate random HTTP headers to simulate human-like behavior.
93
-
94
- Returns:
95
- dict: Generated HTTP headers.
96
- """
97
- user_agent = ua.random
98
- versions = extract_versions(user_agent)
99
- platform = get_platform(user_agent)
100
- model = get_model(user_agent)
101
- is_mobile = 'Mobi' in user_agent or 'Android' in user_agent
102
-
103
- # Generate sec-ch-ua string based on the browser
104
- if 'Chrome' in user_agent or 'CriOS' in user_agent:
105
- sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Chromium";v="{versions[0]}", "Google Chrome";v="{versions[0]}"'
106
- elif 'Edg' in user_agent or 'EdgiOS' in user_agent:
107
- sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Chromium";v="{versions[0]}", "Microsoft Edge";v="{versions[0]}"'
108
- elif 'Firefox' in user_agent:
109
- sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Firefox";v="{versions[0]}"'
110
- elif 'Safari' in user_agent:
111
- sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Safari";v="{versions[0]}"'
112
- else:
113
- sec_ch_ua = f'" Not;A Brand";v="{versions[0]}"'
114
-
115
- headers = {
116
- 'User-Agent': user_agent,
117
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
118
- 'Accept-Language': random.choice(['en-US', 'en-GB', 'fr-FR', 'es-ES', 'de-DE']),
119
- 'Accept-Encoding': 'gzip, deflate, br',
120
- 'Connection': 'keep-alive',
121
- 'Upgrade-Insecure-Requests': '1',
122
- 'Sec-Fetch-Dest': 'document',
123
- 'Sec-Fetch-Mode': 'navigate',
124
- 'Sec-Fetch-Site': 'none',
125
- 'Sec-Fetch-User': '?1',
126
- 'sec-ch-ua-mobile': '?1' if is_mobile else '?0',
127
- 'sec-ch-ua-platform': platform,
128
- 'sec-ch-ua': sec_ch_ua,
129
- 'sec-ch-ua-model': model
130
- }
131
-
132
- if referer:
133
- headers['Origin'] = referer
134
- headers['Referer'] = referer
135
-
136
- return headers
137
-
138
- def get_headers() -> str:
139
- """
140
- Generate a random user agent to use in HTTP requests.
141
-
142
- Returns:
143
- - str: A random user agent string.
144
- """
145
-
146
- # Get a random user agent string from the user agent rotator
147
- return str(ua.chrome)
1
+ # 4.04.24
2
+
3
+ import re
4
+ import random
5
+
6
+
7
+ # External library
8
+ from fake_useragent import UserAgent
9
+
10
+
11
+ # Variable
12
+ ua = UserAgent()
13
+
14
+
15
+ def extract_versions(user_agent):
16
+ """
17
+ Extract browser versions from the user agent.
18
+
19
+ Parameters:
20
+ user_agent (str): User agent of the browser.
21
+
22
+ Returns:
23
+ list: List of browser versions.
24
+ """
25
+
26
+ # Patterns to extract versions from various user agents
27
+ patterns = {
28
+ 'chrome': re.compile(r'Chrome/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
29
+ 'firefox': re.compile(r'Firefox/(\d+)\.?(\d+)?\.?(\d+)?'),
30
+ 'safari': re.compile(r'Version/(\d+)\.(\d+)\.(\d+) Safari/(\d+)\.(\d+)\.(\d+)'),
31
+ 'edge': re.compile(r'Edg/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
32
+ 'edgios': re.compile(r'EdgiOS/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
33
+ 'crios': re.compile(r'CriOS/(\d+)\.(\d+)\.(\d+)\.(\d+)'),
34
+ }
35
+
36
+ for key, pattern in patterns.items():
37
+ match = pattern.search(user_agent)
38
+ if match:
39
+ return [match.group(i+1) for i in range(match.lastindex)]
40
+
41
+ # Fallback values if specific versions are not found
42
+ return ['99', '0', '0', '0']
43
+
44
+ def get_platform(user_agent):
45
+ """
46
+ Determine the device platform from the user agent.
47
+
48
+ Parameters:
49
+ user_agent (str): User agent of the browser.
50
+
51
+ Returns:
52
+ str: Device platform.
53
+ """
54
+ if 'Windows' in user_agent:
55
+ return '"Windows"'
56
+ elif 'Mac OS X' in user_agent:
57
+ return '"macOS"'
58
+ elif 'Android' in user_agent:
59
+ return '"Android"'
60
+ elif 'iPhone' in user_agent or 'iPad' in user_agent:
61
+ return '"iOS"'
62
+ elif 'Linux' in user_agent:
63
+ return '"Linux"'
64
+ return '"Unknown"'
65
+
66
+ def get_model(user_agent):
67
+ """
68
+ Determine the device model from the user agent.
69
+
70
+ Parameters:
71
+ user_agent (str): User agent of the browser.
72
+
73
+ Returns:
74
+ str: Device model.
75
+ """
76
+ if 'iPhone' in user_agent:
77
+ return '"iPhone"'
78
+ elif 'iPad' in user_agent:
79
+ return '"iPad"'
80
+ elif 'Android' in user_agent:
81
+ return '"Android"'
82
+ elif 'Windows' in user_agent:
83
+ return '"PC"'
84
+ elif 'Mac OS X' in user_agent:
85
+ return '"Mac"'
86
+ elif 'Linux' in user_agent:
87
+ return '"Linux"'
88
+ return '"Unknown"'
89
+
90
+ def random_headers(referer: str = None):
91
+ """
92
+ Generate random HTTP headers to simulate human-like behavior.
93
+
94
+ Returns:
95
+ dict: Generated HTTP headers.
96
+ """
97
+ user_agent = ua.random
98
+ versions = extract_versions(user_agent)
99
+ platform = get_platform(user_agent)
100
+ model = get_model(user_agent)
101
+ is_mobile = 'Mobi' in user_agent or 'Android' in user_agent
102
+
103
+ # Generate sec-ch-ua string based on the browser
104
+ if 'Chrome' in user_agent or 'CriOS' in user_agent:
105
+ sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Chromium";v="{versions[0]}", "Google Chrome";v="{versions[0]}"'
106
+ elif 'Edg' in user_agent or 'EdgiOS' in user_agent:
107
+ sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Chromium";v="{versions[0]}", "Microsoft Edge";v="{versions[0]}"'
108
+ elif 'Firefox' in user_agent:
109
+ sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Firefox";v="{versions[0]}"'
110
+ elif 'Safari' in user_agent:
111
+ sec_ch_ua = f'" Not;A Brand";v="{versions[0]}", "Safari";v="{versions[0]}"'
112
+ else:
113
+ sec_ch_ua = f'" Not;A Brand";v="{versions[0]}"'
114
+
115
+ headers = {
116
+ 'User-Agent': user_agent,
117
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
118
+ 'Accept-Language': random.choice(['en-US', 'en-GB', 'fr-FR', 'es-ES', 'de-DE']),
119
+ 'Accept-Encoding': 'gzip, deflate, br',
120
+ 'Connection': 'keep-alive',
121
+ 'Upgrade-Insecure-Requests': '1',
122
+ 'Sec-Fetch-Dest': 'document',
123
+ 'Sec-Fetch-Mode': 'navigate',
124
+ 'Sec-Fetch-Site': 'none',
125
+ 'Sec-Fetch-User': '?1',
126
+ 'sec-ch-ua-mobile': '?1' if is_mobile else '?0',
127
+ 'sec-ch-ua-platform': platform,
128
+ 'sec-ch-ua': sec_ch_ua,
129
+ 'sec-ch-ua-model': model
130
+ }
131
+
132
+ if referer:
133
+ headers['Origin'] = referer
134
+ headers['Referer'] = referer
135
+
136
+ return headers
137
+
138
+ def get_headers() -> str:
139
+ """
140
+ Generate a random user agent to use in HTTP requests.
141
+
142
+ Returns:
143
+ - str: A random user agent string.
144
+ """
145
+
146
+ # Get a random user agent string from the user agent rotator
147
+ return str(ua.chrome)
@@ -1,53 +1,53 @@
1
- # 26.03.24
2
-
3
- import logging
4
- from logging.handlers import RotatingFileHandler
5
-
6
-
7
- # Internal utilities
8
- from StreamingCommunity.Src.Util._jsonConfig import config_manager
9
-
10
-
11
- class Logger:
12
- def __init__(self):
13
-
14
- # Fetching configuration values
15
- self.DEBUG_MODE = config_manager.get_bool("DEFAULT", "debug")
16
- self.log_to_file = config_manager.get_bool("DEFAULT", "log_to_file")
17
- self.log_file = config_manager.get("DEFAULT", "log_file") if self.log_to_file else None
18
-
19
- logging.getLogger("httpx").setLevel(logging.WARNING)
20
- logging.getLogger("httpcore").setLevel(logging.WARNING)
21
-
22
-
23
- # Setting logging level based on DEBUG_MODE
24
- if self.DEBUG_MODE:
25
- logging.getLogger('root').setLevel(logging.DEBUG)
26
-
27
- # Configure file logging if debug mode and logging to file are both enabled
28
- if self.log_to_file:
29
- self.configure_file_logging()
30
- else:
31
-
32
- # If DEBUG_MODE is False, set logging level to ERROR
33
- logging.getLogger('root').setLevel(logging.ERROR)
34
-
35
- # Configure console logging
36
- self.configure_logging()
37
-
38
- def configure_logging(self):
39
- """
40
- Configure console logging.
41
- """
42
- logging.basicConfig(level=logging.DEBUG, format='[%(filename)s:%(lineno)s - %(funcName)20s() ] %(asctime)s - %(levelname)s - %(message)s')
43
-
44
- def configure_file_logging(self):
45
- """
46
- Configure file logging if enabled.
47
- """
48
-
49
- file_handler = RotatingFileHandler(self.log_file, maxBytes=10*1024*1024, backupCount=5)
50
- file_handler.setLevel(logging.DEBUG)
51
- formatter = logging.Formatter('[%(filename)s:%(lineno)s - %(funcName)20s() ] %(asctime)s - %(levelname)s - %(message)s')
52
- file_handler.setFormatter(formatter)
53
- logging.getLogger('').addHandler(file_handler)
1
+ # 26.03.24
2
+
3
+ import logging
4
+ from logging.handlers import RotatingFileHandler
5
+
6
+
7
+ # Internal utilities
8
+ from StreamingCommunity.Src.Util._jsonConfig import config_manager
9
+
10
+
11
+ class Logger:
12
+ def __init__(self):
13
+
14
+ # Fetching configuration values
15
+ self.DEBUG_MODE = config_manager.get_bool("DEFAULT", "debug")
16
+ self.log_to_file = config_manager.get_bool("DEFAULT", "log_to_file")
17
+ self.log_file = config_manager.get("DEFAULT", "log_file") if self.log_to_file else None
18
+
19
+ logging.getLogger("httpx").setLevel(logging.WARNING)
20
+ logging.getLogger("httpcore").setLevel(logging.WARNING)
21
+
22
+
23
+ # Setting logging level based on DEBUG_MODE
24
+ if self.DEBUG_MODE:
25
+ logging.getLogger('root').setLevel(logging.DEBUG)
26
+
27
+ # Configure file logging if debug mode and logging to file are both enabled
28
+ if self.log_to_file:
29
+ self.configure_file_logging()
30
+ else:
31
+
32
+ # If DEBUG_MODE is False, set logging level to ERROR
33
+ logging.getLogger('root').setLevel(logging.ERROR)
34
+
35
+ # Configure console logging
36
+ self.configure_logging()
37
+
38
+ def configure_logging(self):
39
+ """
40
+ Configure console logging.
41
+ """
42
+ logging.basicConfig(level=logging.DEBUG, format='[%(filename)s:%(lineno)s - %(funcName)20s() ] %(asctime)s - %(levelname)s - %(message)s')
43
+
44
+ def configure_file_logging(self):
45
+ """
46
+ Configure file logging if enabled.
47
+ """
48
+
49
+ file_handler = RotatingFileHandler(self.log_file, maxBytes=10*1024*1024, backupCount=5)
50
+ file_handler.setLevel(logging.DEBUG)
51
+ formatter = logging.Formatter('[%(filename)s:%(lineno)s - %(funcName)20s() ] %(asctime)s - %(levelname)s - %(message)s')
52
+ file_handler.setFormatter(formatter)
53
+ logging.getLogger('').addHandler(file_handler)
@@ -1,46 +1,46 @@
1
- # 3.12.23
2
-
3
- import os
4
- import platform
5
-
6
-
7
- # Internal utilities
8
- from StreamingCommunity.Src.Util.console import console
9
- from StreamingCommunity.Src.Util._jsonConfig import config_manager
10
-
11
-
12
- # Variable
13
- CLEAN = config_manager.get_bool('DEFAULT', 'clean_console')
14
- SHOW = config_manager.get_bool('DEFAULT', 'show_message')
15
-
16
-
17
- def start_message():
18
- """
19
- Display a start message.
20
- """
21
-
22
- msg = r'''
23
-
24
- _____ _ _ _____ _ _
25
- / ____| | (_) / ____| (_) |
26
- | (___ | |_ _ __ ___ __ _ _ __ ___ _ _ __ __ _ | | ___ _ __ ___ _ __ ___ _ _ _ __ _| |_ _ _
27
- \___ \| __| '__/ _ \/ _` | '_ ` _ \| | '_ \ / _` | | | / _ \| '_ ` _ \| '_ ` _ \| | | | '_ \| | __| | | |
28
- ____) | |_| | | __/ (_| | | | | | | | | | | (_| | | |___| (_) | | | | | | | | | | | |_| | | | | | |_| |_| |
29
- |_____/ \__|_| \___|\__,_|_| |_| |_|_|_| |_|\__, | \_____\___/|_| |_| |_|_| |_| |_|\__,_|_| |_|_|\__|\__, |
30
- __/ | __/ |
31
- |___/ |___/
32
-
33
- '''
34
-
35
- if CLEAN:
36
- if platform.system() == 'Windows':
37
- os.system("cls")
38
- else:
39
- os.system("clear")
40
-
41
- if SHOW:
42
- console.print(f"[bold yellow]{msg}")
43
- console.print(f"[magenta]Created by: Lovi\n")
44
-
45
- row = "-" * console.width
46
- console.print(f"[yellow]{row} \n")
1
+ # 3.12.23
2
+
3
+ import os
4
+ import platform
5
+
6
+
7
+ # Internal utilities
8
+ from StreamingCommunity.Src.Util.console import console
9
+ from StreamingCommunity.Src.Util._jsonConfig import config_manager
10
+
11
+
12
+ # Variable
13
+ CLEAN = config_manager.get_bool('DEFAULT', 'clean_console')
14
+ SHOW = config_manager.get_bool('DEFAULT', 'show_message')
15
+
16
+
17
+ def start_message():
18
+ """
19
+ Display a start message.
20
+ """
21
+
22
+ msg = r'''
23
+
24
+ _____ _ _ _____ _ _
25
+ / ____| | (_) / ____| (_) |
26
+ | (___ | |_ _ __ ___ __ _ _ __ ___ _ _ __ __ _ | | ___ _ __ ___ _ __ ___ _ _ _ __ _| |_ _ _
27
+ \___ \| __| '__/ _ \/ _` | '_ ` _ \| | '_ \ / _` | | | / _ \| '_ ` _ \| '_ ` _ \| | | | '_ \| | __| | | |
28
+ ____) | |_| | | __/ (_| | | | | | | | | | | (_| | | |___| (_) | | | | | | | | | | | |_| | | | | | |_| |_| |
29
+ |_____/ \__|_| \___|\__,_|_| |_| |_|_|_| |_|\__, | \_____\___/|_| |_| |_|_| |_| |_|\__,_|_| |_|_|\__|\__, |
30
+ __/ | __/ |
31
+ |___/ |___/
32
+
33
+ '''
34
+
35
+ if CLEAN:
36
+ if platform.system() == 'Windows':
37
+ os.system("cls")
38
+ else:
39
+ os.system("clear")
40
+
41
+ if SHOW:
42
+ console.print(f"[bold yellow]{msg}")
43
+ console.print(f"[magenta]Created by: Lovi\n")
44
+
45
+ row = "-" * console.width
46
+ console.print(f"[yellow]{row} \n")