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.
- webscout/AIutel.py +7 -54
- webscout/DWEBS.py +48 -26
- webscout/{YTdownloader.py → Extra/YTToolkit/YTdownloader.py} +990 -1103
- webscout/Extra/YTToolkit/__init__.py +3 -0
- webscout/{transcriber.py → Extra/YTToolkit/transcriber.py} +1 -1
- webscout/Extra/YTToolkit/ytapi/__init__.py +6 -0
- webscout/Extra/YTToolkit/ytapi/channel.py +307 -0
- webscout/Extra/YTToolkit/ytapi/errors.py +13 -0
- webscout/Extra/YTToolkit/ytapi/extras.py +45 -0
- webscout/Extra/YTToolkit/ytapi/https.py +88 -0
- webscout/Extra/YTToolkit/ytapi/patterns.py +61 -0
- webscout/Extra/YTToolkit/ytapi/playlist.py +59 -0
- webscout/Extra/YTToolkit/ytapi/pool.py +8 -0
- webscout/Extra/YTToolkit/ytapi/query.py +37 -0
- webscout/Extra/YTToolkit/ytapi/stream.py +60 -0
- webscout/Extra/YTToolkit/ytapi/utils.py +62 -0
- webscout/Extra/YTToolkit/ytapi/video.py +102 -0
- webscout/Extra/__init__.py +2 -1
- webscout/Extra/autocoder/rawdog.py +679 -680
- webscout/Extra/gguf.py +441 -441
- webscout/Extra/markdownlite/__init__.py +862 -0
- webscout/Extra/weather_ascii.py +2 -2
- webscout/Provider/PI.py +292 -221
- webscout/Provider/Perplexity.py +6 -14
- webscout/Provider/Reka.py +0 -1
- webscout/Provider/TTS/__init__.py +5 -1
- webscout/Provider/TTS/deepgram.py +183 -0
- webscout/Provider/TTS/elevenlabs.py +137 -0
- webscout/Provider/TTS/gesserit.py +151 -0
- webscout/Provider/TTS/murfai.py +139 -0
- webscout/Provider/TTS/parler.py +134 -107
- webscout/Provider/TTS/streamElements.py +360 -275
- webscout/Provider/TTS/utils.py +280 -0
- webscout/Provider/TTS/voicepod.py +116 -116
- webscout/Provider/__init__.py +146 -146
- webscout/Provider/meta.py +794 -779
- webscout/Provider/typegpt.py +1 -2
- webscout/__init__.py +24 -28
- webscout/litprinter/__init__.py +831 -830
- webscout/optimizers.py +269 -269
- webscout/prompt_manager.py +279 -279
- webscout/scout/__init__.py +11 -0
- webscout/scout/core.py +884 -0
- webscout/scout/element.py +459 -0
- webscout/scout/parsers/__init__.py +69 -0
- webscout/scout/parsers/html5lib_parser.py +172 -0
- webscout/scout/parsers/html_parser.py +236 -0
- webscout/scout/parsers/lxml_parser.py +178 -0
- webscout/scout/utils.py +38 -0
- webscout/update_checker.py +125 -125
- webscout/version.py +1 -1
- webscout/zeroart/__init__.py +55 -0
- webscout/zeroart/base.py +61 -0
- webscout/zeroart/effects.py +99 -0
- webscout/zeroart/fonts.py +816 -0
- webscout/zerodir/__init__.py +225 -0
- {webscout-6.4.dist-info → webscout-6.5.dist-info}/METADATA +12 -68
- {webscout-6.4.dist-info → webscout-6.5.dist-info}/RECORD +62 -37
- webscout/Agents/Onlinesearcher.py +0 -182
- webscout/Agents/__init__.py +0 -2
- webscout/Agents/functioncall.py +0 -248
- webscout/Bing_search.py +0 -251
- webscout/gpt4free.py +0 -666
- webscout/requestsHTMLfix.py +0 -775
- webscout/webai.py +0 -2590
- {webscout-6.4.dist-info → webscout-6.5.dist-info}/LICENSE.md +0 -0
- {webscout-6.4.dist-info → webscout-6.5.dist-info}/WHEEL +0 -0
- {webscout-6.4.dist-info → webscout-6.5.dist-info}/entry_points.txt +0 -0
- {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.
|
|
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
|
|
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:**
|
|
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
|
|
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
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
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=
|
|
3
|
+
webscout/AIutel.py,sha256=gsV08e3F6aH4j7wH5V9X3N9T5Ea5MAIQq4M47vNofuI,12020
|
|
4
4
|
webscout/Bard.py,sha256=CmDhKC67Ki2xA8Rkme6EC-gLmq3PhAAAGd5tcpJ0KJo,13234
|
|
5
|
-
webscout/
|
|
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/
|
|
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/
|
|
15
|
-
webscout/
|
|
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/
|
|
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=
|
|
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/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
73
|
-
webscout/Provider/Perplexity.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
143
|
-
webscout/Provider/TTS/
|
|
144
|
-
webscout/Provider/TTS/
|
|
145
|
-
webscout/Provider/TTS/
|
|
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=
|
|
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
|
|
150
|
-
webscout
|
|
151
|
-
webscout
|
|
152
|
-
webscout
|
|
153
|
-
webscout
|
|
154
|
-
webscout-6.
|
|
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,,
|