webscout 7.1__py3-none-any.whl → 7.2__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 webscout might be problematic. Click here for more details.

Files changed (144) hide show
  1. webscout/AIauto.py +191 -191
  2. webscout/AIbase.py +122 -122
  3. webscout/AIutel.py +440 -440
  4. webscout/Bard.py +343 -161
  5. webscout/DWEBS.py +489 -492
  6. webscout/Extra/YTToolkit/YTdownloader.py +995 -995
  7. webscout/Extra/YTToolkit/__init__.py +2 -2
  8. webscout/Extra/YTToolkit/transcriber.py +476 -479
  9. webscout/Extra/YTToolkit/ytapi/channel.py +307 -307
  10. webscout/Extra/YTToolkit/ytapi/playlist.py +58 -58
  11. webscout/Extra/YTToolkit/ytapi/pool.py +7 -7
  12. webscout/Extra/YTToolkit/ytapi/utils.py +62 -62
  13. webscout/Extra/YTToolkit/ytapi/video.py +103 -103
  14. webscout/Extra/autocoder/__init__.py +9 -9
  15. webscout/Extra/autocoder/autocoder_utiles.py +199 -199
  16. webscout/Extra/autocoder/rawdog.py +5 -7
  17. webscout/Extra/autollama.py +230 -230
  18. webscout/Extra/gguf.py +3 -3
  19. webscout/Extra/weather.py +171 -171
  20. webscout/LLM.py +442 -442
  21. webscout/Litlogger/__init__.py +67 -681
  22. webscout/Litlogger/core/__init__.py +6 -0
  23. webscout/Litlogger/core/level.py +20 -0
  24. webscout/Litlogger/core/logger.py +123 -0
  25. webscout/Litlogger/handlers/__init__.py +12 -0
  26. webscout/Litlogger/handlers/console.py +50 -0
  27. webscout/Litlogger/handlers/file.py +143 -0
  28. webscout/Litlogger/handlers/network.py +174 -0
  29. webscout/Litlogger/styles/__init__.py +7 -0
  30. webscout/Litlogger/styles/colors.py +231 -0
  31. webscout/Litlogger/styles/formats.py +377 -0
  32. webscout/Litlogger/styles/text.py +87 -0
  33. webscout/Litlogger/utils/__init__.py +6 -0
  34. webscout/Litlogger/utils/detectors.py +154 -0
  35. webscout/Litlogger/utils/formatters.py +200 -0
  36. webscout/Provider/AISEARCH/DeepFind.py +250 -250
  37. webscout/Provider/Blackboxai.py +3 -3
  38. webscout/Provider/ChatGPTGratis.py +226 -0
  39. webscout/Provider/Cloudflare.py +3 -4
  40. webscout/Provider/DeepSeek.py +218 -0
  41. webscout/Provider/Deepinfra.py +3 -3
  42. webscout/Provider/Free2GPT.py +131 -124
  43. webscout/Provider/Gemini.py +100 -115
  44. webscout/Provider/Glider.py +3 -3
  45. webscout/Provider/Groq.py +5 -1
  46. webscout/Provider/Jadve.py +3 -3
  47. webscout/Provider/Marcus.py +191 -192
  48. webscout/Provider/Netwrck.py +3 -3
  49. webscout/Provider/PI.py +2 -2
  50. webscout/Provider/PizzaGPT.py +2 -3
  51. webscout/Provider/QwenLM.py +311 -0
  52. webscout/Provider/TTI/AiForce/__init__.py +22 -22
  53. webscout/Provider/TTI/AiForce/async_aiforce.py +257 -257
  54. webscout/Provider/TTI/AiForce/sync_aiforce.py +242 -242
  55. webscout/Provider/TTI/Nexra/__init__.py +22 -22
  56. webscout/Provider/TTI/Nexra/async_nexra.py +286 -286
  57. webscout/Provider/TTI/Nexra/sync_nexra.py +258 -258
  58. webscout/Provider/TTI/PollinationsAI/__init__.py +23 -23
  59. webscout/Provider/TTI/PollinationsAI/async_pollinations.py +330 -330
  60. webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +285 -285
  61. webscout/Provider/TTI/artbit/__init__.py +22 -22
  62. webscout/Provider/TTI/artbit/async_artbit.py +184 -184
  63. webscout/Provider/TTI/artbit/sync_artbit.py +176 -176
  64. webscout/Provider/TTI/blackbox/__init__.py +4 -4
  65. webscout/Provider/TTI/blackbox/async_blackbox.py +212 -212
  66. webscout/Provider/TTI/blackbox/sync_blackbox.py +199 -199
  67. webscout/Provider/TTI/deepinfra/__init__.py +4 -4
  68. webscout/Provider/TTI/deepinfra/async_deepinfra.py +227 -227
  69. webscout/Provider/TTI/deepinfra/sync_deepinfra.py +199 -199
  70. webscout/Provider/TTI/huggingface/__init__.py +22 -22
  71. webscout/Provider/TTI/huggingface/async_huggingface.py +199 -199
  72. webscout/Provider/TTI/huggingface/sync_huggingface.py +195 -195
  73. webscout/Provider/TTI/imgninza/__init__.py +4 -4
  74. webscout/Provider/TTI/imgninza/async_ninza.py +214 -214
  75. webscout/Provider/TTI/imgninza/sync_ninza.py +209 -209
  76. webscout/Provider/TTI/talkai/__init__.py +4 -4
  77. webscout/Provider/TTI/talkai/async_talkai.py +229 -229
  78. webscout/Provider/TTI/talkai/sync_talkai.py +207 -207
  79. webscout/Provider/TTS/deepgram.py +182 -182
  80. webscout/Provider/TTS/elevenlabs.py +136 -136
  81. webscout/Provider/TTS/gesserit.py +150 -150
  82. webscout/Provider/TTS/murfai.py +138 -138
  83. webscout/Provider/TTS/parler.py +133 -134
  84. webscout/Provider/TTS/streamElements.py +360 -360
  85. webscout/Provider/TTS/utils.py +280 -280
  86. webscout/Provider/TTS/voicepod.py +116 -116
  87. webscout/Provider/TextPollinationsAI.py +2 -3
  88. webscout/Provider/WiseCat.py +193 -0
  89. webscout/Provider/__init__.py +144 -134
  90. webscout/Provider/cerebras.py +242 -227
  91. webscout/Provider/chatglm.py +204 -204
  92. webscout/Provider/dgaf.py +2 -3
  93. webscout/Provider/gaurish.py +2 -3
  94. webscout/Provider/geminiapi.py +208 -208
  95. webscout/Provider/granite.py +223 -0
  96. webscout/Provider/hermes.py +218 -218
  97. webscout/Provider/llama3mitril.py +179 -179
  98. webscout/Provider/llamatutor.py +3 -3
  99. webscout/Provider/llmchat.py +2 -3
  100. webscout/Provider/meta.py +794 -794
  101. webscout/Provider/multichat.py +331 -331
  102. webscout/Provider/typegpt.py +359 -359
  103. webscout/Provider/yep.py +2 -2
  104. webscout/__main__.py +5 -5
  105. webscout/cli.py +319 -319
  106. webscout/conversation.py +241 -242
  107. webscout/exceptions.py +328 -328
  108. webscout/litagent/__init__.py +28 -28
  109. webscout/litagent/agent.py +2 -3
  110. webscout/litprinter/__init__.py +0 -58
  111. webscout/scout/__init__.py +8 -8
  112. webscout/scout/core.py +884 -884
  113. webscout/scout/element.py +459 -459
  114. webscout/scout/parsers/__init__.py +69 -69
  115. webscout/scout/parsers/html5lib_parser.py +172 -172
  116. webscout/scout/parsers/html_parser.py +236 -236
  117. webscout/scout/parsers/lxml_parser.py +178 -178
  118. webscout/scout/utils.py +38 -38
  119. webscout/swiftcli/__init__.py +811 -811
  120. webscout/update_checker.py +2 -12
  121. webscout/version.py +1 -1
  122. webscout/webscout_search.py +5 -4
  123. webscout/zeroart/__init__.py +54 -54
  124. webscout/zeroart/base.py +60 -60
  125. webscout/zeroart/effects.py +99 -99
  126. webscout/zeroart/fonts.py +816 -816
  127. {webscout-7.1.dist-info → webscout-7.2.dist-info}/METADATA +4 -3
  128. webscout-7.2.dist-info/RECORD +217 -0
  129. webstoken/__init__.py +30 -30
  130. webstoken/classifier.py +189 -189
  131. webstoken/keywords.py +216 -216
  132. webstoken/language.py +128 -128
  133. webstoken/ner.py +164 -164
  134. webstoken/normalizer.py +35 -35
  135. webstoken/processor.py +77 -77
  136. webstoken/sentiment.py +206 -206
  137. webstoken/stemmer.py +73 -73
  138. webstoken/tagger.py +60 -60
  139. webstoken/tokenizer.py +158 -158
  140. webscout-7.1.dist-info/RECORD +0 -198
  141. {webscout-7.1.dist-info → webscout-7.2.dist-info}/LICENSE.md +0 -0
  142. {webscout-7.1.dist-info → webscout-7.2.dist-info}/WHEEL +0 -0
  143. {webscout-7.1.dist-info → webscout-7.2.dist-info}/entry_points.txt +0 -0
  144. {webscout-7.1.dist-info → webscout-7.2.dist-info}/top_level.txt +0 -0
@@ -1,236 +1,236 @@
1
- """
2
- Scout HTML Parser - Advanced HTML Parsing with Python's Built-in Parser
3
- """
4
-
5
- import html
6
- import re
7
- from html.parser import HTMLParser as StdHTMLParser
8
- from typing import List, Optional, Dict, Any, Union
9
-
10
- from ..element import Tag, NavigableString
11
-
12
- class HTMLParser:
13
- """
14
- Advanced HTML parser using Python's built-in HTMLParser.
15
- Provides robust parsing with enhanced error handling and flexibility.
16
- """
17
-
18
- def __init__(self):
19
- """
20
- Initialize the HTML parser with advanced parsing capabilities.
21
- """
22
- self._root = Tag('html')
23
- self._current_tag = self._root
24
- self._tag_stack = [self._root]
25
- self._parsing_errors = []
26
-
27
- def parse(self, markup: str) -> Tag:
28
- """
29
- Parse HTML markup and return the root tag.
30
-
31
- Args:
32
- markup (str): HTML content to parse
33
-
34
- Returns:
35
- Tag: Parsed HTML document root
36
- """
37
- try:
38
- # Preprocess markup to handle common issues
39
- markup = self._preprocess_markup(markup)
40
-
41
- # Create a standard HTML parser
42
- parser = _ScoutHTMLParser(self)
43
- parser.feed(markup)
44
- parser.close()
45
-
46
- return self._root
47
- except Exception as e:
48
- self._parsing_errors.append(str(e))
49
- return self._root
50
-
51
- def _preprocess_markup(self, markup: str) -> str:
52
- """
53
- Preprocess HTML markup to handle common parsing issues.
54
-
55
- Args:
56
- markup (str): Raw HTML markup
57
-
58
- Returns:
59
- str: Preprocessed HTML markup
60
- """
61
- # Decode HTML entities
62
- markup = html.unescape(markup)
63
-
64
- # Handle unclosed tags (basic approach)
65
- markup = re.sub(r'<(br|img|input|hr|meta)([^>]*?)(?<!/)>', r'<\1\2 />', markup, flags=re.IGNORECASE)
66
-
67
- # Remove comments (optional, can be configurable)
68
- markup = re.sub(r'<!--.*?-->', '', markup, flags=re.DOTALL)
69
-
70
- return markup
71
-
72
- def add_tag(self, tag: Tag):
73
- """
74
- Add a tag to the current parsing context.
75
-
76
- Args:
77
- tag (Tag): Tag to add
78
- """
79
- # Set parent-child relationships
80
- tag.parent = self._current_tag
81
- self._current_tag.contents.append(tag)
82
-
83
- # Update current tag if it's an opening tag
84
- self._current_tag = tag
85
- self._tag_stack.append(tag)
86
-
87
- def add_text(self, text: str):
88
- """
89
- Add text content to the current tag.
90
-
91
- Args:
92
- text (str): Text content
93
- """
94
- if text.strip():
95
- text_node = NavigableString(text)
96
- text_node.parent = self._current_tag
97
- self._current_tag.contents.append(text_node)
98
-
99
- def close_tag(self):
100
- """
101
- Close the current tag and return to parent context.
102
- """
103
- if len(self._tag_stack) > 1:
104
- self._tag_stack.pop()
105
- self._current_tag = self._tag_stack[-1]
106
-
107
- def get_parsing_errors(self) -> List[str]:
108
- """
109
- Retrieve parsing errors encountered during HTML processing.
110
-
111
- Returns:
112
- List[str]: List of parsing error messages
113
- """
114
- return self._parsing_errors
115
-
116
- class _ScoutHTMLParser(StdHTMLParser):
117
- """
118
- Internal HTML parser that integrates with Scout's parsing mechanism.
119
- """
120
- def __init__(self, scout_parser: HTMLParser):
121
- """
122
- Initialize the parser with a Scout HTML parser.
123
-
124
- Args:
125
- scout_parser (HTMLParser): Scout's HTML parser instance
126
- """
127
- super().__init__(convert_charrefs=True)
128
- self._scout_parser = scout_parser
129
-
130
- def handle_starttag(self, tag: str, attrs: List[tuple]):
131
- """
132
- Handle opening tags during parsing.
133
-
134
- Args:
135
- tag (str): Tag name
136
- attrs (List[tuple]): Tag attributes
137
- """
138
- # Convert attrs to dictionary
139
- attrs_dict = dict(attrs)
140
-
141
- # Create Tag instance
142
- new_tag = Tag(tag, attrs_dict)
143
-
144
- # Add tag to the parsing context
145
- self._scout_parser.add_tag(new_tag)
146
-
147
- def handle_endtag(self, tag: str):
148
- """
149
- Handle closing tags during parsing.
150
-
151
- Args:
152
- tag (str): Tag name
153
- """
154
- # Close the current tag
155
- self._scout_parser.close_tag()
156
-
157
- def handle_data(self, data: str):
158
- """
159
- Handle text data during parsing.
160
-
161
- Args:
162
- data (str): Text content
163
- """
164
- # Add text to the current tag
165
- self._scout_parser.add_text(data)
166
-
167
- def handle_comment(self, data: str):
168
- """
169
- Handle HTML comments (optional, can be configured).
170
-
171
- Args:
172
- data (str): Comment content
173
- """
174
- # Optionally handle comments
175
- comment_tag = Tag('comment')
176
- comment_tag.attrs['content'] = data
177
- self._scout_parser.add_tag(comment_tag)
178
-
179
- def handle_decl(self, decl: str):
180
- """
181
- Handle HTML declarations.
182
-
183
- Args:
184
- decl (str): Declaration content
185
- """
186
- # Create a special tag for declarations
187
- decl_tag = Tag('!DOCTYPE')
188
- decl_tag.attrs['content'] = decl
189
- self._scout_parser.add_tag(decl_tag)
190
-
191
- def handle_pi(self, data: str):
192
- """
193
- Handle processing instructions.
194
-
195
- Args:
196
- data (str): Processing instruction content
197
- """
198
- # Create a special tag for processing instructions
199
- pi_tag = Tag('?')
200
- pi_tag.attrs['content'] = data
201
- self._scout_parser.add_tag(pi_tag)
202
-
203
- def handle_entityref(self, name: str):
204
- """
205
- Handle HTML entity references.
206
-
207
- Args:
208
- name (str): Entity reference name
209
- """
210
- # Convert entity references to their actual characters
211
- char = html.entities.html5.get(name, f'&{name};')
212
- self._scout_parser.add_text(char)
213
-
214
- def handle_charref(self, name: str):
215
- """
216
- Handle character references.
217
-
218
- Args:
219
- name (str): Character reference name
220
- """
221
- # Convert character references to their actual characters
222
- try:
223
- if name.startswith('x'):
224
- char = chr(int(name[1:], 16))
225
- else:
226
- char = chr(int(name))
227
- self._scout_parser.add_text(char)
228
- except ValueError:
229
- # Fallback for invalid references
230
- self._scout_parser.add_text(f'&#{name};')
231
-
232
- def close(self):
233
- """
234
- Finalize parsing and perform cleanup.
235
- """
236
- super().close()
1
+ """
2
+ Scout HTML Parser - Advanced HTML Parsing with Python's Built-in Parser
3
+ """
4
+
5
+ import html
6
+ import re
7
+ from html.parser import HTMLParser as StdHTMLParser
8
+ from typing import List, Optional, Dict, Any, Union
9
+
10
+ from ..element import Tag, NavigableString
11
+
12
+ class HTMLParser:
13
+ """
14
+ Advanced HTML parser using Python's built-in HTMLParser.
15
+ Provides robust parsing with enhanced error handling and flexibility.
16
+ """
17
+
18
+ def __init__(self):
19
+ """
20
+ Initialize the HTML parser with advanced parsing capabilities.
21
+ """
22
+ self._root = Tag('html')
23
+ self._current_tag = self._root
24
+ self._tag_stack = [self._root]
25
+ self._parsing_errors = []
26
+
27
+ def parse(self, markup: str) -> Tag:
28
+ """
29
+ Parse HTML markup and return the root tag.
30
+
31
+ Args:
32
+ markup (str): HTML content to parse
33
+
34
+ Returns:
35
+ Tag: Parsed HTML document root
36
+ """
37
+ try:
38
+ # Preprocess markup to handle common issues
39
+ markup = self._preprocess_markup(markup)
40
+
41
+ # Create a standard HTML parser
42
+ parser = _ScoutHTMLParser(self)
43
+ parser.feed(markup)
44
+ parser.close()
45
+
46
+ return self._root
47
+ except Exception as e:
48
+ self._parsing_errors.append(str(e))
49
+ return self._root
50
+
51
+ def _preprocess_markup(self, markup: str) -> str:
52
+ """
53
+ Preprocess HTML markup to handle common parsing issues.
54
+
55
+ Args:
56
+ markup (str): Raw HTML markup
57
+
58
+ Returns:
59
+ str: Preprocessed HTML markup
60
+ """
61
+ # Decode HTML entities
62
+ markup = html.unescape(markup)
63
+
64
+ # Handle unclosed tags (basic approach)
65
+ markup = re.sub(r'<(br|img|input|hr|meta)([^>]*?)(?<!/)>', r'<\1\2 />', markup, flags=re.IGNORECASE)
66
+
67
+ # Remove comments (optional, can be configurable)
68
+ markup = re.sub(r'<!--.*?-->', '', markup, flags=re.DOTALL)
69
+
70
+ return markup
71
+
72
+ def add_tag(self, tag: Tag):
73
+ """
74
+ Add a tag to the current parsing context.
75
+
76
+ Args:
77
+ tag (Tag): Tag to add
78
+ """
79
+ # Set parent-child relationships
80
+ tag.parent = self._current_tag
81
+ self._current_tag.contents.append(tag)
82
+
83
+ # Update current tag if it's an opening tag
84
+ self._current_tag = tag
85
+ self._tag_stack.append(tag)
86
+
87
+ def add_text(self, text: str):
88
+ """
89
+ Add text content to the current tag.
90
+
91
+ Args:
92
+ text (str): Text content
93
+ """
94
+ if text.strip():
95
+ text_node = NavigableString(text)
96
+ text_node.parent = self._current_tag
97
+ self._current_tag.contents.append(text_node)
98
+
99
+ def close_tag(self):
100
+ """
101
+ Close the current tag and return to parent context.
102
+ """
103
+ if len(self._tag_stack) > 1:
104
+ self._tag_stack.pop()
105
+ self._current_tag = self._tag_stack[-1]
106
+
107
+ def get_parsing_errors(self) -> List[str]:
108
+ """
109
+ Retrieve parsing errors encountered during HTML processing.
110
+
111
+ Returns:
112
+ List[str]: List of parsing error messages
113
+ """
114
+ return self._parsing_errors
115
+
116
+ class _ScoutHTMLParser(StdHTMLParser):
117
+ """
118
+ Internal HTML parser that integrates with Scout's parsing mechanism.
119
+ """
120
+ def __init__(self, scout_parser: HTMLParser):
121
+ """
122
+ Initialize the parser with a Scout HTML parser.
123
+
124
+ Args:
125
+ scout_parser (HTMLParser): Scout's HTML parser instance
126
+ """
127
+ super().__init__(convert_charrefs=True)
128
+ self._scout_parser = scout_parser
129
+
130
+ def handle_starttag(self, tag: str, attrs: List[tuple]):
131
+ """
132
+ Handle opening tags during parsing.
133
+
134
+ Args:
135
+ tag (str): Tag name
136
+ attrs (List[tuple]): Tag attributes
137
+ """
138
+ # Convert attrs to dictionary
139
+ attrs_dict = dict(attrs)
140
+
141
+ # Create Tag instance
142
+ new_tag = Tag(tag, attrs_dict)
143
+
144
+ # Add tag to the parsing context
145
+ self._scout_parser.add_tag(new_tag)
146
+
147
+ def handle_endtag(self, tag: str):
148
+ """
149
+ Handle closing tags during parsing.
150
+
151
+ Args:
152
+ tag (str): Tag name
153
+ """
154
+ # Close the current tag
155
+ self._scout_parser.close_tag()
156
+
157
+ def handle_data(self, data: str):
158
+ """
159
+ Handle text data during parsing.
160
+
161
+ Args:
162
+ data (str): Text content
163
+ """
164
+ # Add text to the current tag
165
+ self._scout_parser.add_text(data)
166
+
167
+ def handle_comment(self, data: str):
168
+ """
169
+ Handle HTML comments (optional, can be configured).
170
+
171
+ Args:
172
+ data (str): Comment content
173
+ """
174
+ # Optionally handle comments
175
+ comment_tag = Tag('comment')
176
+ comment_tag.attrs['content'] = data
177
+ self._scout_parser.add_tag(comment_tag)
178
+
179
+ def handle_decl(self, decl: str):
180
+ """
181
+ Handle HTML declarations.
182
+
183
+ Args:
184
+ decl (str): Declaration content
185
+ """
186
+ # Create a special tag for declarations
187
+ decl_tag = Tag('!DOCTYPE')
188
+ decl_tag.attrs['content'] = decl
189
+ self._scout_parser.add_tag(decl_tag)
190
+
191
+ def handle_pi(self, data: str):
192
+ """
193
+ Handle processing instructions.
194
+
195
+ Args:
196
+ data (str): Processing instruction content
197
+ """
198
+ # Create a special tag for processing instructions
199
+ pi_tag = Tag('?')
200
+ pi_tag.attrs['content'] = data
201
+ self._scout_parser.add_tag(pi_tag)
202
+
203
+ def handle_entityref(self, name: str):
204
+ """
205
+ Handle HTML entity references.
206
+
207
+ Args:
208
+ name (str): Entity reference name
209
+ """
210
+ # Convert entity references to their actual characters
211
+ char = html.entities.html5.get(name, f'&{name};')
212
+ self._scout_parser.add_text(char)
213
+
214
+ def handle_charref(self, name: str):
215
+ """
216
+ Handle character references.
217
+
218
+ Args:
219
+ name (str): Character reference name
220
+ """
221
+ # Convert character references to their actual characters
222
+ try:
223
+ if name.startswith('x'):
224
+ char = chr(int(name[1:], 16))
225
+ else:
226
+ char = chr(int(name))
227
+ self._scout_parser.add_text(char)
228
+ except ValueError:
229
+ # Fallback for invalid references
230
+ self._scout_parser.add_text(f'&#{name};')
231
+
232
+ def close(self):
233
+ """
234
+ Finalize parsing and perform cleanup.
235
+ """
236
+ super().close()