webscout 2025.10.14.1__tar.gz → 2025.10.16__tar.gz
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-2025.10.14.1/webscout.egg-info → webscout-2025.10.16}/PKG-INFO +15 -332
- {webscout-2025.10.14.1 → webscout-2025.10.16}/README.md +14 -329
- {webscout-2025.10.14.1 → webscout-2025.10.16}/changelog.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/pyproject.toml +2 -4
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/README.md +1 -1
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/README.md +3 -3
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/README.md +1 -1
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/bing.py +4 -4
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/__init__.py +1 -1
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/cli.py +0 -147
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/client.py +4 -5
- webscout-2025.10.16/webscout/litprinter/__init__.py +17 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/README.md +59 -8
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/core/scout.py +62 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/element.py +251 -45
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/__init__.py +5 -8
- webscout-2025.10.16/webscout/search/bing_main.py +42 -0
- webscout-2025.10.16/webscout/search/engines/bing/__init__.py +1 -0
- webscout-2025.10.16/webscout/search/engines/bing/base.py +33 -0
- webscout-2025.10.16/webscout/search/engines/bing/images.py +108 -0
- webscout-2025.10.16/webscout/search/engines/bing/news.py +91 -0
- webscout-2025.10.16/webscout/search/engines/bing/suggestions.py +34 -0
- webscout-2025.10.16/webscout/search/engines/bing/text.py +106 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/maps.py +13 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/__init__.py +41 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/answers.py +16 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/base.py +34 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/images.py +324 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/maps.py +16 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/news.py +258 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/suggestions.py +140 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/text.py +273 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/translate.py +16 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/videos.py +302 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/weather.py +220 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/http_client.py +1 -1
- webscout-2025.10.16/webscout/search/yahoo_main.py +54 -0
- {webscout-2025.10.14.1/webscout/auth → webscout-2025.10.16/webscout/server}/__init__.py +2 -23
- webscout-2025.10.16/webscout/server/config.py +84 -0
- {webscout-2025.10.14.1/webscout/auth → webscout-2025.10.16/webscout/server}/request_processing.py +3 -28
- {webscout-2025.10.14.1/webscout/auth → webscout-2025.10.16/webscout/server}/routes.py +14 -170
- webscout-2025.10.16/webscout/server/schemas.py +23 -0
- {webscout-2025.10.14.1/webscout/auth → webscout-2025.10.16/webscout/server}/server.py +11 -43
- webscout-2025.10.16/webscout/server/simple_logger.py +84 -0
- webscout-2025.10.16/webscout/version.py +2 -0
- webscout-2025.10.16/webscout/version.py.bak +2 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/zeroart/README.md +17 -9
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/zeroart/__init__.py +78 -6
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/zeroart/effects.py +51 -1
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/zeroart/fonts.py +559 -1
- {webscout-2025.10.14.1 → webscout-2025.10.16/webscout.egg-info}/PKG-INFO +15 -332
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout.egg-info/SOURCES.txt +58 -44
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout.egg-info/entry_points.txt +1 -1
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout.egg-info/requires.txt +0 -2
- webscout-2025.10.14.1/webscout/Bing_search.py +0 -417
- webscout-2025.10.14.1/webscout/DWEBS.py +0 -529
- webscout-2025.10.14.1/webscout/auth/api_key_manager.py +0 -189
- webscout-2025.10.14.1/webscout/auth/auth_system.py +0 -85
- webscout-2025.10.14.1/webscout/auth/config.py +0 -175
- webscout-2025.10.14.1/webscout/auth/database.py +0 -755
- webscout-2025.10.14.1/webscout/auth/middleware.py +0 -248
- webscout-2025.10.14.1/webscout/auth/models.py +0 -185
- webscout-2025.10.14.1/webscout/auth/rate_limiter.py +0 -254
- webscout-2025.10.14.1/webscout/auth/schemas.py +0 -103
- webscout-2025.10.14.1/webscout/auth/simple_logger.py +0 -236
- webscout-2025.10.14.1/webscout/litprinter/__init__.py +0 -59
- webscout-2025.10.14.1/webscout/search/engines/bing.py +0 -84
- webscout-2025.10.14.1/webscout/search/engines/bing_news.py +0 -52
- webscout-2025.10.14.1/webscout/search/engines/yahoo.py +0 -65
- webscout-2025.10.14.1/webscout/search/engines/yahoo_news.py +0 -64
- webscout-2025.10.14.1/webscout/version.py +0 -2
- webscout-2025.10.14.1/webscout/version.py.bak +0 -2
- {webscout-2025.10.14.1 → webscout-2025.10.16}/LEGAL_NOTICE.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/LICENSE.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/MANIFEST.in +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/setup.cfg +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/AIauto.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/AIbase.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/AIutel.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Bard.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/Act.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/GitToolkit/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/repository.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/user.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/YTdownloader.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/transcriber.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/channel.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/playlist.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/pool.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/video.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/autocoder/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/autocoder/autocoder.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/autocoder/autocoder_utiles.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/gguf.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/gguf.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/async_utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/cli.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/emailnator.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/mail_tm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/tempmail/temp_mail_io.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/weather.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/weather.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Extra/weather_ascii.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Litlogger/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Litlogger/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Litlogger/formats.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Litlogger/handlers.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Litlogger/levels.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Litlogger/logger.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/PERPLEXED_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/Perplexity.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/felo_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/genspark_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/hika_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/iask_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/monica_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/scira_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/stellar_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/AISEARCH/webpilotai_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Aitopia.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Andi.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Apriel.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/ChatGPTClone.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/ChatSandbox.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Cloudflare.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Cohere.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Deepinfra.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/ExaAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/ExaChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Flowith.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/GMI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Gemini.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/GeminiProxy.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/GithubChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Groq.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/HeckAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Jadve.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/K2Think.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Koboldai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/LambdaChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Nemotron.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Netwrck.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OLLAMA.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/Cloudflare.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/FalconH1.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/FreeGemini.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/GeminiProxy.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/K2Think.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/NEMOTRON.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/PI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/TogetherAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/TwoAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/ai4chat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatglm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatgpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatgptclone.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatsandbox.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/deepinfra.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/e2b.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/exaai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/exachat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/flowith.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/friendli.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/generate_api_key.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/gmi.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/groq.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/heckai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/llmchatco.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/netwrck.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/oivscode.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/opkfc.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/pydantic_imports.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/scirachat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/sonus.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/standardinput.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/textpollinations.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/toolbaz.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/typefully.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/venice.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/wisecat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/writecream.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/x0gpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OPENAI/yep.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/OpenGPT.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Openai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/PI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Perplexitylabs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/QwenLM.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/STT/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/STT/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/STT/elevenlabs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Sambanova.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/StandardInput.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/aiarta.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/gpt1image.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/imagen.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/infip.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/magicstudio.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/monochat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/piclumen.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/pixelmuse.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/pollinations.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/together.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTI/venice.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/deepgram.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/elevenlabs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/freetts.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/gesserit.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/murfai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/openai_fm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/parler.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/speechma.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/streamElements.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TTS/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TeachAnything.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TextPollinationsAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TogetherAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TwoAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/TypliAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/ChatHub.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/ChutesAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/GizAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/Marcus.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/Qodo.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/VercelAIGateway.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/XenAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/Youchat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/liner.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/liner_api_request.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/puterjs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/samurai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/test_lmarena.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/Venice.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/VercelAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/WiseCat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/WrDoChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/ai4chat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/akashgpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/cerebras.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/chatglm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/cleeai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/deepseek_assistant.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/elmo.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/geminiapi.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/granite.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/hermes.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/julius.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/learnfastai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/llama3mitril.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/llmchat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/llmchatco.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/meta.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/oivscode.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/scira_chat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/searchchat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/sonus.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/toolbaz.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/turboseek.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/typefully.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/x0gpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/Provider/yep.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/__main__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/conversation.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/exceptions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/litagent/Readme.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/litagent/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/litagent/agent.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/litagent/constants.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/models.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/optimizers.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/prompt_manager.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/sanitize.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/core/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/core/crawler.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/core/search_result.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/core/text_analyzer.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/core/text_utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/core/web_analyzer.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/parsers/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/parsers/html5lib_parser.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/parsers/html_parser.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/parsers/lxml_parser.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/scout/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/duckduckgo_main.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/brave.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/answers.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/images.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/news.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/suggestions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/text.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/translate.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/videos.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/weather.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/mojeek.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/wikipedia.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/yandex.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/yep/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/yep/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/yep/images.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/yep/suggestions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/engines/yep/text.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/results.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/search/yep_main.py +0 -0
- {webscout-2025.10.14.1/webscout/auth → webscout-2025.10.16/webscout/server}/exceptions.py +0 -0
- {webscout-2025.10.14.1/webscout/auth → webscout-2025.10.16/webscout/server}/providers.py +0 -0
- {webscout-2025.10.14.1/webscout/auth → webscout-2025.10.16/webscout/server}/request_models.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/Readme.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/core/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/core/cli.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/core/context.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/core/group.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/decorators/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/decorators/command.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/decorators/options.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/decorators/output.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/exceptions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/plugins/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/plugins/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/plugins/manager.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/utils/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/utils/formatting.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/swiftcli/utils/parsing.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/update_checker.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout/zeroart/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout.egg-info/dependency_links.txt +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.16}/webscout.egg-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.16
|
|
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
|
|
@@ -70,15 +70,13 @@ Requires-Dist: uvicorn[standard]; extra == "api"
|
|
|
70
70
|
Requires-Dist: pydantic; extra == "api"
|
|
71
71
|
Requires-Dist: python-multipart; extra == "api"
|
|
72
72
|
Requires-Dist: tiktoken; extra == "api"
|
|
73
|
-
Requires-Dist: motor; extra == "api"
|
|
74
73
|
Requires-Dist: jinja2; extra == "api"
|
|
75
|
-
Requires-Dist: supabase; extra == "api"
|
|
76
74
|
Requires-Dist: websockets>=11.0; extra == "api"
|
|
77
75
|
Requires-Dist: starlette; extra == "api"
|
|
78
76
|
Dynamic: license-file
|
|
79
77
|
|
|
80
78
|
<div align="center">
|
|
81
|
-
<a href="https://github.com/
|
|
79
|
+
<a href="https://github.com/pyscout/Webscout">
|
|
82
80
|
<img src="https://img.shields.io/badge/WebScout-Ultimate%20Toolkit-blue?style=for-the-badge&logo=python&logoColor=white" alt="WebScout Logo">
|
|
83
81
|
</a>
|
|
84
82
|
|
|
@@ -96,7 +94,7 @@ Dynamic: license-file
|
|
|
96
94
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout/month?style=flat-square" alt="Monthly Downloads"></a>
|
|
97
95
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout?style=flat-square" alt="Total Downloads"></a>
|
|
98
96
|
<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/
|
|
97
|
+
<a href="https://deepwiki.com/pyscout/Webscout"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
|
|
100
98
|
</p>
|
|
101
99
|
</div>
|
|
102
100
|
|
|
@@ -108,9 +106,7 @@ Dynamic: license-file
|
|
|
108
106
|
- [⚙️ Installation](#️-installation)
|
|
109
107
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
110
108
|
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
111
|
-
- [
|
|
112
|
-
- [🦆 DuckDuckGo Search](#-duckduckgo-search-with-webs-and-asyncwebs)
|
|
113
|
-
- [💻 WEBS API Reference](#-webs-api-reference)
|
|
109
|
+
- [🕸️ Scout: HTML Parser & Web Crawler](docs/scout.md)
|
|
114
110
|
- [🤖 AI Models and Voices](#-ai-models-and-voices)
|
|
115
111
|
- [💬 AI Chat Providers](#-ai-chat-providers)
|
|
116
112
|
- [👨💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
|
|
@@ -124,7 +120,7 @@ Dynamic: license-file
|
|
|
124
120
|
>
|
|
125
121
|
> - **Native Compatibility:** Webscout's own native API for maximum flexibility
|
|
126
122
|
> - **OpenAI Compatibility:** Use providers with OpenAI-compatible interfaces
|
|
127
|
-
> - **Local LLM Compatibility:** Run local models with
|
|
123
|
+
> - **Local LLM Compatibility:** Run local models with OpenAI-compatible servers
|
|
128
124
|
>
|
|
129
125
|
> 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.
|
|
130
126
|
|
|
@@ -151,11 +147,11 @@ Dynamic: license-file
|
|
|
151
147
|
<summary><b>Search & AI</b></summary>
|
|
152
148
|
<p>
|
|
153
149
|
|
|
154
|
-
- **Comprehensive Search:**
|
|
150
|
+
- **Comprehensive Search:** Access multiple search engines including DuckDuckGo, Yep, Bing, Brave, Yahoo, Yandex, Mojeek, and Wikipedia for diverse search results ([Search Documentation](docs/search.md))
|
|
155
151
|
- **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
|
|
156
152
|
- **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
|
|
157
153
|
- **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
|
|
158
|
-
- **
|
|
154
|
+
- **Local LLMs:** Run local models with OpenAI-compatible servers (see [Inferno documentation](docs/inferno.md))
|
|
159
155
|
- **[AI Search](webscout/Provider/AISEARCH/README.md):** AI-powered search engines with advanced capabilities
|
|
160
156
|
</p>
|
|
161
157
|
</details>
|
|
@@ -180,8 +176,7 @@ Dynamic: license-file
|
|
|
180
176
|
- **[LitPrinter](webscout/litprinter/Readme.md):** Styled console output with rich formatting and colors
|
|
181
177
|
- **[LitLogger](webscout/litlogger/README.md):** Simplified logging with customizable formats and color schemes
|
|
182
178
|
- **[LitAgent](webscout/litagent/Readme.md):** Modern user agent generator that keeps your requests undetectable
|
|
183
|
-
- **[Scout](
|
|
184
|
-
- **[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`)
|
|
179
|
+
- **[Scout](docs/scout.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
|
|
185
180
|
- **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
|
|
186
181
|
- **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
|
|
187
182
|
- **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
|
|
@@ -248,7 +243,7 @@ webscout-server
|
|
|
248
243
|
|
|
249
244
|
```bash
|
|
250
245
|
# Clone the repository
|
|
251
|
-
git clone https://github.com/
|
|
246
|
+
git clone https://github.com/pyscout/Webscout.git
|
|
252
247
|
cd Webscout
|
|
253
248
|
|
|
254
249
|
# Install in development mode with UV
|
|
@@ -265,8 +260,8 @@ uv pip install -e ".[dev,api]"
|
|
|
265
260
|
|
|
266
261
|
```bash
|
|
267
262
|
# Pull and run the Docker image
|
|
268
|
-
docker pull
|
|
269
|
-
docker run -it
|
|
263
|
+
docker pull pyscout/webscout:latest
|
|
264
|
+
docker run -it pyscout/webscout:latest
|
|
270
265
|
```
|
|
271
266
|
|
|
272
267
|
### 📱 Quick Start Commands
|
|
@@ -325,328 +320,15 @@ python -m webscout-server
|
|
|
325
320
|
<summary><b>🔍 Web Search Commands</b></summary>
|
|
326
321
|
<p>
|
|
327
322
|
|
|
328
|
-
|
|
329
|
-
| --------------------------------- | --------------------------- | ----------------------------------------- |
|
|
330
|
-
| `webscout text -k "query"` | Perform a text search | `webscout text -k "python programming"` |
|
|
331
|
-
| `webscout answers -k "query"` | Get instant answers | `webscout answers -k "what is AI"` |
|
|
332
|
-
| `webscout images -k "query"` | Search for images | `webscout images -k "nature photography"` |
|
|
333
|
-
| `webscout videos -k "query"` | Search for videos | `webscout videos -k "python tutorials"` |
|
|
334
|
-
| `webscout news -k "query"` | Search for news articles | `webscout news -k "technology trends"` |
|
|
335
|
-
| `webscout maps -k "query"` | Perform a maps search | `webscout maps -k "restaurants near me"` |
|
|
336
|
-
| `webscout translate -k "text"` | Translate text | `webscout translate -k "hello world"` |
|
|
337
|
-
| `webscout suggestions -k "query"` | Get search suggestions | `webscout suggestions -k "how to"` |
|
|
338
|
-
| `webscout weather -l "location"` | Get weather information | `webscout weather -l "New York"` |
|
|
339
|
-
| `webscout version` | Display the current version | `webscout version` |
|
|
340
|
-
|
|
341
|
-
**Google Search Commands:**
|
|
342
|
-
| Command | Description | Example |
|
|
343
|
-
|---------|-------------|---------|
|
|
344
|
-
| `webscout google_text -k "query"` | Google text search | `webscout google_text -k "machine learning"` |
|
|
345
|
-
| `webscout google_news -k "query"` | Google news search | `webscout google_news -k "AI breakthrough"` |
|
|
346
|
-
| `webscout google_suggestions -q "query"` | Google suggestions | `webscout google_suggestions -q "python"` |
|
|
347
|
-
|
|
348
|
-
**Yep Search Commands:**
|
|
349
|
-
| Command | Description | Example |
|
|
350
|
-
|---------|-------------|---------|
|
|
351
|
-
| `webscout yep_text -k "query"` | Yep text search | `webscout yep_text -k "web development"` |
|
|
352
|
-
| `webscout yep_images -k "query"` | Yep image search | `webscout yep_images -k "landscapes"` |
|
|
353
|
-
| `webscout yep_suggestions -q "query"` | Yep suggestions | `webscout yep_suggestions -q "javascript"` |
|
|
323
|
+
Webscout provides comprehensive CLI commands for all search engines. See the [Search Documentation](docs/search.md#command-line-interface) for detailed command reference.
|
|
354
324
|
|
|
355
325
|
</p>
|
|
356
326
|
</details>
|
|
357
327
|
|
|
358
|
-
<details open>
|
|
359
|
-
<summary><b>Inferno LLM Commands</b></summary>
|
|
360
|
-
<p>
|
|
361
|
-
|
|
362
|
-
Inferno is now a standalone package. Install it separately with:
|
|
363
|
-
|
|
364
|
-
```bash
|
|
365
|
-
pip install inferno-llm
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
After installation, you can use its CLI for managing and using local LLMs:
|
|
369
|
-
|
|
370
|
-
```bash
|
|
371
|
-
inferno --help
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
| Command | Description |
|
|
375
|
-
| ------------------------ | ----------------------------------------------- |
|
|
376
|
-
| `inferno pull <model>` | Download a model from Hugging Face |
|
|
377
|
-
| `inferno list` | List downloaded models |
|
|
378
|
-
| `inferno serve <model>` | Start a model server with OpenAI-compatible API |
|
|
379
|
-
| `inferno run <model>` | Chat with a model interactively |
|
|
380
|
-
| `inferno remove <model>` | Remove a downloaded model |
|
|
381
|
-
| `inferno version` | Show version information |
|
|
382
|
-
|
|
383
|
-
For more information, visit the [Inferno GitHub repository](https://github.com/HelpingAI/inferno) or [PyPI package page](https://pypi.org/project/inferno-llm/).
|
|
384
|
-
|
|
385
|
-
</p>
|
|
386
|
-
</details>
|
|
387
|
-
|
|
388
|
-
> [!NOTE]
|
|
389
|
-
> **Hardware requirements for running models with Inferno:**
|
|
390
|
-
>
|
|
391
|
-
> - Around 2 GB of RAM for 1B models
|
|
392
|
-
> - Around 4 GB of RAM for 3B models
|
|
393
|
-
> - At least 8 GB of RAM for 7B models
|
|
394
|
-
> - 16 GB of RAM for 13B models
|
|
395
|
-
> - 32 GB of RAM for 33B models
|
|
396
|
-
> - GPU acceleration is recommended for better performance
|
|
397
|
-
|
|
398
328
|
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).
|
|
399
329
|
|
|
400
330
|
<hr/>
|
|
401
331
|
|
|
402
|
-
## 🔍 Search Engines
|
|
403
|
-
|
|
404
|
-
Webscout provides multiple search engine interfaces for diverse search capabilities.
|
|
405
|
-
|
|
406
|
-
### YepSearch - Yep.com Interface
|
|
407
|
-
|
|
408
|
-
```python
|
|
409
|
-
from webscout import YepSearch
|
|
410
|
-
|
|
411
|
-
# Initialize YepSearch
|
|
412
|
-
yep = YepSearch(
|
|
413
|
-
timeout=20, # Optional: Set custom timeout
|
|
414
|
-
proxies=None, # Optional: Use proxies
|
|
415
|
-
verify=True # Optional: SSL verification
|
|
416
|
-
)
|
|
417
|
-
|
|
418
|
-
# Text Search
|
|
419
|
-
text_results = yep.text(
|
|
420
|
-
keywords="artificial intelligence",
|
|
421
|
-
region="all", # Optional: Region for results
|
|
422
|
-
safesearch="moderate", # Optional: "on", "moderate", "off"
|
|
423
|
-
max_results=10 # Optional: Limit number of results
|
|
424
|
-
)
|
|
425
|
-
|
|
426
|
-
# Image Search
|
|
427
|
-
image_results = yep.images(
|
|
428
|
-
keywords="nature photography",
|
|
429
|
-
region="all",
|
|
430
|
-
safesearch="moderate",
|
|
431
|
-
max_results=10
|
|
432
|
-
)
|
|
433
|
-
|
|
434
|
-
# Get search suggestions
|
|
435
|
-
suggestions = yep.suggestions("hist")
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
### GoogleSearch - Google Interface
|
|
439
|
-
|
|
440
|
-
```python
|
|
441
|
-
from webscout import GoogleSearch
|
|
442
|
-
|
|
443
|
-
# Initialize GoogleSearch
|
|
444
|
-
google = GoogleSearch(
|
|
445
|
-
timeout=10, # Optional: Set custom timeout
|
|
446
|
-
proxies=None, # Optional: Use proxies
|
|
447
|
-
verify=True # Optional: SSL verification
|
|
448
|
-
)
|
|
449
|
-
|
|
450
|
-
# Text Search
|
|
451
|
-
text_results = google.text(
|
|
452
|
-
keywords="artificial intelligence",
|
|
453
|
-
region="us", # Optional: Region for results
|
|
454
|
-
safesearch="moderate", # Optional: "on", "moderate", "off"
|
|
455
|
-
max_results=10 # Optional: Limit number of results
|
|
456
|
-
)
|
|
457
|
-
for result in text_results:
|
|
458
|
-
print(f"Title: {result.title}")
|
|
459
|
-
print(f"URL: {result.url}")
|
|
460
|
-
print(f"Description: {result.description}")
|
|
461
|
-
|
|
462
|
-
# News Search
|
|
463
|
-
news_results = google.news(
|
|
464
|
-
keywords="technology trends",
|
|
465
|
-
region="us",
|
|
466
|
-
safesearch="moderate",
|
|
467
|
-
max_results=5
|
|
468
|
-
)
|
|
469
|
-
|
|
470
|
-
# Get search suggestions
|
|
471
|
-
suggestions = google.suggestions("how to")
|
|
472
|
-
|
|
473
|
-
# Legacy usage is still supported
|
|
474
|
-
from webscout import search
|
|
475
|
-
results = search("Python programming", num_results=5)
|
|
476
|
-
```
|
|
477
|
-
|
|
478
|
-
<hr/>
|
|
479
|
-
|
|
480
|
-
## 🦆 DuckDuckGo Search with WEBS
|
|
481
|
-
|
|
482
|
-
Webscout provides powerful interfaces to DuckDuckGo's search capabilities through the `WEBS` and `AsyncWEBS` classes.
|
|
483
|
-
|
|
484
|
-
<details open>
|
|
485
|
-
<summary><b>Synchronous Usage with WEBS</b></summary>
|
|
486
|
-
<p>
|
|
487
|
-
|
|
488
|
-
```python
|
|
489
|
-
from webscout import WEBS
|
|
490
|
-
|
|
491
|
-
# Use as a context manager for proper resource management
|
|
492
|
-
with WEBS() as webs:
|
|
493
|
-
# Simple text search
|
|
494
|
-
results = webs.text("python programming", max_results=5)
|
|
495
|
-
for result in results:
|
|
496
|
-
print(f"Title: {result['title']}\nURL: {result['url']}")
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
</p>
|
|
500
|
-
</details>
|
|
501
|
-
|
|
502
|
-
<details open>
|
|
503
|
-
<summary><b>Asynchronous Usage with AsyncWEBS</b></summary>
|
|
504
|
-
<p>
|
|
505
|
-
|
|
506
|
-
```python
|
|
507
|
-
import asyncio
|
|
508
|
-
from webscout import AsyncWEBS
|
|
509
|
-
|
|
510
|
-
async def search_multiple_terms(search_terms):
|
|
511
|
-
async with AsyncWEBS() as webs:
|
|
512
|
-
# Create tasks for each search term
|
|
513
|
-
tasks = [webs.text(term, max_results=5) for term in search_terms]
|
|
514
|
-
# Run all searches concurrently
|
|
515
|
-
results = await asyncio.gather(*tasks)
|
|
516
|
-
return results
|
|
517
|
-
|
|
518
|
-
async def main():
|
|
519
|
-
terms = ["python", "javascript", "machine learning"]
|
|
520
|
-
all_results = await search_multiple_terms(terms)
|
|
521
|
-
|
|
522
|
-
# Process results
|
|
523
|
-
for i, term_results in enumerate(all_results):
|
|
524
|
-
print(f"Results for '{terms[i]}':\n")
|
|
525
|
-
for result in term_results:
|
|
526
|
-
print(f"- {result['title']}")
|
|
527
|
-
print("\n")
|
|
528
|
-
|
|
529
|
-
# Run the async function
|
|
530
|
-
asyncio.run(main())
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
</p>
|
|
534
|
-
</details>
|
|
535
|
-
|
|
536
|
-
> [!TIP]
|
|
537
|
-
> Always use these classes with a context manager (`with` statement) to ensure proper resource management and cleanup.
|
|
538
|
-
|
|
539
|
-
<hr/>
|
|
540
|
-
|
|
541
|
-
## 💻 WEBS API Reference
|
|
542
|
-
|
|
543
|
-
The WEBS class provides comprehensive access to DuckDuckGo's search capabilities through a clean, intuitive API.
|
|
544
|
-
|
|
545
|
-
### Available Search Methods
|
|
546
|
-
|
|
547
|
-
| Method | Description | Example |
|
|
548
|
-
| --------------- | ------------------- | -------------------------------------------- |
|
|
549
|
-
| `text()` | General web search | `webs.text('python programming')` |
|
|
550
|
-
| `answers()` | Instant answers | `webs.answers('population of france')` |
|
|
551
|
-
| `images()` | Image search | `webs.images('nature photography')` |
|
|
552
|
-
| `videos()` | Video search | `webs.videos('documentary')` |
|
|
553
|
-
| `news()` | News articles | `webs.news('technology')` |
|
|
554
|
-
| `maps()` | Location search | `webs.maps('restaurants', place='new york')` |
|
|
555
|
-
| `translate()` | Text translation | `webs.translate('hello', to='es')` |
|
|
556
|
-
| `suggestions()` | Search suggestions | `webs.suggestions('how to')` |
|
|
557
|
-
| `weather()` | Weather information | `webs.weather('london')` |
|
|
558
|
-
|
|
559
|
-
<details>
|
|
560
|
-
<summary><b>Example: Text Search</b></summary>
|
|
561
|
-
<p>
|
|
562
|
-
|
|
563
|
-
```python
|
|
564
|
-
from webscout import WEBS
|
|
565
|
-
|
|
566
|
-
with WEBS() as webs:
|
|
567
|
-
results = webs.text(
|
|
568
|
-
'artificial intelligence',
|
|
569
|
-
region='wt-wt', # Optional: Region for results
|
|
570
|
-
safesearch='off', # Optional: 'on', 'moderate', 'off'
|
|
571
|
-
timelimit='y', # Optional: Time limit ('d'=day, 'w'=week, 'm'=month, 'y'=year)
|
|
572
|
-
max_results=10 # Optional: Limit number of results
|
|
573
|
-
)
|
|
574
|
-
|
|
575
|
-
for result in results:
|
|
576
|
-
print(f"Title: {result['title']}")
|
|
577
|
-
print(f"URL: {result['url']}")
|
|
578
|
-
print(f"Description: {result['body']}\n")
|
|
579
|
-
```
|
|
580
|
-
|
|
581
|
-
</p>
|
|
582
|
-
</details>
|
|
583
|
-
|
|
584
|
-
<details>
|
|
585
|
-
<summary><b>Example: News Search with Formatting</b></summary>
|
|
586
|
-
<p>
|
|
587
|
-
|
|
588
|
-
```python
|
|
589
|
-
from webscout.search import DuckDuckGoSearch
|
|
590
|
-
|
|
591
|
-
def fetch_formatted_news(keywords, timelimit='d', max_results=20):
|
|
592
|
-
"""Fetch and format news articles"""
|
|
593
|
-
with WEBS() as webs:
|
|
594
|
-
# Get news results
|
|
595
|
-
news_results = webs.news(
|
|
596
|
-
keywords,
|
|
597
|
-
region="wt-wt",
|
|
598
|
-
safesearch="off",
|
|
599
|
-
timelimit=timelimit, # 'd'=day, 'w'=week, 'm'=month
|
|
600
|
-
max_results=max_results
|
|
601
|
-
)
|
|
602
|
-
|
|
603
|
-
# Format the results
|
|
604
|
-
formatted_news = []
|
|
605
|
-
for i, item in enumerate(news_results, 1):
|
|
606
|
-
# Format the date
|
|
607
|
-
date = datetime.datetime.fromisoformat(item['date']).strftime('%B %d, %Y')
|
|
608
|
-
|
|
609
|
-
# Create formatted entry
|
|
610
|
-
entry = f"{i}. {item['title']}\n"
|
|
611
|
-
entry += f" Published: {date}\n"
|
|
612
|
-
entry += f" {item['body']}\n"
|
|
613
|
-
entry += f" URL: {item['url']}\n"
|
|
614
|
-
|
|
615
|
-
formatted_news.append(entry)
|
|
616
|
-
|
|
617
|
-
return formatted_news
|
|
618
|
-
|
|
619
|
-
# Example usage
|
|
620
|
-
news = fetch_formatted_news('artificial intelligence', timelimit='w', max_results=5)
|
|
621
|
-
print('\n'.join(news))
|
|
622
|
-
```
|
|
623
|
-
|
|
624
|
-
</p>
|
|
625
|
-
</details>
|
|
626
|
-
|
|
627
|
-
<details>
|
|
628
|
-
<summary><b>Example: Weather Information</b></summary>
|
|
629
|
-
<p>
|
|
630
|
-
|
|
631
|
-
```python
|
|
632
|
-
from webscout import WEBS
|
|
633
|
-
|
|
634
|
-
with WEBS() as webs:
|
|
635
|
-
# Get weather for a location
|
|
636
|
-
weather = webs.weather("New York")
|
|
637
|
-
|
|
638
|
-
# Access weather data
|
|
639
|
-
if weather:
|
|
640
|
-
print(f"Location: {weather.get('location', 'Unknown')}")
|
|
641
|
-
print(f"Temperature: {weather.get('temperature', 'N/A')}")
|
|
642
|
-
print(f"Conditions: {weather.get('condition', 'N/A')}")
|
|
643
|
-
```
|
|
644
|
-
|
|
645
|
-
</p>
|
|
646
|
-
</details>
|
|
647
|
-
|
|
648
|
-
<hr/>
|
|
649
|
-
|
|
650
332
|
## 🤖 AI Models and Voices
|
|
651
333
|
|
|
652
334
|
Webscout provides easy access to a wide range of AI models and voice options.
|
|
@@ -781,7 +463,7 @@ for media in response.get("media", []):
|
|
|
781
463
|
<p>
|
|
782
464
|
|
|
783
465
|
```python
|
|
784
|
-
from webscout import GROQ,
|
|
466
|
+
from webscout import GROQ, DuckDuckGoSearch
|
|
785
467
|
import json
|
|
786
468
|
|
|
787
469
|
# Initialize GROQ client
|
|
@@ -799,7 +481,8 @@ def calculate(expression):
|
|
|
799
481
|
def search(query):
|
|
800
482
|
"""Perform a web search"""
|
|
801
483
|
try:
|
|
802
|
-
|
|
484
|
+
ddg = DuckDuckGoSearch()
|
|
485
|
+
results = ddg.text(query, max_results=3)
|
|
803
486
|
return json.dumps({"results": results})
|
|
804
487
|
except Exception as e:
|
|
805
488
|
return json.dumps({"error": str(e)})
|