webscout 6.4__py3-none-any.whl → 6.5__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 (69) hide show
  1. webscout/AIutel.py +7 -54
  2. webscout/DWEBS.py +48 -26
  3. webscout/{YTdownloader.py → Extra/YTToolkit/YTdownloader.py} +990 -1103
  4. webscout/Extra/YTToolkit/__init__.py +3 -0
  5. webscout/{transcriber.py → Extra/YTToolkit/transcriber.py} +1 -1
  6. webscout/Extra/YTToolkit/ytapi/__init__.py +6 -0
  7. webscout/Extra/YTToolkit/ytapi/channel.py +307 -0
  8. webscout/Extra/YTToolkit/ytapi/errors.py +13 -0
  9. webscout/Extra/YTToolkit/ytapi/extras.py +45 -0
  10. webscout/Extra/YTToolkit/ytapi/https.py +88 -0
  11. webscout/Extra/YTToolkit/ytapi/patterns.py +61 -0
  12. webscout/Extra/YTToolkit/ytapi/playlist.py +59 -0
  13. webscout/Extra/YTToolkit/ytapi/pool.py +8 -0
  14. webscout/Extra/YTToolkit/ytapi/query.py +37 -0
  15. webscout/Extra/YTToolkit/ytapi/stream.py +60 -0
  16. webscout/Extra/YTToolkit/ytapi/utils.py +62 -0
  17. webscout/Extra/YTToolkit/ytapi/video.py +102 -0
  18. webscout/Extra/__init__.py +2 -1
  19. webscout/Extra/autocoder/rawdog.py +679 -680
  20. webscout/Extra/gguf.py +441 -441
  21. webscout/Extra/markdownlite/__init__.py +862 -0
  22. webscout/Extra/weather_ascii.py +2 -2
  23. webscout/Provider/PI.py +292 -221
  24. webscout/Provider/Perplexity.py +6 -14
  25. webscout/Provider/Reka.py +0 -1
  26. webscout/Provider/TTS/__init__.py +5 -1
  27. webscout/Provider/TTS/deepgram.py +183 -0
  28. webscout/Provider/TTS/elevenlabs.py +137 -0
  29. webscout/Provider/TTS/gesserit.py +151 -0
  30. webscout/Provider/TTS/murfai.py +139 -0
  31. webscout/Provider/TTS/parler.py +134 -107
  32. webscout/Provider/TTS/streamElements.py +360 -275
  33. webscout/Provider/TTS/utils.py +280 -0
  34. webscout/Provider/TTS/voicepod.py +116 -116
  35. webscout/Provider/__init__.py +146 -146
  36. webscout/Provider/meta.py +794 -779
  37. webscout/Provider/typegpt.py +1 -2
  38. webscout/__init__.py +24 -28
  39. webscout/litprinter/__init__.py +831 -830
  40. webscout/optimizers.py +269 -269
  41. webscout/prompt_manager.py +279 -279
  42. webscout/scout/__init__.py +11 -0
  43. webscout/scout/core.py +884 -0
  44. webscout/scout/element.py +459 -0
  45. webscout/scout/parsers/__init__.py +69 -0
  46. webscout/scout/parsers/html5lib_parser.py +172 -0
  47. webscout/scout/parsers/html_parser.py +236 -0
  48. webscout/scout/parsers/lxml_parser.py +178 -0
  49. webscout/scout/utils.py +38 -0
  50. webscout/update_checker.py +125 -125
  51. webscout/version.py +1 -1
  52. webscout/zeroart/__init__.py +55 -0
  53. webscout/zeroart/base.py +61 -0
  54. webscout/zeroart/effects.py +99 -0
  55. webscout/zeroart/fonts.py +816 -0
  56. webscout/zerodir/__init__.py +225 -0
  57. {webscout-6.4.dist-info → webscout-6.5.dist-info}/METADATA +12 -68
  58. {webscout-6.4.dist-info → webscout-6.5.dist-info}/RECORD +62 -37
  59. webscout/Agents/Onlinesearcher.py +0 -182
  60. webscout/Agents/__init__.py +0 -2
  61. webscout/Agents/functioncall.py +0 -248
  62. webscout/Bing_search.py +0 -251
  63. webscout/gpt4free.py +0 -666
  64. webscout/requestsHTMLfix.py +0 -775
  65. webscout/webai.py +0 -2590
  66. {webscout-6.4.dist-info → webscout-6.5.dist-info}/LICENSE.md +0 -0
  67. {webscout-6.4.dist-info → webscout-6.5.dist-info}/WHEEL +0 -0
  68. {webscout-6.4.dist-info → webscout-6.5.dist-info}/entry_points.txt +0 -0
  69. {webscout-6.4.dist-info → webscout-6.5.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,225 @@
1
+ """
2
+ ZeroDir: A zero-dependency app directories management library
3
+
4
+ Provides cross-platform directory management for application data,
5
+ configuration, and cache without external dependencies.
6
+ """
7
+
8
+ import os
9
+ import sys
10
+ import json
11
+ import platform
12
+ import tempfile
13
+ import shutil
14
+ import hashlib
15
+ import time
16
+ import datetime
17
+
18
+ class ZeroDirs:
19
+ def __init__(self, app_name, app_author=None):
20
+ """
21
+ Initialize ZeroDirs with application details
22
+
23
+ :param app_name: Name of the application
24
+ :param app_author: Author/Company name (optional)
25
+ """
26
+ self.app_name = app_name
27
+ self.app_author = app_author or os.getlogin()
28
+ self._init_dirs()
29
+
30
+ def _init_dirs(self):
31
+ """Initialize application directories"""
32
+ self.user_data_dir = self._get_user_data_dir()
33
+ self.user_config_dir = self._get_user_config_dir()
34
+ self.user_cache_dir = self._get_user_cache_dir()
35
+ self.user_log_dir = self._get_user_log_dir()
36
+ self.temp_dir = self._get_temp_dir()
37
+
38
+ # Create directories if they don't exist
39
+ for directory in [
40
+ self.user_data_dir,
41
+ self.user_config_dir,
42
+ self.user_cache_dir,
43
+ self.user_log_dir,
44
+ self.temp_dir
45
+ ]:
46
+ os.makedirs(directory, exist_ok=True)
47
+
48
+ def _get_user_data_dir(self):
49
+ """Get user data directory"""
50
+ system = platform.system().lower()
51
+ if system == 'windows':
52
+ base = os.path.expandvars('%LOCALAPPDATA%')
53
+ return os.path.join(base, self.app_author, self.app_name)
54
+ elif system == 'darwin': # macOS
55
+ return os.path.expanduser(f'~/Library/Application Support/{self.app_name}')
56
+ else: # Linux and other Unix-like
57
+ xdg_data_home = os.environ.get('XDG_DATA_HOME') or os.path.expanduser('~/.local/share')
58
+ return os.path.join(xdg_data_home, self.app_name)
59
+
60
+ def _get_user_config_dir(self):
61
+ """Get user configuration directory"""
62
+ system = platform.system().lower()
63
+ if system == 'windows':
64
+ base = os.path.expandvars('%APPDATA%')
65
+ return os.path.join(base, self.app_author, self.app_name)
66
+ elif system == 'darwin': # macOS
67
+ return os.path.expanduser(f'~/Library/Preferences/{self.app_name}')
68
+ else: # Linux and other Unix-like
69
+ xdg_config_home = os.environ.get('XDG_CONFIG_HOME') or os.path.expanduser('~/.config')
70
+ return os.path.join(xdg_config_home, self.app_name)
71
+
72
+ def _get_user_cache_dir(self):
73
+ """Get user cache directory"""
74
+ system = platform.system().lower()
75
+ if system == 'windows':
76
+ base = os.path.expandvars('%LOCALAPPDATA%')
77
+ return os.path.join(base, self.app_author, self.app_name, 'Cache')
78
+ elif system == 'darwin': # macOS
79
+ return os.path.expanduser(f'~/Library/Caches/{self.app_name}')
80
+ else: # Linux and other Unix-like
81
+ xdg_cache_home = os.environ.get('XDG_CACHE_HOME') or os.path.expanduser('~/.cache')
82
+ return os.path.join(xdg_cache_home, self.app_name)
83
+
84
+ def _get_user_log_dir(self):
85
+ """Get user log directory"""
86
+ system = platform.system().lower()
87
+ if system == 'windows':
88
+ base = os.path.expandvars('%LOCALAPPDATA%')
89
+ return os.path.join(base, self.app_author, self.app_name, 'Logs')
90
+ elif system == 'darwin': # macOS
91
+ return os.path.expanduser(f'~/Library/Logs/{self.app_name}')
92
+ else: # Linux and other Unix-like
93
+ xdg_data_home = os.environ.get('XDG_DATA_HOME') or os.path.expanduser('~/.local/share')
94
+ return os.path.join(xdg_data_home, self.app_name, 'logs')
95
+
96
+ def _get_temp_dir(self):
97
+ """Get temporary directory for the application"""
98
+ return os.path.join(tempfile.gettempdir(), f'{self.app_name}_temp')
99
+
100
+ def save_config(self, config_data, filename='config.json'):
101
+ """
102
+ Save configuration data to config directory
103
+
104
+ :param config_data: Dictionary of configuration data
105
+ :param filename: Name of the config file (default: config.json)
106
+ :return: Path to saved config file
107
+ """
108
+ config_path = os.path.join(self.user_config_dir, filename)
109
+ with open(config_path, 'w') as f:
110
+ json.dump(config_data, f, indent=4)
111
+ return config_path
112
+
113
+ def load_config(self, filename='config.json'):
114
+ """
115
+ Load configuration data from config directory
116
+
117
+ :param filename: Name of the config file (default: config.json)
118
+ :return: Dictionary of configuration data or None if file doesn't exist
119
+ """
120
+ config_path = os.path.join(self.user_config_dir, filename)
121
+ if os.path.exists(config_path):
122
+ with open(config_path, 'r') as f:
123
+ return json.load(f)
124
+ return None
125
+
126
+ def cache_file(self, content, filename=None, extension=None):
127
+ """
128
+ Cache a file with optional naming and extension
129
+
130
+ :param content: File content or bytes
131
+ :param filename: Optional custom filename
132
+ :param extension: Optional file extension
133
+ :return: Path to cached file
134
+ """
135
+ if not filename:
136
+ # Generate a hash-based filename if not provided
137
+ content_hash = hashlib.md5(str(content).encode()).hexdigest()
138
+ filename = f'{content_hash}{extension or ""}'
139
+
140
+ cache_path = os.path.join(self.user_cache_dir, filename)
141
+
142
+ # Write content to file
143
+ with open(cache_path, 'wb' if isinstance(content, bytes) else 'w') as f:
144
+ f.write(content)
145
+
146
+ return cache_path
147
+
148
+ def clear_cache(self, max_age_days=30):
149
+ """
150
+ Clear cache directory, optionally removing files older than max_age_days
151
+
152
+ :param max_age_days: Maximum age of files to keep (default: 30 days)
153
+ :return: Number of files deleted
154
+ """
155
+ current_time = time.time()
156
+
157
+ deleted_count = 0
158
+ for filename in os.listdir(self.user_cache_dir):
159
+ filepath = os.path.join(self.user_cache_dir, filename)
160
+
161
+ # Check file age
162
+ file_age_days = (current_time - os.path.getctime(filepath)) / (24 * 3600)
163
+
164
+ if file_age_days > max_age_days:
165
+ try:
166
+ os.remove(filepath)
167
+ deleted_count += 1
168
+ except Exception:
169
+ pass
170
+
171
+ return deleted_count
172
+
173
+ def log(self, message, filename='app.log', level='INFO'):
174
+ """
175
+ Log a message to the log directory
176
+
177
+ :param message: Log message
178
+ :param filename: Log filename (default: app.log)
179
+ :param level: Log level (default: INFO)
180
+ """
181
+ log_path = os.path.join(self.user_log_dir, filename)
182
+
183
+ with open(log_path, 'a') as log_file:
184
+ timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
185
+ log_file.write(f'[{level}] {timestamp}: {message}\n')
186
+
187
+ def user_data_dir(app_name, app_author=None):
188
+ """
189
+ Quick function to get user data directory
190
+
191
+ :param app_name: Name of the application
192
+ :param app_author: Author/Company name (optional)
193
+ :return: Path to user data directory
194
+ """
195
+ return ZeroDirs(app_name, app_author).user_data_dir
196
+
197
+ def user_config_dir(app_name, app_author=None):
198
+ """
199
+ Quick function to get user config directory
200
+
201
+ :param app_name: Name of the application
202
+ :param app_author: Author/Company name (optional)
203
+ :return: Path to user config directory
204
+ """
205
+ return ZeroDirs(app_name, app_author).user_config_dir
206
+
207
+ def user_cache_dir(app_name, app_author=None):
208
+ """
209
+ Quick function to get user cache directory
210
+
211
+ :param app_name: Name of the application
212
+ :param app_author: Author/Company name (optional)
213
+ :return: Path to user cache directory
214
+ """
215
+ return ZeroDirs(app_name, app_author).user_cache_dir
216
+
217
+ def user_log_dir(app_name, app_author=None):
218
+ """
219
+ Quick function to get user log directory
220
+
221
+ :param app_name: Name of the application
222
+ :param app_author: Author/Company name (optional)
223
+ :return: Path to user log directory
224
+ """
225
+ return ZeroDirs(app_name, app_author).user_log_dir
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webscout
3
- Version: 6.4
3
+ Version: 6.5
4
4
  Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
5
5
  Author: OEvortex
6
6
  Author-email: helpingai5@gmail.com
@@ -28,10 +28,7 @@ Requires-Dist: mistune
28
28
  Requires-Dist: tenacity
29
29
  Requires-Dist: curl-cffi
30
30
  Requires-Dist: nest-asyncio
31
- Requires-Dist: g4f>=0.2.2.3
32
- Requires-Dist: g4f[webdriver]
33
31
  Requires-Dist: rich
34
- Requires-Dist: beautifulsoup4
35
32
  Requires-Dist: markdownify
36
33
  Requires-Dist: requests
37
34
  Requires-Dist: google-generativeai
@@ -39,12 +36,10 @@ Requires-Dist: lxml>=5.2.2
39
36
  Requires-Dist: termcolor
40
37
  Requires-Dist: orjson
41
38
  Requires-Dist: PyYAML
42
- Requires-Dist: appdirs
43
39
  Requires-Dist: tls-client
44
40
  Requires-Dist: clipman
45
41
  Requires-Dist: playsound
46
42
  Requires-Dist: ollama
47
- Requires-Dist: pyfiglet
48
43
  Requires-Dist: pillow
49
44
  Requires-Dist: bson
50
45
  Requires-Dist: cloudscraper
@@ -53,10 +48,10 @@ Requires-Dist: openai
53
48
  Requires-Dist: prompt-toolkit
54
49
  Requires-Dist: primp
55
50
  Requires-Dist: pyreqwest-impersonate
56
- Requires-Dist: lxml-html-clean
57
51
  Requires-Dist: gradio-client
58
52
  Requires-Dist: psutil
59
53
  Requires-Dist: yaspin
54
+ Requires-Dist: websocket
60
55
  Provides-Extra: dev
61
56
  Requires-Dist: ruff>=0.1.6; extra == "dev"
62
57
  Requires-Dist: pytest>=7.4.2; extra == "dev"
@@ -103,12 +98,11 @@ Requires-Dist: unicorn; extra == "local"
103
98
  </div>
104
99
 
105
100
  ## 🚀 Features
106
- * **Comprehensive Search:** Leverage Google, DuckDuckGo, and Phind.com for diverse search results.
101
+ * **Comprehensive Search:** Leverage Google, DuckDuckGo for diverse search results.
107
102
  * **AI Powerhouse:** Access and interact with various AI models, including OpenAI, Cohere, and more.
108
- * **YouTube Toolkit:** Transcribe YouTube videos effortlessly and download audio/video content.
103
+ * **[YouTube Toolkit](webscout/Extra/YTToolkit):** Advanced YouTube video and transcript management with multi-language support, versatile downloading, and intelligent data extraction
109
104
  * **Tempmail & Temp Number:** Generate temporary email addresses and phone numbers for enhanced privacy.
110
- * **Text-to-Speech (TTS):** Convert text into natural-sounding speech using various TTS providers.
111
- * **WebAI:** Experience the power of terminal-based GPT and an open interpreter for code execution and more.
105
+ * **[Text-to-Speech (TTS)](webscout/Provider/TTS/README.md):** Convert text into natural-sounding speech using multiple AI-powered providers like ElevenLabs, StreamElements, and Voicepods.
112
106
  * **Offline LLMs:** Utilize powerful language models offline with GGUF support.
113
107
  * **Extensive Provider Ecosystem:** Explore a vast collection of providers, including BasedGPT, DeepSeek, and many others.
114
108
  * **Local LLM Execution:** Run GGUF models locally with minimal configuration.
@@ -121,6 +115,7 @@ Requires-Dist: unicorn; extra == "local"
121
115
  * **[LitLogger](webscout/litlogger/Readme.md):** Simplifies logging with customizable formats and color schemes
122
116
  * **[LitAgent](webscout/litagent/Readme.md):** Powerful and modern user agent generator that keeps your requests fresh and undetectable
123
117
  * **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
118
+ * **[MarkdownLite](webscout/Extra/markdownlite/README.md):** Powerful HTML to Markdown conversion library with advanced parsing and structured output
124
119
 
125
120
  ## ⚙️ Installation
126
121
  ```python
@@ -226,29 +221,7 @@ python -m webscout --help
226
221
 
227
222
  [Go To TOP](#webscout-️)
228
223
 
229
- ## ⬇️ YTdownloader
230
224
 
231
- ```python
232
- from os import rename, getcwd
233
- from webscout import YTdownloader
234
- def download_audio(video_id):
235
- youtube_link = video_id
236
- handler = YTdownloader.Handler(query=youtube_link)
237
- for third_query_data in handler.run(format='mp3', quality='128kbps', limit=1):
238
- audio_path = handler.save(third_query_data, dir=getcwd())
239
- rename(audio_path, "audio.mp3")
240
-
241
- def download_video(video_id):
242
- youtube_link = video_id
243
- handler = YTdownloader.Handler(query=youtube_link)
244
- for third_query_data in handler.run(format='mp4', quality='auto', limit=1):
245
- video_path = handler.save(third_query_data, dir=getcwd())
246
- rename(video_path, "video.mp4")
247
-
248
- if __name__ == "__main__":
249
- # download_audio("https://www.youtube.com/watch?v=c0tMvzB0OKw")
250
- download_video("https://www.youtube.com/watch?v=c0tMvzB0OKw")
251
- ```
252
225
 
253
226
  ## ☀️ Weather
254
227
 
@@ -304,20 +277,7 @@ if __name__ == "__main__":
304
277
  asyncio.run(main())
305
278
  ```
306
279
 
307
- ## 📝 Transcriber
308
280
 
309
- The `transcriber` function in Webscout is a handy tool that transcribes YouTube videos.
310
-
311
- **Example:**
312
-
313
- ```python
314
- from webscout import YTTranscriber
315
- yt = YTTranscriber()
316
- from rich import print
317
- video_url = input("Enter the YouTube video URL: ")
318
- transcript = yt.get_transcript(video_url, languages=None)
319
- print(transcript)
320
- ```
321
281
 
322
282
  ## 🔍 GoogleS (formerly DWEBS)
323
283
 
@@ -330,16 +290,6 @@ for result in results:
330
290
  print(result)
331
291
  ```
332
292
 
333
- ### BingS
334
-
335
- ```python
336
- from webscout import BingS
337
- from rich import print
338
- searcher = BingS()
339
- results = searcher.search("HelpingAI-9B", max_results=20, extract_webpage_text=True, max_extract_characters=1000)
340
- for result in results:
341
- print(result)
342
- ```
343
293
 
344
294
  ## 🦆 WEBS and AsyncWEBS
345
295
 
@@ -956,18 +906,12 @@ ai = BLACKBOXAI(
956
906
  model=None # You can specify a model if needed
957
907
  )
958
908
 
959
- # Start an infinite loop for continuous interaction
960
- while True:
961
- # Define a prompt to send to the AI
962
- prompt = input("Enter your prompt: ")
963
-
964
- # Check if the user wants to exit the loop
965
- if prompt.lower() == "exit":
966
- break
967
-
968
- # Use the 'chat' method to send the prompt and receive a response
969
- r = ai.chat(prompt)
970
- print(r)
909
+
910
+ # Define a prompt to send to the AI
911
+ prompt = "Tell me about india"
912
+ # Use the 'chat' method to send the prompt and receive a response
913
+ r = ai.chat(prompt)
914
+ print(r)
971
915
  ```
972
916
 
973
917
  ### ❓ `PERPLEXITY` - Search with PERPLEXITY
@@ -1,39 +1,46 @@
1
1
  webscout/AIauto.py,sha256=vmTVbtxtYG2lIye67poeDEJg86y75TZ0_uYR8EQV6To,6994
2
2
  webscout/AIbase.py,sha256=CV7YNdRH0SRQTPYtVqVGOQirSXIQW86Fqxl3DcrHwns,3405
3
- webscout/AIutel.py,sha256=VZ8KGsBa5WrIK2J9BTjgEwy5ANq6_xwROc0Q6ThJdTU,12918
3
+ webscout/AIutel.py,sha256=gsV08e3F6aH4j7wH5V9X3N9T5Ea5MAIQq4M47vNofuI,12020
4
4
  webscout/Bard.py,sha256=CmDhKC67Ki2xA8Rkme6EC-gLmq3PhAAAGd5tcpJ0KJo,13234
5
- webscout/Bing_search.py,sha256=CAxpfn8Y7lbDqWaPrY7rIZ0gD2txAIrKnVJNfJGhqHE,9987
6
- webscout/DWEBS.py,sha256=wOoiCEujF3RqgExT-yNsbOcF5fBJ81a-OGHngcMRUxI,17896
5
+ webscout/DWEBS.py,sha256=GsKbaVgcxDC5eHtNjxr6r5uk3_8NhtxVG2dqJJVGqaI,18543
7
6
  webscout/LLM.py,sha256=essCz1nakJfmoKLJFguyJnba0HR4AfY6BVU0CEGDCcQ,16336
8
- webscout/YTdownloader.py,sha256=qVROwMmRpHy95NsbzZvpidEKuqMwFTCi7bW4jJgbl44,39152
9
- webscout/__init__.py,sha256=sI591wOceWeVQkYpui4BCja_RZ0tYTiAnTFlTmkmnXw,730
7
+ webscout/__init__.py,sha256=IMDl0kRpLtNMi1HOW6HXoBp0CevEpLPkol8GJhorMno,657
10
8
  webscout/__main__.py,sha256=pBm2E3ZZiMcCH37b1YCz7qKdKdX_i_S5En6fZDeJKFw,103
11
9
  webscout/cli.py,sha256=bLaSGs24wxfZlK37_WPPr1jjfbv50nfbxkeSkED0jX0,12456
12
10
  webscout/conversation.py,sha256=fWWrBwhZztasvW7aLSLsTLpHzuTeuV4jGXPWzXukNj8,8088
13
11
  webscout/exceptions.py,sha256=qdyWoLV1nEPffb5vz9cu9EfBwIwZ4nmcCinqeJDBWTo,5182
14
- webscout/gpt4free.py,sha256=NNcnlOtIWV9R93UsBN4jBGBEJ9sJ-Np1WbgjkGVDcYc,24487
15
- webscout/optimizers.py,sha256=_5rC1phrBNEEJWmTRtcgLwE_dXhanekwpFwPDP0Mjuw,8899
16
- webscout/prompt_manager.py,sha256=I1x6gtioHVpMOYKqQQy3HSidEUearXwyl3EyyWY1IAk,9527
17
- webscout/requestsHTMLfix.py,sha256=LZ9uynkwpGqVS2uFB5bMjdh6gLjSMerHPEqzVCvICIs,27961
12
+ webscout/optimizers.py,sha256=gMZqYA7Slw7F9e_Gp4umkpMYKtdVFJBn-yDrlFYP4Wo,9168
13
+ webscout/prompt_manager.py,sha256=Jc0demWN6M6QcwRp14aHZR05r_PVPOaG8PnQkO7pDZ4,9806
18
14
  webscout/tempid.py,sha256=7ZTN2eAYqUO2deSdzzhZfgDRxE65OOhGuTBD7f8bTCM,5004
19
- webscout/transcriber.py,sha256=3vhn-lOfDCYLseKih-3Sl6MVoXn3psEr_tYgIpCnT4o,19205
20
- webscout/update_checker.py,sha256=Fat0nZFumEDAWHK8B3g0bdTEdf82ndny-E3aC8jcXRw,4064
15
+ webscout/update_checker.py,sha256=mw4XOEhGpe68nXuo6yXIQqA_Vt5sJhY_-5iUWsiF0oo,4179
21
16
  webscout/utils.py,sha256=LVW7U0XcGYqigqxV6D5YXeGMrc_mt7PnNG_YnKf9bBM,3059
22
- webscout/version.py,sha256=jbNt2NK5UiiqthANYjhChx2dFMSJmx70DMxcAAk5kEQ,44
23
- webscout/webai.py,sha256=Yxm2vb03ZF-WGy25Q4OQjtZgbQnsN2f38wWvOkHdrbY,87743
17
+ webscout/version.py,sha256=K8NenkGw5y4bDvKGg-xeUewcUgMDcrcEPUuhVqQbUw8,44
24
18
  webscout/webscout_search.py,sha256=HHdO9XLToC_9nIMM_SaTOKKfzdhrKjb7o8Zi3ZD1O7Y,44744
25
19
  webscout/webscout_search_async.py,sha256=2-RCa9Deahhw3Bti78kXfVaX8y3Aygy4L7HeCaITk9M,14519
26
- webscout/Agents/Onlinesearcher.py,sha256=dzb08Bz9QMMeP1mQTxIK2mkpwthhNJJND7TIRmM3dwA,7942
27
- webscout/Agents/__init__.py,sha256=qJXx2Q1yAupE0FJabXvs49Nxwm3IsREyuMWp8Q1VYiE,60
28
- webscout/Agents/functioncall.py,sha256=npDMS4xwi0FeREK56A-nJ60918U6seC0CV9PsG3KpCg,7861
29
- webscout/Extra/__init__.py,sha256=zCTSLk-Ej7GkUr_HhVSziZfRK0Hy4r3ToghLlMSxbaY,125
20
+ webscout/Extra/__init__.py,sha256=FbDnwI3zZdoQFosA5Q2bIYpJlHUKFWiFmFKvnk9xWKY,153
30
21
  webscout/Extra/autollama.py,sha256=Mcj7YT8mYL5J7Rg_Wmi3Ppcfh1WK6UWcrbUZySetwuU,8198
31
- webscout/Extra/gguf.py,sha256=1mCRb-PkBB98g5zN_ojmMhHKCi4Kh__m6uRcQoABtQI,15627
22
+ webscout/Extra/gguf.py,sha256=u_HQ00hiKCcF4GiVabUnFTXEPTmUpa2ADjBNHxtR7bw,16053
32
23
  webscout/Extra/weather.py,sha256=q-h5UXL2XEBEgoqvEeLRut-ThieNzH_GNfOEIeghKLM,6000
33
- webscout/Extra/weather_ascii.py,sha256=Aed-_EUzvTEjBXbOpNRxkJBLa6fXsclknXP06HnQD18,808
24
+ webscout/Extra/weather_ascii.py,sha256=AsSJT6OCpg9vxzW5h7h0s0PEMq_m_ixvcc7VDtNERdw,793
25
+ webscout/Extra/YTToolkit/YTdownloader.py,sha256=NfbukCKdyWycl9RzJBXzqSPKW6FwWe7EQxhfLf_dJj8,34793
26
+ webscout/Extra/YTToolkit/__init__.py,sha256=Wn1K-f6OjZ4GuWvL3FTM4zlTaF3xdb4v_K60YDxKdXg,75
27
+ webscout/Extra/YTToolkit/transcriber.py,sha256=jAcjpz2ywKxod6ZDMpcXlOliZg5Vj-AY4xB0YJTApCo,19193
28
+ webscout/Extra/YTToolkit/ytapi/__init__.py,sha256=9VHO8BkkhIZhfQ-bOm2soq1C7WblGS8VJPFSq9bsde4,166
29
+ webscout/Extra/YTToolkit/ytapi/channel.py,sha256=JzqDEx9VvHCilfLwlT7dJZSn55_asHWIcB-7l_HBBE8,9750
30
+ webscout/Extra/YTToolkit/ytapi/errors.py,sha256=MOlIMUmQzlgL08VgllbIayg6lURqdGRlycUC5A7553c,303
31
+ webscout/Extra/YTToolkit/ytapi/extras.py,sha256=MkN-8ZUvUGnpihb4grvOLF4DP0LSXhwmrcJVmWKU1wU,1417
32
+ webscout/Extra/YTToolkit/ytapi/https.py,sha256=APsIeyE430T685q2coPRW1N82O1as1crdK_730u_wqM,2201
33
+ webscout/Extra/YTToolkit/ytapi/patterns.py,sha256=RXL6Rr5hfki9HlpFR12qPV_ELvM6SGqUqOtjy3KwxPc,3053
34
+ webscout/Extra/YTToolkit/ytapi/playlist.py,sha256=y1NhzXFwfVMTgSoJr9RYanVIq8qSIowywAzvkzUs-Xs,1735
35
+ webscout/Extra/YTToolkit/ytapi/pool.py,sha256=G38wIbDlLx8GE00eBHKbssb8dUDo6hcOnPCon_JAU2I,267
36
+ webscout/Extra/YTToolkit/ytapi/query.py,sha256=d4MCTVMXSE6WcCk3HEhvzGa3NNNeYZ5YcL7VeXc11e0,1483
37
+ webscout/Extra/YTToolkit/ytapi/stream.py,sha256=7VscCVBwLx_Lz8qFOQdKCSyeAiv_A3aUQNBAb2tL9s0,1999
38
+ webscout/Extra/YTToolkit/ytapi/utils.py,sha256=ENjmAjlOTLib0ANxysuSb2kgDl3NtDTvW60b18H-Rzc,1966
39
+ webscout/Extra/YTToolkit/ytapi/video.py,sha256=OzX1XJJ4qRjti0VOlrsOC8kDvZihMVgUFTyrT-AYYms,3877
34
40
  webscout/Extra/autocoder/__init__.py,sha256=jcDJEXVde_ATffVNjV4vQMvvWH0UDW-HRz5OKNoZ7cg,218
35
41
  webscout/Extra/autocoder/autocoder_utiles.py,sha256=hGAnOWJISuHm0UOKSWwre9_wCqJqDGYVbvyKJ6GrnuQ,4268
36
- webscout/Extra/autocoder/rawdog.py,sha256=Q0p2F5sa21KOVHnBP88-cRGCMBX2SKBiEmkwXkMu1xU,25159
42
+ webscout/Extra/autocoder/rawdog.py,sha256=o2lMY4Fwvl3GawBzwGXuqu-5dPFzDyX3ZZL1xmQV7Ls,25806
43
+ webscout/Extra/markdownlite/__init__.py,sha256=IJQ5SOs4nxmAdhZk8JylNdD6SsKJPZgvnzGqu6v4qWc,32339
37
44
  webscout/Litlogger/__init__.py,sha256=Q5FPfGKktfFyvqa6kMbye9LLzuy6VXGOgE3Q-uBGD2E,23928
38
45
  webscout/Local/__init__.py,sha256=Mte7RYlelBND2yof_HJ3MMZYBVeTISNFU2-LiFKSbU4,228
39
46
  webscout/Local/_version.py,sha256=jk6j7Rb0VWezDG1ZFhgYJpZiyL5rCivaiA86_jJecmk,139
@@ -69,16 +76,16 @@ webscout/Provider/Marcus.py,sha256=6LvBYnAcbwVYiXoQ8ZrprefJ6zS2KdveiEZauClNtSE,5
69
76
  webscout/Provider/NinjaChat.py,sha256=tMja5xItus6WoKJm_fhILLoGyPdplikqr-nxtuUziNU,8617
70
77
  webscout/Provider/OLLAMA.py,sha256=RQXJt-PJYnA15_IXhUy4mM9qwm4PcBMfINaZm2KG6zE,7018
71
78
  webscout/Provider/Openai.py,sha256=32uxZmZOovzshMQmqDcJ39If7N_UW4B3EeYmaxP_GwE,19983
72
- webscout/Provider/PI.py,sha256=_99QJ3tK6OPDakHpbgb49nhWLxD97N8ynMhlDWSnscA,8584
73
- webscout/Provider/Perplexity.py,sha256=ZdKRcezfp1KsvJOKkcalH2U9Krz5NuHz_M7fNAw8wRk,20871
79
+ webscout/Provider/PI.py,sha256=dMUpd1hLg72W7rnsza3k9QHBLmAi3GHSPRCkzmH-Ags,12860
80
+ webscout/Provider/Perplexity.py,sha256=BC4ZbVAjumNhw4_wNbs1Y4lwshEpJF5lanTmSqkXVG8,20476
74
81
  webscout/Provider/Phind.py,sha256=NA_b3B4h-kutX6wdoEg4THPfZggl2UeXPbramzZ6oiU,19297
75
82
  webscout/Provider/PizzaGPT.py,sha256=tEuEJAGbv-mTd479i3EgaqHd4NwgkrmMW0fpSsGm_N0,7207
76
83
  webscout/Provider/RUBIKSAI.py,sha256=fHCOAFWGXIESA05Bmuqtx6ZChnWomHOMwndfTLv1Hg8,8517
77
- webscout/Provider/Reka.py,sha256=nL0PJ96iQcaWWkCP0M30AAoeIRV7IJQAph7MkwkwRVI,8533
84
+ webscout/Provider/Reka.py,sha256=dWw4vX91nJhAn-X1SXK72gttRaTqWNGUBFaeRJobTJg,8519
78
85
  webscout/Provider/RoboCoders.py,sha256=vH1B0cKzQW6fU1TWwpUlnuQFW3uirzIWj0WIpiPal1s,7957
79
86
  webscout/Provider/TeachAnything.py,sha256=u5HxlVdOnRWXzA-cRSRhhdnvdsfafJ_4wr9qKIuW45s,6743
80
87
  webscout/Provider/Youchat.py,sha256=G6I4TqjZuX3refFF3SkOgl_YXY57hjsMg_wRjPgqWIE,9014
81
- webscout/Provider/__init__.py,sha256=rxQQnivC46YK9oUtRZ6jRXQpLR4psQOXRA1WVL-ll00,3045
88
+ webscout/Provider/__init__.py,sha256=lPzcVlyGtXFb9WJWOv0-jLdHRNXqIANpjqx-8SAGTYU,3191
82
89
  webscout/Provider/ai4chat.py,sha256=av96iS4QPt9IzhcswowmDY2F8IUSLl1YVHZ4bAbfO-s,8140
83
90
  webscout/Provider/aimathgpt.py,sha256=BdXNxEHQP11p6m0wl2Q-uben46A6lMKOg89utV1S7aI,7320
84
91
  webscout/Provider/askmyai.py,sha256=XDxLQfIztI-jwergalUfNiMOwNEw62jGTN4yTlar8Po,5895
@@ -98,7 +105,7 @@ webscout/Provider/lepton.py,sha256=4RiQ4YNJljX558yhSUqws6pf1Yhf7pWIesa4SRQCry8,7
98
105
  webscout/Provider/llama3mitril.py,sha256=3Ur3GMkmSSTmyxJh1u9fF0xlZ7ssFF6Jxuoi587N1lw,6501
99
106
  webscout/Provider/llamatutor.py,sha256=DijA4Y1CVDz-Ks8pACTSb6hnOxdQD2IHw-_ztRqhyPQ,8871
100
107
  webscout/Provider/llmchat.py,sha256=gr7ewEPWWIfjhmpQXTOZJxQffol8MA1yWAIXdG3VZZo,7944
101
- webscout/Provider/meta.py,sha256=TpoStt2nTUTCYxx4GI3IOQ7gX_Mi36pL7HhtjPvLtZQ,30717
108
+ webscout/Provider/meta.py,sha256=N1Ia1iDADfk1QJUHb10Vq5UvObiybQsi5QlUoNVaY-M,30456
102
109
  webscout/Provider/mhystical.py,sha256=W3j28XOnVGlRPCSYrjA5N7okYEdTVeOw41HdocfvzqE,6555
103
110
  webscout/Provider/perplexitylabs.py,sha256=3_qnAoh0nsp6uhqFqzwUyXBezAzmRFs4YSRxVIokYF8,9651
104
111
  webscout/Provider/prefind.py,sha256=msw_kXO59Xz-xG5f72O3WIww-HVyUAj-WpByeLiCB1U,9306
@@ -107,7 +114,7 @@ webscout/Provider/talkai.py,sha256=UZNiuQm5IPX_VFPOIVc1SJNPTKAcbvaOVO9fsVDVXNY,7
107
114
  webscout/Provider/turboseek.py,sha256=yDOZcS3UqHcas_pH1AcB-XLD6C2FRzZxLp8rJOhUZGQ,8521
108
115
  webscout/Provider/tutorai.py,sha256=ov-gRPAh22n8v7TWjeLdPnuHgCcaAsdpc2IfxfuSIEk,14716
109
116
  webscout/Provider/twitterclone.py,sha256=SsLFZ-PansLdhw0HHBrqZtrjI4ItiHvoHfQBroXHORw,9509
110
- webscout/Provider/typegpt.py,sha256=JtI7AEr0bh47QV_yso-joR0U8jAm54bzkTvu31w0WyI,12764
117
+ webscout/Provider/typegpt.py,sha256=6_i06EYXlJyqIMlZ_NwG4w9D96C6yfIMvAfHW-R9P6Q,12732
111
118
  webscout/Provider/upstage.py,sha256=rdH94hIwR98HKfar576WzVmgdB1DU2H8qaChUmJFtPc,9237
112
119
  webscout/Provider/x0gpt.py,sha256=Z8U4MQIRfhHpdarHO6_BZ27veXMDEAneguJ7uFSD_HU,6478
113
120
  webscout/Provider/yep.py,sha256=ge7a3cK02G6tbT0_q9glH7ujCx3QlgrqwBuHasQVYfQ,20581
@@ -139,16 +146,34 @@ webscout/Provider/TTI/imgninza/sync_ninza.py,sha256=hTwLKaDhweYa3MDDCy627JQq0DHu
139
146
  webscout/Provider/TTI/talkai/__init__.py,sha256=aHr_1M9Aq9MUgmIeUJaMdnvR0KPy48XHPrehf1s5udQ,131
140
147
  webscout/Provider/TTI/talkai/async_talkai.py,sha256=go4uDXBEyGTtH4xSm9YI9hnLhIhSjGhQp0wpMhGl8Xk,9188
141
148
  webscout/Provider/TTI/talkai/sync_talkai.py,sha256=D13sccDCecdGvG6-oKO-6y2aboTz2ztcotgC6T263GQ,8099
142
- webscout/Provider/TTS/__init__.py,sha256=uGhNvQUrElyPfxoXs5V9xJpLuIyShe3yKHif5MaERxA,77
143
- webscout/Provider/TTS/parler.py,sha256=NbS2IGhyZiTNQ3jNG3v1XWyVioHuBdsP0MIvQq7BKOg,3805
144
- webscout/Provider/TTS/streamElements.py,sha256=aaE55W_bAzvL3-pl7tHs_xU7dSZB5_V7ix-usoe-4aM,7398
145
- webscout/Provider/TTS/voicepod.py,sha256=wAAnpcpDyej72UjIRhEnEmcoJnUqp1lPCLiiwJMYJic,4343
149
+ webscout/Provider/TTS/__init__.py,sha256=kUEgod65aN2PKC9sSQmq0BeRY_Y_GFG7AgkAi1prXkg,177
150
+ webscout/Provider/TTS/deepgram.py,sha256=cdeFB_BQBG534xQTiDWzXJjRikpyydKhv4bQtmEgL_4,7212
151
+ webscout/Provider/TTS/elevenlabs.py,sha256=pm04R45Ws-WcnHsHerzI86TKPoPGPap6ia8mMiiWfqw,6267
152
+ webscout/Provider/TTS/gesserit.py,sha256=K8FeekO2hoDuqnvhkHqNN0DiXhZ7gPGKOjtbK6VTKLc,6271
153
+ webscout/Provider/TTS/murfai.py,sha256=wkVCZ72ajC2hpw0hTjuzz7lxNv6zd2H9FjrXK2-CKek,5749
154
+ webscout/Provider/TTS/parler.py,sha256=FRvRk2WFxJVkdmYqsDSX11bR6bxzyIaYRQ-m_6GMXc8,4911
155
+ webscout/Provider/TTS/streamElements.py,sha256=0cfayE1eQYQj4ILF9tmHdodIcw9WknTKsrgJWbK1hWg,11003
156
+ webscout/Provider/TTS/utils.py,sha256=-2sXcGG1lDBIr32fssI1Tf9yxl7gMWZRM0xzUFebeko,10599
157
+ webscout/Provider/TTS/voicepod.py,sha256=cMF7k88cP-RMqkqcoT8cu1o-eehxd2tqiq8laJeuMJw,4227
146
158
  webscout/litagent/__init__.py,sha256=V-hXEmMp3UH1qKmJDtL0j6_mazmbyyRrIqKqt__oIRw,6091
147
- webscout/litprinter/__init__.py,sha256=zD79i915U9qwNJBtQxa2QC_M37_oflw1Vpfx70W9PJU,30707
159
+ webscout/litprinter/__init__.py,sha256=eMGF91G3l8qMHDwwCnL-8-fGGGMLTSsdd9GfIRviJCA,31565
160
+ webscout/scout/__init__.py,sha256=fhN3P47AmrK2dINYc_lXqPbrITtMO5Gnnqs5PmoZqLY,241
161
+ webscout/scout/core.py,sha256=Joiw1RTPse2VQOjF5y6Uksa_ixsUSIO58RLWnyx6gbU,28761
162
+ webscout/scout/element.py,sha256=PZ-Hd5eyhUtqfPNY5wAPm-gNLOdPD3_y0H94mFrqBw4,14787
163
+ webscout/scout/utils.py,sha256=a9QJnsJ6LyYRRrjJYGUrvFfkBsynTcIgXR86t4tgaM4,979
164
+ webscout/scout/parsers/__init__.py,sha256=a0gysttcAnIxfY8UBbkNJdmMHEhfeI9VmfnQGZVYKPk,1762
165
+ webscout/scout/parsers/html5lib_parser.py,sha256=VRCQIDh7Z9XbS8-zSOsmRtR2Oyx_DEz85hjRvabBQ2Y,5627
166
+ webscout/scout/parsers/html_parser.py,sha256=pHCKl-n_9uNt2ld09nY6hiyFuCi4azT7Be8Rzlo1GQQ,6820
167
+ webscout/scout/parsers/lxml_parser.py,sha256=fDaxFuBSlU9x5hH5nDj5BHd72r9XHZ24Z5lt6FYPt_8,6053
148
168
  webscout/swiftcli/__init__.py,sha256=Yr_bsL1E3FaUh-xqWK_2ecG91IC2mSiP7eBa3en0mHc,27758
149
- webscout-6.4.dist-info/LICENSE.md,sha256=5mkWS6cgjGxJClmN7n--h0beF3uFAOV_Ngr1YTK33Tk,9203
150
- webscout-6.4.dist-info/METADATA,sha256=6ED0mCm-tYihFJ6CTs69vXuZayJJAaowImw2se0Ad_4,47806
151
- webscout-6.4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
152
- webscout-6.4.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
153
- webscout-6.4.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
154
- webscout-6.4.dist-info/RECORD,,
169
+ webscout/zeroart/__init__.py,sha256=WKB5gM0VY-trL0rWmMwYiStFyoMGe9ivx0DQ-IJe0W8,1308
170
+ webscout/zeroart/base.py,sha256=7Z5I5qFm11g5R8PktltDze8zF2VAIXswNrb5Z-jlRvw,1821
171
+ webscout/zeroart/effects.py,sha256=_UWmnxlTlf1gnT90nAXmgj-0j7_GAK7yX5KTNj34728,2932
172
+ webscout/zeroart/fonts.py,sha256=nBwIMxuXTJiZq2C654tPEiHt0KwyuO6iYnuBjQIf_O0,24842
173
+ webscout/zerodir/__init__.py,sha256=NHDON7WoN26G80uRXxPHH3jeTQhvz25Zx0yA7qq81fw,8396
174
+ webscout-6.5.dist-info/LICENSE.md,sha256=5mkWS6cgjGxJClmN7n--h0beF3uFAOV_Ngr1YTK33Tk,9203
175
+ webscout-6.5.dist-info/METADATA,sha256=phd5n2QatIQPBHY2hnEiY3z7LTiq0kkfSiRA-6PBDlI,46144
176
+ webscout-6.5.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
177
+ webscout-6.5.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
178
+ webscout-6.5.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
179
+ webscout-6.5.dist-info/RECORD,,