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.

Files changed (63) hide show
  1. webscout/Extra/YTToolkit/README.md +1 -1
  2. webscout/Extra/tempmail/README.md +3 -3
  3. webscout/Provider/ClaudeOnline.py +350 -0
  4. webscout/Provider/OPENAI/README.md +1 -1
  5. webscout/Provider/TTI/bing.py +4 -4
  6. webscout/Provider/TTI/claudeonline.py +315 -0
  7. webscout/__init__.py +1 -1
  8. webscout/client.py +4 -5
  9. webscout/litprinter/__init__.py +0 -42
  10. webscout/scout/README.md +59 -8
  11. webscout/scout/core/scout.py +62 -0
  12. webscout/scout/element.py +251 -45
  13. webscout/search/__init__.py +3 -4
  14. webscout/search/engines/bing/images.py +5 -2
  15. webscout/search/engines/bing/news.py +6 -4
  16. webscout/search/engines/bing/text.py +5 -2
  17. webscout/search/engines/yahoo/__init__.py +41 -0
  18. webscout/search/engines/yahoo/answers.py +16 -0
  19. webscout/search/engines/yahoo/base.py +34 -0
  20. webscout/search/engines/yahoo/images.py +324 -0
  21. webscout/search/engines/yahoo/maps.py +16 -0
  22. webscout/search/engines/yahoo/news.py +258 -0
  23. webscout/search/engines/yahoo/suggestions.py +140 -0
  24. webscout/search/engines/yahoo/text.py +273 -0
  25. webscout/search/engines/yahoo/translate.py +16 -0
  26. webscout/search/engines/yahoo/videos.py +302 -0
  27. webscout/search/engines/yahoo/weather.py +220 -0
  28. webscout/search/http_client.py +1 -1
  29. webscout/search/yahoo_main.py +54 -0
  30. webscout/{auth → server}/__init__.py +2 -23
  31. webscout/server/config.py +84 -0
  32. webscout/{auth → server}/request_processing.py +3 -28
  33. webscout/{auth → server}/routes.py +6 -148
  34. webscout/server/schemas.py +23 -0
  35. webscout/{auth → server}/server.py +11 -43
  36. webscout/server/simple_logger.py +84 -0
  37. webscout/version.py +1 -1
  38. webscout/version.py.bak +1 -1
  39. webscout/zeroart/README.md +17 -9
  40. webscout/zeroart/__init__.py +78 -6
  41. webscout/zeroart/effects.py +51 -1
  42. webscout/zeroart/fonts.py +559 -1
  43. {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/METADATA +11 -54
  44. {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/RECORD +51 -46
  45. {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/entry_points.txt +1 -1
  46. webscout/Extra/weather.md +0 -281
  47. webscout/auth/api_key_manager.py +0 -189
  48. webscout/auth/auth_system.py +0 -85
  49. webscout/auth/config.py +0 -175
  50. webscout/auth/database.py +0 -755
  51. webscout/auth/middleware.py +0 -248
  52. webscout/auth/models.py +0 -185
  53. webscout/auth/rate_limiter.py +0 -254
  54. webscout/auth/schemas.py +0 -103
  55. webscout/auth/simple_logger.py +0 -236
  56. webscout/search/engines/yahoo.py +0 -65
  57. webscout/search/engines/yahoo_news.py +0 -64
  58. /webscout/{auth → server}/exceptions.py +0 -0
  59. /webscout/{auth → server}/providers.py +0 -0
  60. /webscout/{auth → server}/request_models.py +0 -0
  61. {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/WHEEL +0 -0
  62. {webscout-2025.10.15.dist-info → webscout-2025.10.17.dist-info}/licenses/LICENSE.md +0 -0
  63. {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.15
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/OEvortex/Webscout">
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/OEvortex/Webscout"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
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 [Inferno](https://github.com/HelpingAI/inferno), an OpenAI-compatible server (now a standalone package)
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
- - **[Local LLMs with Inferno](https://github.com/HelpingAI/inferno):** Run local models with an OpenAI-compatible server (now available as a standalone package)
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](webscout/Extra/weather.md):** Retrieve detailed weather information for any location
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](webscout/scout/README.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
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/OEvortex/Webscout.git
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 oevortex/webscout:latest
266
- docker run -it oevortex/webscout:latest
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=8BwXquDTrNOs_UVFUiSzvpcG8Mpp2x6b0jknLs830aA,740
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=HHnOL9I14uEJHCpGcyjlpZwna_DEJehHD5sqmti7sd8,5588
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=lFdrFaHswFMDr9VdMdSSpxeTuXjC5Z2DIrPJbWo9KtQ,51
18
- webscout/version.py.bak,sha256=mAYbMZvjx0FZh0om6ye0R7i_CmftBy0GpvRsRL0zcxY,41
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=G6eFyc_33DE4TSJyt84TC2LHqQ4w7W51DOOwJB-yabE,10919
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=NzGMOh6RjDL8Sey_0hUdnxI5NjvNW6vJFZrQ34aDx5o,20826
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=Rp-KDOPdMMNBB1pAU6K6x3AOcaWK3ENeG5TMfO85eJs,24136
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=kPCkKwi7XgOxtkgUFDukJhonISfLDK4f6KDPduEjoP0,10640
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=iBYLF0IapDD7piPbNsBHWshg0WQWyP4EvodEPrP3lwI,2452
254
- webscout/scout/README.md,sha256=wZmPsrlUwHy7IaWzd9v9c8ATwPf509JXWE9SGb4x_-w,12218
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=UVRt_2vZgfxmvVrjqMhaCNVzULbyWqTyIyhOznDVJ4k,19469
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=7Y8fDyuX5zgDmvvU5Ln95EG6pCHrpJpAeQEcWJCsNnY,23698
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=0XIql7nUSAOnpf0L---dM5GMPMTRhu1DeQO4jf_oGAQ,1007
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=mL5WaKrItu0hLzK-sTK99yKuAjw0iwBYs1w6911yWUU,5140
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=-kMQKeuu2VVZ6ykGKO4Y4VqcEaJA5jgXMgMl8hAqlvs,3323
286
- webscout/search/engines/bing/news.py,sha256=w3Yl2wn4ipw-bPfL0gV0RCklRLL-YVZ5c1_7c-UxoS0,2852
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=xbcDs7J8xIHDCiZG6wkYRjEMaUM59Xoj7_a6IM1HqMQ,3952
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=zSHLnjAT6zJqRSCQYTwt5aNcg7NrYDKqmEzVnSNr__Y,1970
323
- webscout/zeroart/__init__.py,sha256=Rg2jc6cfpmvKzmtIq3aNOKQH2I5d8GqLybtGNr1VQQY,3979
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=yxv6xRDxVU0FHhUdzamVv0eA_d8a8ckCDAitXQMhVZU,3245
326
- webscout/zeroart/fonts.py,sha256=FsuVQZL28Gi30NB5QPPjwUhC8sQt7vKJDMeu6km7N-I,37574
327
- webscout-2025.10.15.dist-info/licenses/LICENSE.md,sha256=hyfFlVn7pWcrvuvs-piB8k4J8DlXdOsYje9RyPxc6Ik,7543
328
- webscout-2025.10.15.dist-info/METADATA,sha256=FZnrkvKg2JWkjwo31hGs193LpJdgfRloBWH8uY6xXc0,23421
329
- webscout-2025.10.15.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
330
- webscout-2025.10.15.dist-info/entry_points.txt,sha256=WooZuMBei-kQl5qByoRMkc2cHsaDL1Jd2_tSYsNiUGg,116
331
- webscout-2025.10.15.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
332
- webscout-2025.10.15.dist-info/RECORD,,
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,,
@@ -1,4 +1,4 @@
1
1
  [console_scripts]
2
2
  WEBS = webscout.cli:main
3
3
  webscout = webscout.cli:main
4
- webscout-server = webscout.auth.server:main
4
+ webscout-server = webscout.server.server:main
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>