webscout 2025.10.15__py3-none-any.whl → 2025.10.17__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/Extra/YTToolkit/README.md +1 -1
- webscout/Extra/tempmail/README.md +3 -3
- webscout/Provider/ClaudeOnline.py +350 -0
- webscout/Provider/OPENAI/README.md +1 -1
- webscout/Provider/TTI/bing.py +4 -4
- webscout/Provider/TTI/claudeonline.py +315 -0
- webscout/__init__.py +1 -1
- webscout/client.py +4 -5
- webscout/litprinter/__init__.py +0 -42
- webscout/scout/README.md +59 -8
- webscout/scout/core/scout.py +62 -0
- webscout/scout/element.py +251 -45
- webscout/search/__init__.py +3 -4
- webscout/search/engines/bing/images.py +5 -2
- webscout/search/engines/bing/news.py +6 -4
- webscout/search/engines/bing/text.py +5 -2
- webscout/search/engines/yahoo/__init__.py +41 -0
- webscout/search/engines/yahoo/answers.py +16 -0
- webscout/search/engines/yahoo/base.py +34 -0
- webscout/search/engines/yahoo/images.py +324 -0
- webscout/search/engines/yahoo/maps.py +16 -0
- webscout/search/engines/yahoo/news.py +258 -0
- webscout/search/engines/yahoo/suggestions.py +140 -0
- webscout/search/engines/yahoo/text.py +273 -0
- webscout/search/engines/yahoo/translate.py +16 -0
- webscout/search/engines/yahoo/videos.py +302 -0
- webscout/search/engines/yahoo/weather.py +220 -0
- webscout/search/http_client.py +1 -1
- webscout/search/yahoo_main.py +54 -0
- webscout/{auth → server}/__init__.py +2 -23
- webscout/server/config.py +84 -0
- webscout/{auth → server}/request_processing.py +3 -28
- webscout/{auth → server}/routes.py +6 -148
- webscout/server/schemas.py +23 -0
- webscout/{auth → server}/server.py +11 -43
- webscout/server/simple_logger.py +84 -0
- webscout/version.py +1 -1
- webscout/version.py.bak +1 -1
- webscout/zeroart/README.md +17 -9
- webscout/zeroart/__init__.py +78 -6
- webscout/zeroart/effects.py +51 -1
- webscout/zeroart/fonts.py +559 -1
- {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/METADATA +11 -54
- {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/RECORD +51 -46
- {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/entry_points.txt +1 -1
- webscout/Extra/weather.md +0 -281
- webscout/auth/api_key_manager.py +0 -189
- webscout/auth/auth_system.py +0 -85
- webscout/auth/config.py +0 -175
- webscout/auth/database.py +0 -755
- webscout/auth/middleware.py +0 -248
- webscout/auth/models.py +0 -185
- webscout/auth/rate_limiter.py +0 -254
- webscout/auth/schemas.py +0 -103
- webscout/auth/simple_logger.py +0 -236
- webscout/search/engines/yahoo.py +0 -65
- webscout/search/engines/yahoo_news.py +0 -64
- /webscout/{auth → server}/exceptions.py +0 -0
- /webscout/{auth → server}/providers.py +0 -0
- /webscout/{auth → server}/request_models.py +0 -0
- {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/WHEEL +0 -0
- {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/licenses/LICENSE.md +0 -0
- {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: webscout
|
|
3
|
-
Version: 2025.10.
|
|
3
|
+
Version: 2025.10.17
|
|
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-email: OEvortex <helpingai5@gmail.com>
|
|
6
6
|
License: HelpingAI
|
|
@@ -50,7 +50,6 @@ Requires-Dist: lxml>=5.2.2
|
|
|
50
50
|
Requires-Dist: orjson
|
|
51
51
|
Requires-Dist: PyYAML
|
|
52
52
|
Requires-Dist: pillow
|
|
53
|
-
Requires-Dist: bson
|
|
54
53
|
Requires-Dist: cloudscraper
|
|
55
54
|
Requires-Dist: html5lib
|
|
56
55
|
Requires-Dist: aiofiles
|
|
@@ -70,15 +69,13 @@ Requires-Dist: uvicorn[standard]; extra == "api"
|
|
|
70
69
|
Requires-Dist: pydantic; extra == "api"
|
|
71
70
|
Requires-Dist: python-multipart; extra == "api"
|
|
72
71
|
Requires-Dist: tiktoken; extra == "api"
|
|
73
|
-
Requires-Dist: motor; extra == "api"
|
|
74
72
|
Requires-Dist: jinja2; extra == "api"
|
|
75
|
-
Requires-Dist: supabase; extra == "api"
|
|
76
73
|
Requires-Dist: websockets>=11.0; extra == "api"
|
|
77
74
|
Requires-Dist: starlette; extra == "api"
|
|
78
75
|
Dynamic: license-file
|
|
79
76
|
|
|
80
77
|
<div align="center">
|
|
81
|
-
<a href="https://github.com/
|
|
78
|
+
<a href="https://github.com/pyscout/Webscout">
|
|
82
79
|
<img src="https://img.shields.io/badge/WebScout-Ultimate%20Toolkit-blue?style=for-the-badge&logo=python&logoColor=white" alt="WebScout Logo">
|
|
83
80
|
</a>
|
|
84
81
|
|
|
@@ -96,7 +93,7 @@ Dynamic: license-file
|
|
|
96
93
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout/month?style=flat-square" alt="Monthly Downloads"></a>
|
|
97
94
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout?style=flat-square" alt="Total Downloads"></a>
|
|
98
95
|
<a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout?style=flat-square&logo=python" alt="Python Version"></a>
|
|
99
|
-
<a href="https://deepwiki.com/
|
|
96
|
+
<a href="https://deepwiki.com/pyscout/Webscout"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
|
|
100
97
|
</p>
|
|
101
98
|
</div>
|
|
102
99
|
|
|
@@ -108,6 +105,7 @@ Dynamic: license-file
|
|
|
108
105
|
- [⚙️ Installation](#️-installation)
|
|
109
106
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
110
107
|
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
108
|
+
- [🕸️ Scout: HTML Parser & Web Crawler](docs/scout.md)
|
|
111
109
|
- [🤖 AI Models and Voices](#-ai-models-and-voices)
|
|
112
110
|
- [💬 AI Chat Providers](#-ai-chat-providers)
|
|
113
111
|
- [👨💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
|
|
@@ -121,7 +119,7 @@ Dynamic: license-file
|
|
|
121
119
|
>
|
|
122
120
|
> - **Native Compatibility:** Webscout's own native API for maximum flexibility
|
|
123
121
|
> - **OpenAI Compatibility:** Use providers with OpenAI-compatible interfaces
|
|
124
|
-
> - **Local LLM Compatibility:** Run local models with
|
|
122
|
+
> - **Local LLM Compatibility:** Run local models with OpenAI-compatible servers
|
|
125
123
|
>
|
|
126
124
|
> Choose the approach that best fits your needs! For OpenAI compatibility, check the [OpenAI Providers README](webscout/Provider/OPENAI/README.md) or see the [OpenAI-Compatible API Server](#-openai-compatible-api-server) section below.
|
|
127
125
|
|
|
@@ -152,7 +150,7 @@ Dynamic: license-file
|
|
|
152
150
|
- **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
|
|
153
151
|
- **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
|
|
154
152
|
- **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
|
|
155
|
-
- **
|
|
153
|
+
- **Local LLMs:** Run local models with OpenAI-compatible servers (see [Inferno documentation](docs/inferno.md))
|
|
156
154
|
- **[AI Search](webscout/Provider/AISEARCH/README.md):** AI-powered search engines with advanced capabilities
|
|
157
155
|
</p>
|
|
158
156
|
</details>
|
|
@@ -164,7 +162,7 @@ Dynamic: license-file
|
|
|
164
162
|
- **[YouTube Toolkit](webscout/Extra/YTToolkit/README.md):** Advanced YouTube video and transcript management with multi-language support
|
|
165
163
|
- **[Text-to-Speech (TTS)](webscout/Provider/TTS/README.md):** Convert text into natural-sounding speech using multiple AI-powered providers
|
|
166
164
|
- **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
|
|
167
|
-
- **[Weather Tools](
|
|
165
|
+
- **[Weather Tools](docs/weather.md):** Retrieve detailed weather information for any location
|
|
168
166
|
</p>
|
|
169
167
|
</details>
|
|
170
168
|
|
|
@@ -177,8 +175,7 @@ Dynamic: license-file
|
|
|
177
175
|
- **[LitPrinter](webscout/litprinter/Readme.md):** Styled console output with rich formatting and colors
|
|
178
176
|
- **[LitLogger](webscout/litlogger/README.md):** Simplified logging with customizable formats and color schemes
|
|
179
177
|
- **[LitAgent](webscout/litagent/Readme.md):** Modern user agent generator that keeps your requests undetectable
|
|
180
|
-
- **[Scout](
|
|
181
|
-
- **[Inferno](https://github.com/HelpingAI/inferno):** Run local LLMs with an OpenAI-compatible API and interactive CLI (now a standalone package: `pip install inferno-llm`)
|
|
178
|
+
- **[Scout](docs/scout.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
|
|
182
179
|
- **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
|
|
183
180
|
- **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
|
|
184
181
|
- **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
|
|
@@ -245,7 +242,7 @@ webscout-server
|
|
|
245
242
|
|
|
246
243
|
```bash
|
|
247
244
|
# Clone the repository
|
|
248
|
-
git clone https://github.com/
|
|
245
|
+
git clone https://github.com/pyscout/Webscout.git
|
|
249
246
|
cd Webscout
|
|
250
247
|
|
|
251
248
|
# Install in development mode with UV
|
|
@@ -262,8 +259,8 @@ uv pip install -e ".[dev,api]"
|
|
|
262
259
|
|
|
263
260
|
```bash
|
|
264
261
|
# Pull and run the Docker image
|
|
265
|
-
docker pull
|
|
266
|
-
docker run -it
|
|
262
|
+
docker pull pyscout/webscout:latest
|
|
263
|
+
docker run -it pyscout/webscout:latest
|
|
267
264
|
```
|
|
268
265
|
|
|
269
266
|
### 📱 Quick Start Commands
|
|
@@ -327,46 +324,6 @@ Webscout provides comprehensive CLI commands for all search engines. See the [Se
|
|
|
327
324
|
</p>
|
|
328
325
|
</details>
|
|
329
326
|
|
|
330
|
-
<details open>
|
|
331
|
-
<summary><b>Inferno LLM Commands</b></summary>
|
|
332
|
-
<p>
|
|
333
|
-
|
|
334
|
-
Inferno is now a standalone package. Install it separately with:
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
pip install inferno-llm
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
After installation, you can use its CLI for managing and using local LLMs:
|
|
341
|
-
|
|
342
|
-
```bash
|
|
343
|
-
inferno --help
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
| Command | Description |
|
|
347
|
-
| ------------------------ | ----------------------------------------------- |
|
|
348
|
-
| `inferno pull <model>` | Download a model from Hugging Face |
|
|
349
|
-
| `inferno list` | List downloaded models |
|
|
350
|
-
| `inferno serve <model>` | Start a model server with OpenAI-compatible API |
|
|
351
|
-
| `inferno run <model>` | Chat with a model interactively |
|
|
352
|
-
| `inferno remove <model>` | Remove a downloaded model |
|
|
353
|
-
| `inferno version` | Show version information |
|
|
354
|
-
|
|
355
|
-
For more information, visit the [Inferno GitHub repository](https://github.com/HelpingAI/inferno) or [PyPI package page](https://pypi.org/project/inferno-llm/).
|
|
356
|
-
|
|
357
|
-
</p>
|
|
358
|
-
</details>
|
|
359
|
-
|
|
360
|
-
> [!NOTE]
|
|
361
|
-
> **Hardware requirements for running models with Inferno:**
|
|
362
|
-
>
|
|
363
|
-
> - Around 2 GB of RAM for 1B models
|
|
364
|
-
> - Around 4 GB of RAM for 3B models
|
|
365
|
-
> - At least 8 GB of RAM for 7B models
|
|
366
|
-
> - 16 GB of RAM for 13B models
|
|
367
|
-
> - 32 GB of RAM for 33B models
|
|
368
|
-
> - GPU acceleration is recommended for better performance
|
|
369
|
-
|
|
370
327
|
For detailed information about the OpenAI-compatible API server, including setup, configuration, and usage examples, see the [OpenAI API Server Documentation](docs/openai-api-server.md).
|
|
371
328
|
|
|
372
329
|
<hr/>
|
|
@@ -2,10 +2,10 @@ webscout/AIauto.py,sha256=oVgK_iMgz2cmb2fYz88p0qq7TY4uXHyxyFd4UmCKw9g,10307
|
|
|
2
2
|
webscout/AIbase.py,sha256=pmqdGdDepp5iBM47J8POqOqu7sL3LlzCThtfgT0V0Ho,14150
|
|
3
3
|
webscout/AIutel.py,sha256=bIdaIPLs8lnXzboGP_ffQNitoYg2LL_B1krrMxYhzho,2054
|
|
4
4
|
webscout/Bard.py,sha256=TWQ3paoCe5Tk2DXoxue0Jpfocx3S9l-_NaMtV7lkMQM,43785
|
|
5
|
-
webscout/__init__.py,sha256=
|
|
5
|
+
webscout/__init__.py,sha256=lmDZlwaGqaXw-Aa7Cb0bys0mo1Go5QbyfnoW5xMYlJI,702
|
|
6
6
|
webscout/__main__.py,sha256=pBm2E3ZZiMcCH37b1YCz7qKdKdX_i_S5En6fZDeJKFw,103
|
|
7
7
|
webscout/cli.py,sha256=8DPRSP1fB8pdIeC5Ed6FH7mewOhCTH78RPvo9xwtxSU,14463
|
|
8
|
-
webscout/client.py,sha256=
|
|
8
|
+
webscout/client.py,sha256=puNIpyQBMd0qysXij12_uveJmcN4brQhvQiheLJgkt4,5517
|
|
9
9
|
webscout/conversation.py,sha256=FZy8eviJVq16SIVjXr-lfOrPPqWV6AjjO_uF_DLOtJ0,16651
|
|
10
10
|
webscout/exceptions.py,sha256=5Y15eEjQkZcAjL4Rh68uo776MrQzmTINwi1fKzOXkGU,12472
|
|
11
11
|
webscout/models.py,sha256=oZGSv6Mg74OMCvsuDngoyDPmyPnNZy8g7Q24lO69KwY,6385
|
|
@@ -14,13 +14,12 @@ webscout/prompt_manager.py,sha256=ysKFgPhkV3uqrOCilqcS9rG8xhzdU_d2wx0grC9WCCc,98
|
|
|
14
14
|
webscout/sanitize.py,sha256=pw2Dzn-Jw9mOD4mpALYAvAf-medA-9AqdzsOmdXQbl0,46577
|
|
15
15
|
webscout/update_checker.py,sha256=bz0TzRxip9DOIVMFyNz9HsGj4RKB0xZgo57AUVSJINo,3708
|
|
16
16
|
webscout/utils.py,sha256=o2hU3qaVPk25sog3e4cyVZO3l8xwaZpYRziZPotEzNo,3075
|
|
17
|
-
webscout/version.py,sha256=
|
|
18
|
-
webscout/version.py.bak,sha256=
|
|
17
|
+
webscout/version.py,sha256=3D9mFWY4P-ZGCKSuDPkkzHusmyndScdoNbUtry1vdCE,51
|
|
18
|
+
webscout/version.py.bak,sha256=bau6psbS6y1YovrRr6K7N3uBj_p0yf9WmHDqSK16bMs,51
|
|
19
19
|
webscout/Extra/Act.md,sha256=_C2VW_Dc-dc7eejpGYKAOZhImHKPiQ7NSwE3bkzr6fg,18952
|
|
20
20
|
webscout/Extra/__init__.py,sha256=KvJRsRBRO-fZp2jSCl6KQnPppi93hriA6O_U1O1s31c,177
|
|
21
21
|
webscout/Extra/gguf.md,sha256=McXGz5sTfzOO9X4mH8yIqu5K3CgjzyXKi4_HQtezdZ4,12435
|
|
22
22
|
webscout/Extra/gguf.py,sha256=sbUsEPbws99yzS2EzZHLmZ55q6esFfu7k2y5WzMBEbA,55683
|
|
23
|
-
webscout/Extra/weather.md,sha256=CaDwLmmHEXHSsMkSxFzrNOl2YslRcIMn3Hd3N1eaFq4,9781
|
|
24
23
|
webscout/Extra/weather.py,sha256=KwbJC2Most6jVLvv8X_Ct7APGimSr98REgLc07kR-Ec,7648
|
|
25
24
|
webscout/Extra/weather_ascii.py,sha256=k6U0F9w5xXPvYK-Wq3pjUh7W0gGJG4e_YhxeUI65Vpk,2612
|
|
26
25
|
webscout/Extra/GitToolkit/__init__.py,sha256=S8clC97xkihcsxfbAO9QOmSO2ljLOiQFoUh_klhp2zw,146
|
|
@@ -29,7 +28,7 @@ webscout/Extra/GitToolkit/gitapi/__init__.py,sha256=G5CeHDuQQEoJvE5rLttV1Z_hsTRn
|
|
|
29
28
|
webscout/Extra/GitToolkit/gitapi/repository.py,sha256=AMeNXlfAIicM47_18z9i3kRZUobZNKeAePUrMqA_NqY,7124
|
|
30
29
|
webscout/Extra/GitToolkit/gitapi/user.py,sha256=SO795ulRXYmr4fKPccCKedlCoUNWTKBvpgd4ueH4B0o,3534
|
|
31
30
|
webscout/Extra/GitToolkit/gitapi/utils.py,sha256=PBUcc9gdmmV48g66uzJBP-YqxhGZoKJkV5eXs3WP6Lc,1835
|
|
32
|
-
webscout/Extra/YTToolkit/README.md,sha256=
|
|
31
|
+
webscout/Extra/YTToolkit/README.md,sha256=zULb30daDNwKkGLGpKKaRYtMKJGAHwESgshnp5morDk,10918
|
|
33
32
|
webscout/Extra/YTToolkit/YTdownloader.py,sha256=58hA9wjZY3tQyn2NptXviS6saoE2ewdWF2q7YrpMgWg,32095
|
|
34
33
|
webscout/Extra/YTToolkit/__init__.py,sha256=Wn1K-f6OjZ4GuWvL3FTM4zlTaF3xdb4v_K60YDxKdXg,75
|
|
35
34
|
webscout/Extra/YTToolkit/transcriber.py,sha256=ur1lpZgNO2oNRBvLSFWFbwnE11FcArKXvSqmBy03aus,18575
|
|
@@ -49,7 +48,7 @@ webscout/Extra/YTToolkit/ytapi/video.py,sha256=71lM8KVS0kRyo6dnLmM00Sszs5bKIHWcG
|
|
|
49
48
|
webscout/Extra/autocoder/__init__.py,sha256=Oj25K3UxPK3q5C222BI5wfoKAW_j853_0br9-kyt4_I,221
|
|
50
49
|
webscout/Extra/autocoder/autocoder.py,sha256=YlP-z-CEaSgSygD95c9ijoNmzUy4nxfYkbhVR4IeIPQ,41371
|
|
51
50
|
webscout/Extra/autocoder/autocoder_utiles.py,sha256=79O4O3dR7cKCdpUAh2Ek7rTt-ZfTmYmcQXeqdy5eoMg,21611
|
|
52
|
-
webscout/Extra/tempmail/README.md,sha256=
|
|
51
|
+
webscout/Extra/tempmail/README.md,sha256=5PJH7F7Pv7y7u4GXE-HbFA5m6k9zFLL7ZrL7YUcPlyg,20838
|
|
53
52
|
webscout/Extra/tempmail/__init__.py,sha256=27ntzaiFDBmw-QyIc4tkoBRCJ45uNmPP0zdaIiSh02Q,614
|
|
54
53
|
webscout/Extra/tempmail/async_utils.py,sha256=F1v8oqqXWEmzim9e4jJGAOKrGdYHpkdDqjE0xpzNaU4,4275
|
|
55
54
|
webscout/Extra/tempmail/base.py,sha256=kCtCVmbb6mdDsqmI19Q_gyg80nBrhOMvEits7XPKhy4,5386
|
|
@@ -68,6 +67,7 @@ webscout/Provider/Andi.py,sha256=CWFMRw9edQ0yRGLXtciPsl_O0v2Qs80TH8TkJ2bkAUk,873
|
|
|
68
67
|
webscout/Provider/Apriel.py,sha256=caAjFQtMLfB0Er_eA-tW8_kGASE5AnaqLYifw1uJuIo,11335
|
|
69
68
|
webscout/Provider/ChatGPTClone.py,sha256=hX_9Ytegiz6oDARzjwU11PPEXJqwTFGHAgShtDLbGHs,9715
|
|
70
69
|
webscout/Provider/ChatSandbox.py,sha256=Hl8vOQzij7VyYVoL3DvJO6HGUs6tXZY3xrbCLKrF_ZI,13122
|
|
70
|
+
webscout/Provider/ClaudeOnline.py,sha256=3J5LEjvxzpYgIcycCq1aG_kFjks7ECkJS6l0HQ5bEyQ,12748
|
|
71
71
|
webscout/Provider/Cloudflare.py,sha256=nrHCZ9SYNNRIxxzR_QRU1fy-jh31WnErxIimF0aDZms,14155
|
|
72
72
|
webscout/Provider/Cohere.py,sha256=wPULeG_2JZdhN8oTBjs_QNqs6atjkYkjCa01mRmg8Fw,8082
|
|
73
73
|
webscout/Provider/Deepinfra.py,sha256=Z3FNMaaVd4KiitDG8LBgGWycNuT6Y1Z06sCFURd0Ynw,15882
|
|
@@ -148,7 +148,7 @@ webscout/Provider/OPENAI/GeminiProxy.py,sha256=9_6VHFylM3-ct0m5XDvxfZ1tmd70RnyZl
|
|
|
148
148
|
webscout/Provider/OPENAI/K2Think.py,sha256=bNdq-oy2ie8PH7r6RDX7ZosYKFGjqzLSBvC2d_HAWAg,14822
|
|
149
149
|
webscout/Provider/OPENAI/NEMOTRON.py,sha256=kRxqwDlWSPh3UbNA6qdaOdmD1nma1oStbcSXIWaJgh4,9470
|
|
150
150
|
webscout/Provider/OPENAI/PI.py,sha256=Jn7bdqpz-Nofngajh8z2XWydVP2YHugJMerRLulRQ7M,14818
|
|
151
|
-
webscout/Provider/OPENAI/README.md,sha256=
|
|
151
|
+
webscout/Provider/OPENAI/README.md,sha256=4uyOUwcUgfaYG-rSx8jnqTyOL5lAAW1uMEPGkHxmSSI,24135
|
|
152
152
|
webscout/Provider/OPENAI/TogetherAI.py,sha256=6m1e2N0uqAuppnKiTadHzVqvLdkXs_QH8SIqlnEPRNg,13768
|
|
153
153
|
webscout/Provider/OPENAI/TwoAI.py,sha256=bwuj7vCI5DkY_0d1rPMuKUmbL4ePAyUVrKvwFtU5CtM,17489
|
|
154
154
|
webscout/Provider/OPENAI/__init__.py,sha256=EwtLtQs6VEpLFOBeXi9hC9FTJIJdHPZTZtu3iFFqhP0,1210
|
|
@@ -192,7 +192,8 @@ webscout/Provider/TTI/README.md,sha256=Qc9uXdEV2tGB6PyaM-HsLu_FZ7NcxHjGBwsNM5Gd0
|
|
|
192
192
|
webscout/Provider/TTI/__init__.py,sha256=EwtLtQs6VEpLFOBeXi9hC9FTJIJdHPZTZtu3iFFqhP0,1210
|
|
193
193
|
webscout/Provider/TTI/aiarta.py,sha256=aWIATT_xQU7AmH3rK9mDCrUyN_7yOqkpXFPKicrGKfY,14956
|
|
194
194
|
webscout/Provider/TTI/base.py,sha256=SnNs-mJH8tcmcygNnfNtwPvWBk11FUO6nLTfnHnZADQ,5088
|
|
195
|
-
webscout/Provider/TTI/bing.py,sha256=
|
|
195
|
+
webscout/Provider/TTI/bing.py,sha256=wzUtAprlptlvuA3wndn3i-5UBQIL-YSe8rmjhqb1T-Q,10632
|
|
196
|
+
webscout/Provider/TTI/claudeonline.py,sha256=v6CEst37QG53g-H9rqjwiZeipJyedU1HHG3PrHX31Bw,10969
|
|
196
197
|
webscout/Provider/TTI/gpt1image.py,sha256=PKqc0JU7hweypnSooI7gWuXqJbKz52xfGQny90-Uin0,4831
|
|
197
198
|
webscout/Provider/TTI/imagen.py,sha256=VtSTJzTao4oUje4viEuYbcAw2Fol-JhBPax3XeXuByM,6488
|
|
198
199
|
webscout/Provider/TTI/infip.py,sha256=qAzcym5hyxHyuW5PFqcWN__ebs5s9wLCADakO_28aD4,7083
|
|
@@ -230,34 +231,18 @@ webscout/Provider/UNFINISHED/liner_api_request.py,sha256=13-38YyFMUyjaJQcdfsJC-W
|
|
|
230
231
|
webscout/Provider/UNFINISHED/puterjs.py,sha256=jpTfTh8QWDqeDU3KO0OwAyLborGiPyAYH-v1bz34ekA,27591
|
|
231
232
|
webscout/Provider/UNFINISHED/samurai.py,sha256=nw17DIz8DrgodhhekHRhO6mVqhor-2KmTTnLdBz6X3I,8223
|
|
232
233
|
webscout/Provider/UNFINISHED/test_lmarena.py,sha256=JvN1Yr9E4sdrSuUcfKnR1fEtisp0oQkswRMTSBHn9wI,3734
|
|
233
|
-
webscout/auth/__init__.py,sha256=tcgG2dottPjoBRSLMFx7fHl4C0zSssWbkaLW0JNF3Z0,1848
|
|
234
|
-
webscout/auth/api_key_manager.py,sha256=a3F4d2r7h3GqV-wxNj2vNLkU9o0-ld-XU9udt_CQL0g,6954
|
|
235
|
-
webscout/auth/auth_system.py,sha256=Uyqa9-IOOYIC_qvU5Mc5LwQM16rFHJJ5F-715VdMlGg,2926
|
|
236
|
-
webscout/auth/config.py,sha256=kYZ7Dnul_P16wMSlfNem9nkSeY8Hh-plJrcUA0of2q4,6947
|
|
237
|
-
webscout/auth/database.py,sha256=Q0thfSnTg8IXrAUQkpD-9CXhV6OBzrmwdnIHtc2I51o,30076
|
|
238
|
-
webscout/auth/exceptions.py,sha256=FGqNLQmjv2i3Jk_P3csJzT4qkmVdBMdH7vFkM37Xa3Y,2048
|
|
239
|
-
webscout/auth/middleware.py,sha256=zSQBIt0LacbeyNjwRIfnO-tdE7-p0w77UkPd7aUTri0,9863
|
|
240
|
-
webscout/auth/models.py,sha256=gL7R1iazFM2-y1wiiOqxhmnrWfNMJcE5TlSQvSjj0-Q,7162
|
|
241
|
-
webscout/auth/providers.py,sha256=gE0zKl8gwCD2P0e16y6YnbhmBM1qut0wKwAk5jmt8LI,11646
|
|
242
|
-
webscout/auth/rate_limiter.py,sha256=8l1CpUY5YkY8SPHvZxL2SejAkO93uNklwQeSbjRxU5A,9925
|
|
243
|
-
webscout/auth/request_models.py,sha256=hgo0AZ5CknEWCmZ4KBMs8T0xjmtlecbk645yU622Ujs,5804
|
|
244
|
-
webscout/auth/request_processing.py,sha256=UB2JykZ98Acxd67VtFsLGOT9UwwwPQ8OeXzc9fkOrp4,17232
|
|
245
|
-
webscout/auth/routes.py,sha256=1s-g3xK5og0MCQnVHiCzwy4hOxCZLR1pp_5cEy2QMGw,29167
|
|
246
|
-
webscout/auth/schemas.py,sha256=fu3-V9F0n5AZ65A-fGGiBiuQcwk1Ec3urO7N30Nv90o,4577
|
|
247
|
-
webscout/auth/server.py,sha256=-_KTByk7CMgsEeXPlCT4xuLYzC2ae1NiFCStGQr-ytc,13850
|
|
248
|
-
webscout/auth/simple_logger.py,sha256=Tcj6HdfvUxQTF1SU-IPXlLjaLKSLeoFm9b0RN8_csT8,8264
|
|
249
234
|
webscout/litagent/Readme.md,sha256=kwBG41HOjACdLfwJbluSyePc0RueITffwfplDEd2JJ0,7265
|
|
250
235
|
webscout/litagent/__init__.py,sha256=rJCD_8ytXnUXMtNXG6O7nOnDHks8dbucf7S4WO7i7Go,854
|
|
251
236
|
webscout/litagent/agent.py,sha256=dOXqdWq8Cdko2FX_CY3gg5IYBeq53DrkU5iFuAy5mHU,24045
|
|
252
237
|
webscout/litagent/constants.py,sha256=uEx60lV6XKtY1yPOgl7mo4CaP0HAlfdoVjDaiPzmlHE,2116
|
|
253
|
-
webscout/litprinter/__init__.py,sha256=
|
|
254
|
-
webscout/scout/README.md,sha256=
|
|
238
|
+
webscout/litprinter/__init__.py,sha256=ggBHU4rFpQyaiX-flGdJW9R7eE_C5NWiOm8QCcC_uSQ,712
|
|
239
|
+
webscout/scout/README.md,sha256=n8hRiCr8Y2u68p0G3DoR-RV54HWuopH4KpCjKfbZL00,14146
|
|
255
240
|
webscout/scout/__init__.py,sha256=C-uYGqVR7iiScetSxUTHc76i0OLQnWJO7WFTfhgafW4,325
|
|
256
|
-
webscout/scout/element.py,sha256=
|
|
241
|
+
webscout/scout/element.py,sha256=OmTdWBcVPMs1ox5c5vvqfpljw22fhZJ8YCmhozWKq10,27741
|
|
257
242
|
webscout/scout/utils.py,sha256=I7ag7oeaUn07Q8vccGQpgJG9qEnpczvJ2Xh0K9z5NKw,969
|
|
258
243
|
webscout/scout/core/__init__.py,sha256=Ujr53szROD5gAvi3ZDCa3OufJNIN1eCHqLmsbKxpwDw,290
|
|
259
244
|
webscout/scout/core/crawler.py,sha256=QDVsqhTFGHt3YsGrJ6stSUgnYolQN_8Y0HFu3MxrUCs,10388
|
|
260
|
-
webscout/scout/core/scout.py,sha256=
|
|
245
|
+
webscout/scout/core/scout.py,sha256=IfN6ekpQB1zgLCcVlbdwGQruu7g8yLPYxaq_bz3_MMk,25756
|
|
261
246
|
webscout/scout/core/search_result.py,sha256=SbNOkDB10uu4LCZraFDOoXmsXveS1mz79NGbNeUnJh0,2862
|
|
262
247
|
webscout/scout/core/text_analyzer.py,sha256=QwLnCPM9hDhq9vDcJHWpW1qH6MGzmUYnLz7j6JMNG3A,1784
|
|
263
248
|
webscout/scout/core/text_utils.py,sha256=HifZXsCAvpnLVFztGP1wDeYVmlEwfW-KXmU4e0-fyEo,10536
|
|
@@ -266,26 +251,25 @@ webscout/scout/parsers/__init__.py,sha256=a0gysttcAnIxfY8UBbkNJdmMHEhfeI9VmfnQGZ
|
|
|
266
251
|
webscout/scout/parsers/html5lib_parser.py,sha256=VRCQIDh7Z9XbS8-zSOsmRtR2Oyx_DEz85hjRvabBQ2Y,5627
|
|
267
252
|
webscout/scout/parsers/html_parser.py,sha256=OxQcFYjK-cWduKAbcxqChfRvKgqNjPqfN1Uit_dkJwQ,6792
|
|
268
253
|
webscout/scout/parsers/lxml_parser.py,sha256=fDaxFuBSlU9x5hH5nDj5BHd72r9XHZ24Z5lt6FYPt_8,6053
|
|
269
|
-
webscout/search/__init__.py,sha256=
|
|
254
|
+
webscout/search/__init__.py,sha256=0XpynvIDRPbO73aGYNr36PKEhjloWsmf5mA5WB6qIPA,958
|
|
270
255
|
webscout/search/base.py,sha256=IFBHh0s-b3SXXDbi5cCzqwepnsoVVUTn2XfXX2iGUqE,6817
|
|
271
256
|
webscout/search/bing_main.py,sha256=NAhM1rgbDOo5QEWLdNulGJ-9CVaSmYn3JhM3Jj7AZ58,2008
|
|
272
257
|
webscout/search/duckduckgo_main.py,sha256=LL3ROo9iJS7S791JTfmN3-0zxnKAoTYFjCKDDCiRjOU,3531
|
|
273
|
-
webscout/search/http_client.py,sha256=
|
|
258
|
+
webscout/search/http_client.py,sha256=HOUuC1iE1kvnR-NJYNWSNSYBKt8lAX6AGacKOmCHI7k,5114
|
|
274
259
|
webscout/search/results.py,sha256=HM8Cf6DW8ET2yqbb3piaTa07ciox4f917pvKZli2EgU,3301
|
|
260
|
+
webscout/search/yahoo_main.py,sha256=RW_Zm_-5kxAfAShMwwS2eRTAX_Fzp3fH6uf2OmK2sHE,2798
|
|
275
261
|
webscout/search/yep_main.py,sha256=SNh4Wu8cnMA21xeC13ZWK0ConY_dfAMcpnfedYdZRJE,1933
|
|
276
262
|
webscout/search/engines/__init__.py,sha256=TzO5GqdlhquqOW9o-QFVuXdrnX99TEsJlcTNtuhA8VU,1615
|
|
277
263
|
webscout/search/engines/brave.py,sha256=iO2KMFARt8QMZmbL2BHV5HZmAiFTFmOMAUkpr4ridcA,1337
|
|
278
264
|
webscout/search/engines/mojeek.py,sha256=i86JB6n2lPaRMaYSqIj2EOo4KHnJICWJK-plRj-oudc,1097
|
|
279
265
|
webscout/search/engines/wikipedia.py,sha256=tM4OI7UKFtRBcQqwgcm0y_uNqn8JVLKxVzTdixlZ7bU,1769
|
|
280
|
-
webscout/search/engines/yahoo.py,sha256=69cxr7X9xpD2cUzI0TbD_ZsjSuUrcFfHiEvZDGnSztk,2018
|
|
281
|
-
webscout/search/engines/yahoo_news.py,sha256=iiiy0Z8ZGruU8SvkW5bsM_BOpUFo6epWyFTG08ufSNs,1956
|
|
282
266
|
webscout/search/engines/yandex.py,sha256=hjWn4I-ZYaKkLtX6816d2sxmBDM4O9zCHzjnf6byfio,1190
|
|
283
267
|
webscout/search/engines/bing/__init__.py,sha256=bhKvLliFzwEbHqjMISkC6L-VvBNyi0_PhgVaV-Jdw98,26
|
|
284
268
|
webscout/search/engines/bing/base.py,sha256=dRPtSmrPlmfPkfkYWyVrDGSM3btLP7fB48gNPCAo8JU,915
|
|
285
|
-
webscout/search/engines/bing/images.py,sha256
|
|
286
|
-
webscout/search/engines/bing/news.py,sha256=
|
|
269
|
+
webscout/search/engines/bing/images.py,sha256=wXEF2H-BmKjCOE4J0LnbEHbHaF1o5nPKt2M5FAIHtto,3365
|
|
270
|
+
webscout/search/engines/bing/news.py,sha256=N8DhSnHCaftAW1oftp8LR7uIWyIV2XnlxG5u2xKeoEI,2852
|
|
287
271
|
webscout/search/engines/bing/suggestions.py,sha256=U7v0hjthChZ8D6JMNYw9nOa5NsCqo4GsUfFT3CQP4Uk,1042
|
|
288
|
-
webscout/search/engines/bing/text.py,sha256=
|
|
272
|
+
webscout/search/engines/bing/text.py,sha256=Op936jpQMd_Jr4CrhlJeEtZZq1-tIUfbI2RUmiCiF1U,3994
|
|
289
273
|
webscout/search/engines/duckduckgo/__init__.py,sha256=IWa20CNW1IIyi86cXjuyqhm8famhUFUPH7Aiuly0bU4,685
|
|
290
274
|
webscout/search/engines/duckduckgo/answers.py,sha256=amdVAZujdeokzQm0XsQ0187hdNc44J14XCAVDzvSebM,2432
|
|
291
275
|
webscout/search/engines/duckduckgo/base.py,sha256=1GzmQhWjHMPc_U57Cyd1YuM303CtrnH0UIy7yQx-MHg,6387
|
|
@@ -297,11 +281,32 @@ webscout/search/engines/duckduckgo/text.py,sha256=yY39dnCN7_0WlFNqqYvHVqfUBd-4Xz
|
|
|
297
281
|
webscout/search/engines/duckduckgo/translate.py,sha256=J3QVBkJsqw-yZD7Arx_bNFN-jNcj1i26VxnGNB0zk_g,1379
|
|
298
282
|
webscout/search/engines/duckduckgo/videos.py,sha256=K6VRDC0EcNDvdMbx7rIRrb8mgKaJuUl_U5GfPxStbT4,2503
|
|
299
283
|
webscout/search/engines/duckduckgo/weather.py,sha256=iYwKkaT8VL3pVp91mDX5CpRgRcF7VZy8KhXeCh9J96Q,3401
|
|
284
|
+
webscout/search/engines/yahoo/__init__.py,sha256=v3QcSUqotOxFP6KWWHrUtewrI0vHyiq5lmKQPnYDhhI,1093
|
|
285
|
+
webscout/search/engines/yahoo/answers.py,sha256=QT_NfK2yhn-2iWagXd_BK1Y93hQkwjEQ_RDnSxA-3iQ,390
|
|
286
|
+
webscout/search/engines/yahoo/base.py,sha256=Kf-xJmZ1vSL8_qGKv3eoEe_LFv4dogmCZEHjJFI7fBE,1061
|
|
287
|
+
webscout/search/engines/yahoo/images.py,sha256=Whvtw83CK3o9dNJvO_K0F0qYRqZrRc9lyXX_A0iKUfc,9928
|
|
288
|
+
webscout/search/engines/yahoo/maps.py,sha256=4zQXCEPYMZ4BxfL3J_OaiIWGulu5lVbI24SGTGsrnsY,373
|
|
289
|
+
webscout/search/engines/yahoo/news.py,sha256=8M8hQ6KJ8DLf-DryE8PiuE-Nw_lwwxN0R5eGPVGgOLw,7443
|
|
290
|
+
webscout/search/engines/yahoo/suggestions.py,sha256=pG8i9F9TG1RFyG2eEUQUsnmOhsfCyVHlXadMwZln2WY,3863
|
|
291
|
+
webscout/search/engines/yahoo/text.py,sha256=ftd62I9LAdkspSAym6t5wwxdGmFhROpLUY51shaIv9U,8286
|
|
292
|
+
webscout/search/engines/yahoo/translate.py,sha256=dGfun-lW4mW6pkVV4smSWt6SWb-0HoKVTBto_Bor_og,382
|
|
293
|
+
webscout/search/engines/yahoo/videos.py,sha256=0SxVv5RIKIrwp0WSfs6CY7EAzJMHYNGWLTCTAhYAxoQ,9083
|
|
294
|
+
webscout/search/engines/yahoo/weather.py,sha256=q4kSB-D9XycBAMROrS_d1yrcX_eYYKVznjvv0AG0awQ,9172
|
|
300
295
|
webscout/search/engines/yep/__init__.py,sha256=2LCKP-5DUxE_iFaaBAbviD6fqAeKvKojn1G7nntLxjc,266
|
|
301
296
|
webscout/search/engines/yep/base.py,sha256=05PkYCx5_ltgwbn-RhUAx6QSq2IcnWPjIhqXNaZE_eM,828
|
|
302
297
|
webscout/search/engines/yep/images.py,sha256=vT4Tn1C-3UGH69DgyxVxrJLZwvWZPXs3SPXHjbgtzvk,3228
|
|
303
298
|
webscout/search/engines/yep/suggestions.py,sha256=vv_upKlhFTHotNGDluMgKLxJ23Fm0MHYwfWPVS6rkZY,1085
|
|
304
299
|
webscout/search/engines/yep/text.py,sha256=OpSJFW0sos99g6HYcUI-RySfi2ryj61RTF8FZkkyhAQ,3790
|
|
300
|
+
webscout/server/__init__.py,sha256=lXm3AO5GPe6-_CzZ5RxiG5X9AmSAXDUEjuCTnNKPerM,1293
|
|
301
|
+
webscout/server/config.py,sha256=05yQfddXNnjC8TmLV5ny57AkljJkeHA46HzbhFXlT5A,3086
|
|
302
|
+
webscout/server/exceptions.py,sha256=FGqNLQmjv2i3Jk_P3csJzT4qkmVdBMdH7vFkM37Xa3Y,2048
|
|
303
|
+
webscout/server/providers.py,sha256=gE0zKl8gwCD2P0e16y6YnbhmBM1qut0wKwAk5jmt8LI,11646
|
|
304
|
+
webscout/server/request_models.py,sha256=hgo0AZ5CknEWCmZ4KBMs8T0xjmtlecbk645yU622Ujs,5804
|
|
305
|
+
webscout/server/request_processing.py,sha256=9VkOB4g6OlWw9k6AEGZdeQNSHr6RCSJhr5N0fxe7lYk,16204
|
|
306
|
+
webscout/server/routes.py,sha256=vgkHlowNjX7PQx4Yhm89JwtL7BdGv_DxuFZLkbmij4A,22566
|
|
307
|
+
webscout/server/schemas.py,sha256=_FWsWwibXY4TzL4mhsL_-SyAwhJYeAcyRk00NzJZYlM,720
|
|
308
|
+
webscout/server/server.py,sha256=w1si2jVGwNsgrnUKp8CMRdRFj0tzk1ku1KBpRr1kXt4,12095
|
|
309
|
+
webscout/server/simple_logger.py,sha256=nw5GDuuYQ51PPWI2mHA8uBiFa2hqlCLu-nEBn2q9H78,2340
|
|
305
310
|
webscout/swiftcli/Readme.md,sha256=ifqIIM1455tOGXqf_jQvT_toeIugpVF6lzrZiQjkkq4,7295
|
|
306
311
|
webscout/swiftcli/__init__.py,sha256=goKgkz5USas833EhzpepEDB8b4uQBCunma9gLtGIRt4,1769
|
|
307
312
|
webscout/swiftcli/exceptions.py,sha256=gjcpH7H-CO-pWU94AJE04tr02_BUJxmorhqu5VJ9AMo,508
|
|
@@ -319,14 +324,14 @@ webscout/swiftcli/plugins/manager.py,sha256=UlSk8j_pA38hsOIUR_G12CrB4OZ_7mtkTSG-
|
|
|
319
324
|
webscout/swiftcli/utils/__init__.py,sha256=pF_Iva6sYD__gPFOjQjJ0Tpj2XYlkqL297VvMjvxauE,1055
|
|
320
325
|
webscout/swiftcli/utils/formatting.py,sha256=5t7IlbMbsj2VvF42ehC6Zk_i4CVbIVemKfpJbcimXiw,5361
|
|
321
326
|
webscout/swiftcli/utils/parsing.py,sha256=1jyVr914h-eNjN3YSnBOrxFjBwHZiq_FLNKuVfJinp4,7026
|
|
322
|
-
webscout/zeroart/README.md,sha256=
|
|
323
|
-
webscout/zeroart/__init__.py,sha256=
|
|
327
|
+
webscout/zeroart/README.md,sha256=BZ3OI9KFzwxVZgAix5mmiTETYKOdWPq_Ub6Ckdx6j8E,2425
|
|
328
|
+
webscout/zeroart/__init__.py,sha256=Cy9AUtXnOaFBQjNvCpN19IXJo7Lg15VTaNcTBxOTFek,6400
|
|
324
329
|
webscout/zeroart/base.py,sha256=I-xhDEfArBb6q7hiF5oPoyXeu2hzL6orp7uWgS_YtG8,2299
|
|
325
|
-
webscout/zeroart/effects.py,sha256=
|
|
326
|
-
webscout/zeroart/fonts.py,sha256=
|
|
327
|
-
webscout-2025.10.
|
|
328
|
-
webscout-2025.10.
|
|
329
|
-
webscout-2025.10.
|
|
330
|
-
webscout-2025.10.
|
|
331
|
-
webscout-2025.10.
|
|
332
|
-
webscout-2025.10.
|
|
330
|
+
webscout/zeroart/effects.py,sha256=XUNZY1-wMPd6GNL3glFXtWaF9wDis_z55qTyCdnzHDo,5063
|
|
331
|
+
webscout/zeroart/fonts.py,sha256=S7qDhUmDXl1makMreZl_eVW_7-sqVQiGn-kQKl0Hg_A,51006
|
|
332
|
+
webscout-2025.10.17.dist-info/licenses/LICENSE.md,sha256=hyfFlVn7pWcrvuvs-piB8k4J8DlXdOsYje9RyPxc6Ik,7543
|
|
333
|
+
webscout-2025.10.17.dist-info/METADATA,sha256=-12NEKcAbsCMUnFV4pl40tKrXhXDW0skcWCfCA1vhG8,21660
|
|
334
|
+
webscout-2025.10.17.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
335
|
+
webscout-2025.10.17.dist-info/entry_points.txt,sha256=4xAgKHWwNhAvJyShLCFs_IU8Reb8zR3wqf8egrsDr8g,118
|
|
336
|
+
webscout-2025.10.17.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
|
|
337
|
+
webscout-2025.10.17.dist-info/RECORD,,
|
webscout/Extra/weather.md
DELETED
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
<h1>☀️ Webscout Weather Toolkit</h1>
|
|
3
|
-
<p><strong>Comprehensive weather data retrieval and visualization tools</strong></p>
|
|
4
|
-
|
|
5
|
-
<!-- Badges -->
|
|
6
|
-
<p>
|
|
7
|
-
<a href="#-installation"><img src="https://img.shields.io/badge/Easy-Installation-success?style=flat-square" alt="Easy Installation"></a>
|
|
8
|
-
<a href="#-current-weather-data"><img src="https://img.shields.io/badge/Real--time-Data-blue?style=flat-square" alt="Real-time Data"></a>
|
|
9
|
-
<a href="#-ascii-art-weather"><img src="https://img.shields.io/badge/ASCII-Visualization-orange?style=flat-square" alt="ASCII Visualization"></a>
|
|
10
|
-
</p>
|
|
11
|
-
</div>
|
|
12
|
-
|
|
13
|
-
> [!NOTE]
|
|
14
|
-
> Webscout's Weather Toolkit provides powerful tools to retrieve and display weather information in various formats, including structured data and ASCII art visualization.
|
|
15
|
-
|
|
16
|
-
## 📋 Table of Contents
|
|
17
|
-
|
|
18
|
-
- [🚀 Installation](#-installation)
|
|
19
|
-
- [🌡️ Current Weather Data](#-current-weather-data)
|
|
20
|
-
- [🔮 Weather Forecast](#-weather-forecast)
|
|
21
|
-
- [🎨 ASCII Art Weather](#-ascii-art-weather)
|
|
22
|
-
- [📊 Data Structure](#-data-structure)
|
|
23
|
-
- [⚙️ Advanced Usage](#-advanced-usage)
|
|
24
|
-
|
|
25
|
-
## 🚀 Installation
|
|
26
|
-
|
|
27
|
-
The Weather Toolkit is included in the Webscout package. Install or update Webscout to get access:
|
|
28
|
-
|
|
29
|
-
```bash
|
|
30
|
-
pip install -U webscout
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## 🌡️ Current Weather Data
|
|
34
|
-
|
|
35
|
-
Retrieve structured current weather information for any location worldwide.
|
|
36
|
-
|
|
37
|
-
```python
|
|
38
|
-
from webscout.Extra import weather
|
|
39
|
-
|
|
40
|
-
# Get weather for a specific location
|
|
41
|
-
forecast = weather.get("London")
|
|
42
|
-
|
|
43
|
-
# Access current conditions
|
|
44
|
-
print(f"Current weather: {forecast.summary}")
|
|
45
|
-
|
|
46
|
-
# Access temperature details
|
|
47
|
-
if forecast.current_condition:
|
|
48
|
-
print(f"Temperature: {forecast.current_condition.temp_c}°C / {forecast.current_condition.temp_f}°F")
|
|
49
|
-
print(f"Feels like: {forecast.current_condition.feels_like_c}°C")
|
|
50
|
-
print(f"Conditions: {forecast.current_condition.weather_desc}")
|
|
51
|
-
print(f"Wind: {forecast.current_condition.wind_speed_kmph} km/h from {forecast.current_condition.wind_direction}")
|
|
52
|
-
print(f"Humidity: {forecast.current_condition.humidity}%")
|
|
53
|
-
print(f"Visibility: {forecast.current_condition.visibility} km")
|
|
54
|
-
print(f"Pressure: {forecast.current_condition.pressure} mb")
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
## 🔮 Weather Forecast
|
|
58
|
-
|
|
59
|
-
Access detailed forecast information for today and upcoming days.
|
|
60
|
-
|
|
61
|
-
```python
|
|
62
|
-
from webscout.Extra import weather
|
|
63
|
-
|
|
64
|
-
forecast = weather.get("Tokyo")
|
|
65
|
-
|
|
66
|
-
# Today's forecast
|
|
67
|
-
if forecast.today:
|
|
68
|
-
print(f"Today ({forecast.today.date_formatted}):")
|
|
69
|
-
print(f" Temperature range: {forecast.today.min_temp_c}°C - {forecast.today.max_temp_c}°C")
|
|
70
|
-
print(f" Sunrise: {forecast.today.sunrise}, Sunset: {forecast.today.sunset}")
|
|
71
|
-
|
|
72
|
-
# Access hourly forecasts
|
|
73
|
-
if forecast.today.hourly and len(forecast.today.hourly) > 4:
|
|
74
|
-
noon = forecast.today.hourly[4] # Noon (12:00) is usually index 4
|
|
75
|
-
print(f" Noon conditions: {noon.weather_desc}")
|
|
76
|
-
print(f" Chance of rain: {noon.chance_of_rain}%")
|
|
77
|
-
print(f" Humidity: {noon.humidity}%")
|
|
78
|
-
print(f" UV Index: {noon.uv_index}")
|
|
79
|
-
|
|
80
|
-
# Tomorrow's forecast
|
|
81
|
-
if forecast.tomorrow:
|
|
82
|
-
print(f"\nTomorrow ({forecast.tomorrow.date_formatted}):")
|
|
83
|
-
print(f" Temperature range: {forecast.tomorrow.min_temp_c}°C - {forecast.tomorrow.max_temp_c}°C")
|
|
84
|
-
print(f" Weather: {forecast.tomorrow.weather_desc}")
|
|
85
|
-
print(f" Sunrise: {forecast.tomorrow.sunrise}, Sunset: {forecast.tomorrow.sunset}")
|
|
86
|
-
|
|
87
|
-
# Extended forecast (next 3 days)
|
|
88
|
-
if forecast.days and len(forecast.days) > 2:
|
|
89
|
-
print("\nExtended Forecast:")
|
|
90
|
-
for day in forecast.days[2:5]: # Days 3-5
|
|
91
|
-
print(f" {day.date_formatted}: {day.min_temp_c}°C - {day.max_temp_c}°C, {day.weather_desc}")
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## 🎨 ASCII Art Weather
|
|
95
|
-
|
|
96
|
-
Retrieve weather information as visually appealing ASCII art.
|
|
97
|
-
|
|
98
|
-
```python
|
|
99
|
-
from webscout.Extra import weather_ascii
|
|
100
|
-
|
|
101
|
-
# Get ASCII art weather
|
|
102
|
-
result = weather_ascii.get("Paris")
|
|
103
|
-
|
|
104
|
-
# Display the ASCII art weather
|
|
105
|
-
print(result.content)
|
|
106
|
-
|
|
107
|
-
# Get ASCII art with temperature in Fahrenheit
|
|
108
|
-
result_f = weather_ascii.get("New York", units="imperial")
|
|
109
|
-
print(result_f.content)
|
|
110
|
-
|
|
111
|
-
# Get ASCII art with a specific number of forecast days
|
|
112
|
-
result_days = weather_ascii.get("Berlin", days=3)
|
|
113
|
-
print(result_days.content)
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
Example output:
|
|
117
|
-
```
|
|
118
|
-
Weather for Paris, France
|
|
119
|
-
|
|
120
|
-
\ / Clear
|
|
121
|
-
.-. +20°C
|
|
122
|
-
― ( ) ― ↗ 11 km/h
|
|
123
|
-
`-' 10 km
|
|
124
|
-
/ \ 0.0 mm
|
|
125
|
-
┌─────────────┐
|
|
126
|
-
┌───────────────────────┤ Wed 14 Apr ├───────────────────────┐
|
|
127
|
-
│ Morning └──────┬──────┘ Evening Night │
|
|
128
|
-
├──────────────────────────────┼──────────────────────────────┤
|
|
129
|
-
│ Cloudy │ Clear │
|
|
130
|
-
│ .--. +20..+22 °C │ \ / +15 °C │
|
|
131
|
-
│ .-( ). ↗ 11-13 km/h │ .-. ↗ 7-9 km/h │
|
|
132
|
-
│ (___.__)__) 10 km │ ― ( ) ― 10 km │
|
|
133
|
-
│ 0.0 mm | 0% │ `-' 0.0 mm | 0% │
|
|
134
|
-
└──────────────────────────────┴──────────────────────────────┘
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
## 📊 Data Structure
|
|
138
|
-
|
|
139
|
-
The Weather Toolkit returns structured data objects with the following key components:
|
|
140
|
-
|
|
141
|
-
<details>
|
|
142
|
-
<summary><strong>Forecast Object Structure</strong></summary>
|
|
143
|
-
|
|
144
|
-
```python
|
|
145
|
-
forecast = weather.get("London")
|
|
146
|
-
|
|
147
|
-
# Main forecast object attributes
|
|
148
|
-
forecast.location # Location information (city, country, etc.)
|
|
149
|
-
forecast.summary # Brief summary of current weather
|
|
150
|
-
forecast.current_condition # Current weather conditions
|
|
151
|
-
forecast.today # Today's forecast
|
|
152
|
-
forecast.tomorrow # Tomorrow's forecast
|
|
153
|
-
forecast.days # List of daily forecasts (including today and tomorrow)
|
|
154
|
-
|
|
155
|
-
# Current condition attributes
|
|
156
|
-
current = forecast.current_condition
|
|
157
|
-
current.temp_c # Temperature in Celsius
|
|
158
|
-
current.temp_f # Temperature in Fahrenheit
|
|
159
|
-
current.feels_like_c # "Feels like" temperature in Celsius
|
|
160
|
-
current.feels_like_f # "Feels like" temperature in Fahrenheit
|
|
161
|
-
current.wind_speed_kmph # Wind speed in km/h
|
|
162
|
-
current.wind_speed_mph # Wind speed in mph
|
|
163
|
-
current.wind_direction # Wind direction (e.g., "NW")
|
|
164
|
-
current.humidity # Humidity percentage
|
|
165
|
-
current.pressure # Atmospheric pressure in millibars
|
|
166
|
-
current.visibility # Visibility in kilometers
|
|
167
|
-
current.weather_desc # Weather description (e.g., "Partly cloudy")
|
|
168
|
-
current.weather_code # Weather code for icon mapping
|
|
169
|
-
|
|
170
|
-
# Daily forecast attributes
|
|
171
|
-
day = forecast.today # or any day from forecast.days
|
|
172
|
-
day.date # Date (YYYY-MM-DD)
|
|
173
|
-
day.date_formatted # Formatted date (e.g., "Wed 14 Apr")
|
|
174
|
-
day.max_temp_c # Maximum temperature in Celsius
|
|
175
|
-
day.min_temp_c # Minimum temperature in Celsius
|
|
176
|
-
day.max_temp_f # Maximum temperature in Fahrenheit
|
|
177
|
-
day.min_temp_f # Minimum temperature in Fahrenheit
|
|
178
|
-
day.sunrise # Sunrise time
|
|
179
|
-
day.sunset # Sunset time
|
|
180
|
-
day.weather_desc # Weather description
|
|
181
|
-
day.weather_code # Weather code
|
|
182
|
-
day.hourly # List of hourly forecasts for this day
|
|
183
|
-
```
|
|
184
|
-
</details>
|
|
185
|
-
|
|
186
|
-
<details>
|
|
187
|
-
<summary><strong>ASCII Weather Object Structure</strong></summary>
|
|
188
|
-
|
|
189
|
-
```python
|
|
190
|
-
result = weather_ascii.get("Paris")
|
|
191
|
-
|
|
192
|
-
# ASCII result attributes
|
|
193
|
-
result.content # The full ASCII art weather display
|
|
194
|
-
result.location # Location information
|
|
195
|
-
result.temperature # Current temperature
|
|
196
|
-
result.conditions # Current weather conditions
|
|
197
|
-
result.forecast_days # Number of forecast days included
|
|
198
|
-
```
|
|
199
|
-
</details>
|
|
200
|
-
|
|
201
|
-
## ⚙️ Advanced Usage
|
|
202
|
-
|
|
203
|
-
<details>
|
|
204
|
-
<summary><strong>Custom Location Formats</strong></summary>
|
|
205
|
-
|
|
206
|
-
The Weather Toolkit supports various location formats:
|
|
207
|
-
|
|
208
|
-
```python
|
|
209
|
-
# City name
|
|
210
|
-
weather.get("London")
|
|
211
|
-
|
|
212
|
-
# City and country
|
|
213
|
-
weather.get("Paris, France")
|
|
214
|
-
|
|
215
|
-
# ZIP/Postal code (US)
|
|
216
|
-
weather.get("10001") # New York, NY
|
|
217
|
-
|
|
218
|
-
# Latitude and Longitude
|
|
219
|
-
weather.get("40.7128,-74.0060") # New York coordinates
|
|
220
|
-
```
|
|
221
|
-
</details>
|
|
222
|
-
|
|
223
|
-
<details>
|
|
224
|
-
<summary><strong>Temperature Units</strong></summary>
|
|
225
|
-
|
|
226
|
-
Control temperature units in ASCII weather display:
|
|
227
|
-
|
|
228
|
-
```python
|
|
229
|
-
# Default (metric - Celsius)
|
|
230
|
-
weather_ascii.get("Tokyo")
|
|
231
|
-
|
|
232
|
-
# Imperial (Fahrenheit)
|
|
233
|
-
weather_ascii.get("New York", units="imperial")
|
|
234
|
-
|
|
235
|
-
# Metric (Celsius)
|
|
236
|
-
weather_ascii.get("Berlin", units="metric")
|
|
237
|
-
```
|
|
238
|
-
</details>
|
|
239
|
-
|
|
240
|
-
<details>
|
|
241
|
-
<summary><strong>Forecast Days</strong></summary>
|
|
242
|
-
|
|
243
|
-
Control the number of forecast days in ASCII weather display:
|
|
244
|
-
|
|
245
|
-
```python
|
|
246
|
-
# Default (1 day)
|
|
247
|
-
weather_ascii.get("Sydney")
|
|
248
|
-
|
|
249
|
-
# 3-day forecast
|
|
250
|
-
weather_ascii.get("Rio de Janeiro", days=3)
|
|
251
|
-
|
|
252
|
-
# 5-day forecast (maximum)
|
|
253
|
-
weather_ascii.get("Moscow", days=5)
|
|
254
|
-
```
|
|
255
|
-
</details>
|
|
256
|
-
|
|
257
|
-
<details>
|
|
258
|
-
<summary><strong>Error Handling</strong></summary>
|
|
259
|
-
|
|
260
|
-
Implement proper error handling for robust applications:
|
|
261
|
-
|
|
262
|
-
```python
|
|
263
|
-
from webscout.Extra import weather
|
|
264
|
-
from webscout.exceptions import APIError
|
|
265
|
-
|
|
266
|
-
try:
|
|
267
|
-
forecast = weather.get("London")
|
|
268
|
-
print(f"Current temperature: {forecast.current_condition.temp_c}°C")
|
|
269
|
-
except APIError as e:
|
|
270
|
-
print(f"API Error: {e}")
|
|
271
|
-
except Exception as e:
|
|
272
|
-
print(f"An error occurred: {e}")
|
|
273
|
-
```
|
|
274
|
-
</details>
|
|
275
|
-
|
|
276
|
-
<div align="center">
|
|
277
|
-
<p>
|
|
278
|
-
<a href="https://github.com/OEvortex/Webscout"><img alt="GitHub Repository" src="https://img.shields.io/badge/GitHub-Repository-181717?style=for-the-badge&logo=github&logoColor=white"></a>
|
|
279
|
-
<a href="https://t.me/PyscoutAI"><img alt="Telegram Group" src="https://img.shields.io/badge/Telegram%20Group-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
|
|
280
|
-
</p>
|
|
281
|
-
</div>
|