webscout 7.1__py3-none-any.whl → 7.3__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 (154) 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 +23 -0
  24. webscout/Litlogger/core/logger.py +166 -0
  25. webscout/Litlogger/handlers/__init__.py +12 -0
  26. webscout/Litlogger/handlers/console.py +33 -0
  27. webscout/Litlogger/handlers/file.py +143 -0
  28. webscout/Litlogger/handlers/network.py +173 -0
  29. webscout/Litlogger/styles/__init__.py +7 -0
  30. webscout/Litlogger/styles/colors.py +249 -0
  31. webscout/Litlogger/styles/formats.py +460 -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/AISEARCH/ISou.py +277 -0
  38. webscout/Provider/AISEARCH/__init__.py +2 -1
  39. webscout/Provider/Blackboxai.py +3 -3
  40. webscout/Provider/ChatGPTGratis.py +226 -0
  41. webscout/Provider/Cloudflare.py +3 -4
  42. webscout/Provider/DeepSeek.py +218 -0
  43. webscout/Provider/Deepinfra.py +40 -24
  44. webscout/Provider/Free2GPT.py +131 -124
  45. webscout/Provider/Gemini.py +100 -115
  46. webscout/Provider/Glider.py +3 -3
  47. webscout/Provider/Groq.py +5 -1
  48. webscout/Provider/Jadve.py +3 -3
  49. webscout/Provider/Marcus.py +191 -192
  50. webscout/Provider/Netwrck.py +3 -3
  51. webscout/Provider/PI.py +2 -2
  52. webscout/Provider/PizzaGPT.py +2 -3
  53. webscout/Provider/QwenLM.py +311 -0
  54. webscout/Provider/TTI/AiForce/__init__.py +22 -22
  55. webscout/Provider/TTI/AiForce/async_aiforce.py +257 -257
  56. webscout/Provider/TTI/AiForce/sync_aiforce.py +242 -242
  57. webscout/Provider/TTI/FreeAIPlayground/__init__.py +9 -0
  58. webscout/Provider/TTI/FreeAIPlayground/async_freeaiplayground.py +206 -0
  59. webscout/Provider/TTI/FreeAIPlayground/sync_freeaiplayground.py +192 -0
  60. webscout/Provider/TTI/Nexra/__init__.py +22 -22
  61. webscout/Provider/TTI/Nexra/async_nexra.py +286 -286
  62. webscout/Provider/TTI/Nexra/sync_nexra.py +258 -258
  63. webscout/Provider/TTI/PollinationsAI/__init__.py +23 -23
  64. webscout/Provider/TTI/PollinationsAI/async_pollinations.py +330 -330
  65. webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +285 -285
  66. webscout/Provider/TTI/__init__.py +2 -1
  67. webscout/Provider/TTI/artbit/__init__.py +22 -22
  68. webscout/Provider/TTI/artbit/async_artbit.py +184 -184
  69. webscout/Provider/TTI/artbit/sync_artbit.py +176 -176
  70. webscout/Provider/TTI/blackbox/__init__.py +4 -4
  71. webscout/Provider/TTI/blackbox/async_blackbox.py +212 -212
  72. webscout/Provider/TTI/blackbox/sync_blackbox.py +199 -199
  73. webscout/Provider/TTI/deepinfra/__init__.py +4 -4
  74. webscout/Provider/TTI/deepinfra/async_deepinfra.py +227 -227
  75. webscout/Provider/TTI/deepinfra/sync_deepinfra.py +199 -199
  76. webscout/Provider/TTI/huggingface/__init__.py +22 -22
  77. webscout/Provider/TTI/huggingface/async_huggingface.py +199 -199
  78. webscout/Provider/TTI/huggingface/sync_huggingface.py +195 -195
  79. webscout/Provider/TTI/imgninza/__init__.py +4 -4
  80. webscout/Provider/TTI/imgninza/async_ninza.py +214 -214
  81. webscout/Provider/TTI/imgninza/sync_ninza.py +209 -209
  82. webscout/Provider/TTI/talkai/__init__.py +4 -4
  83. webscout/Provider/TTI/talkai/async_talkai.py +229 -229
  84. webscout/Provider/TTI/talkai/sync_talkai.py +207 -207
  85. webscout/Provider/TTS/deepgram.py +182 -182
  86. webscout/Provider/TTS/elevenlabs.py +136 -136
  87. webscout/Provider/TTS/gesserit.py +150 -150
  88. webscout/Provider/TTS/murfai.py +138 -138
  89. webscout/Provider/TTS/parler.py +133 -134
  90. webscout/Provider/TTS/streamElements.py +360 -360
  91. webscout/Provider/TTS/utils.py +280 -280
  92. webscout/Provider/TTS/voicepod.py +116 -116
  93. webscout/Provider/TextPollinationsAI.py +28 -8
  94. webscout/Provider/WiseCat.py +193 -0
  95. webscout/Provider/__init__.py +146 -134
  96. webscout/Provider/cerebras.py +242 -227
  97. webscout/Provider/chatglm.py +204 -204
  98. webscout/Provider/dgaf.py +2 -3
  99. webscout/Provider/freeaichat.py +221 -0
  100. webscout/Provider/gaurish.py +2 -3
  101. webscout/Provider/geminiapi.py +208 -208
  102. webscout/Provider/granite.py +223 -0
  103. webscout/Provider/hermes.py +218 -218
  104. webscout/Provider/llama3mitril.py +179 -179
  105. webscout/Provider/llamatutor.py +3 -3
  106. webscout/Provider/llmchat.py +2 -3
  107. webscout/Provider/meta.py +794 -794
  108. webscout/Provider/multichat.py +331 -331
  109. webscout/Provider/typegpt.py +359 -359
  110. webscout/Provider/yep.py +3 -3
  111. webscout/__init__.py +1 -0
  112. webscout/__main__.py +5 -5
  113. webscout/cli.py +319 -319
  114. webscout/conversation.py +241 -242
  115. webscout/exceptions.py +328 -328
  116. webscout/litagent/__init__.py +28 -28
  117. webscout/litagent/agent.py +2 -3
  118. webscout/litprinter/__init__.py +0 -58
  119. webscout/scout/__init__.py +8 -8
  120. webscout/scout/core.py +884 -884
  121. webscout/scout/element.py +459 -459
  122. webscout/scout/parsers/__init__.py +69 -69
  123. webscout/scout/parsers/html5lib_parser.py +172 -172
  124. webscout/scout/parsers/html_parser.py +236 -236
  125. webscout/scout/parsers/lxml_parser.py +178 -178
  126. webscout/scout/utils.py +38 -38
  127. webscout/swiftcli/__init__.py +811 -811
  128. webscout/update_checker.py +2 -12
  129. webscout/version.py +1 -1
  130. webscout/webscout_search.py +87 -6
  131. webscout/webscout_search_async.py +58 -1
  132. webscout/yep_search.py +297 -0
  133. webscout/zeroart/__init__.py +54 -54
  134. webscout/zeroart/base.py +60 -60
  135. webscout/zeroart/effects.py +99 -99
  136. webscout/zeroart/fonts.py +816 -816
  137. {webscout-7.1.dist-info → webscout-7.3.dist-info}/METADATA +62 -22
  138. webscout-7.3.dist-info/RECORD +223 -0
  139. {webscout-7.1.dist-info → webscout-7.3.dist-info}/WHEEL +1 -1
  140. webstoken/__init__.py +30 -30
  141. webstoken/classifier.py +189 -189
  142. webstoken/keywords.py +216 -216
  143. webstoken/language.py +128 -128
  144. webstoken/ner.py +164 -164
  145. webstoken/normalizer.py +35 -35
  146. webstoken/processor.py +77 -77
  147. webstoken/sentiment.py +206 -206
  148. webstoken/stemmer.py +73 -73
  149. webstoken/tagger.py +60 -60
  150. webstoken/tokenizer.py +158 -158
  151. webscout-7.1.dist-info/RECORD +0 -198
  152. {webscout-7.1.dist-info → webscout-7.3.dist-info}/LICENSE.md +0 -0
  153. {webscout-7.1.dist-info → webscout-7.3.dist-info}/entry_points.txt +0 -0
  154. {webscout-7.1.dist-info → webscout-7.3.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()