webscout 2025.10.14.1__tar.gz → 2025.10.15__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.15}/PKG-INFO +6 -281
- {webscout-2025.10.14.1 → webscout-2025.10.15}/README.md +5 -280
- {webscout-2025.10.14.1 → webscout-2025.10.15}/changelog.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/__init__.py +1 -1
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/routes.py +8 -22
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/cli.py +0 -147
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/__init__.py +2 -4
- webscout-2025.10.15/webscout/search/bing_main.py +42 -0
- webscout-2025.10.15/webscout/search/engines/bing/__init__.py +1 -0
- webscout-2025.10.15/webscout/search/engines/bing/base.py +33 -0
- webscout-2025.10.15/webscout/search/engines/bing/images.py +105 -0
- webscout-2025.10.15/webscout/search/engines/bing/news.py +89 -0
- webscout-2025.10.15/webscout/search/engines/bing/suggestions.py +34 -0
- webscout-2025.10.15/webscout/search/engines/bing/text.py +103 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/maps.py +13 -0
- webscout-2025.10.15/webscout/version.py +2 -0
- webscout-2025.10.15/webscout/version.py.bak +2 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15/webscout.egg-info}/PKG-INFO +6 -281
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout.egg-info/SOURCES.txt +14 -8
- 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/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/version.py +0 -2
- webscout-2025.10.14.1/webscout/version.py.bak +0 -2
- {webscout-2025.10.14.1 → webscout-2025.10.15}/LEGAL_NOTICE.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/LICENSE.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/MANIFEST.in +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/pyproject.toml +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/setup.cfg +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/AIauto.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/AIbase.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/AIutel.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Bard.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/Act.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/GitToolkit/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/GitToolkit/gitapi/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/GitToolkit/gitapi/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/GitToolkit/gitapi/repository.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/GitToolkit/gitapi/user.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/GitToolkit/gitapi/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/YTdownloader.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/transcriber.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/channel.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/playlist.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/pool.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/YTToolkit/ytapi/video.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/autocoder/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/autocoder/autocoder.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/autocoder/autocoder_utiles.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/gguf.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/gguf.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/async_utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/cli.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/emailnator.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/mail_tm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/tempmail/temp_mail_io.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/weather.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/weather.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Extra/weather_ascii.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Litlogger/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Litlogger/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Litlogger/formats.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Litlogger/handlers.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Litlogger/levels.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Litlogger/logger.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/PERPLEXED_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/Perplexity.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/felo_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/genspark_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/hika_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/iask_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/monica_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/scira_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/stellar_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/AISEARCH/webpilotai_search.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Aitopia.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Andi.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Apriel.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/ChatGPTClone.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/ChatSandbox.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Cloudflare.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Cohere.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Deepinfra.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/ExaAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/ExaChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Flowith.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/GMI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Gemini.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/GeminiProxy.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/GithubChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Groq.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/HeckAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Jadve.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/K2Think.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Koboldai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/LambdaChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Nemotron.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Netwrck.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OLLAMA.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/Cloudflare.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/FalconH1.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/FreeGemini.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/GeminiProxy.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/K2Think.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/NEMOTRON.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/PI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/TogetherAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/TwoAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/ai4chat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/chatglm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/chatgpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/chatgptclone.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/chatsandbox.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/deepinfra.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/e2b.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/exaai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/exachat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/flowith.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/friendli.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/generate_api_key.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/gmi.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/groq.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/heckai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/llmchatco.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/netwrck.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/oivscode.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/opkfc.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/pydantic_imports.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/scirachat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/sonus.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/standardinput.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/textpollinations.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/toolbaz.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/typefully.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/venice.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/wisecat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/writecream.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/x0gpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OPENAI/yep.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/OpenGPT.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Openai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/PI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Perplexitylabs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/QwenLM.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/STT/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/STT/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/STT/elevenlabs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Sambanova.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/StandardInput.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/aiarta.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/bing.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/gpt1image.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/imagen.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/infip.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/magicstudio.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/monochat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/piclumen.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/pixelmuse.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/pollinations.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/together.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTI/venice.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/deepgram.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/elevenlabs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/freetts.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/gesserit.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/murfai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/openai_fm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/parler.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/speechma.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/streamElements.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TTS/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TeachAnything.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TextPollinationsAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TogetherAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TwoAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/TypliAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/ChatHub.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/ChutesAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/GizAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/Marcus.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/Qodo.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/VercelAIGateway.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/XenAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/Youchat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/liner.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/liner_api_request.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/puterjs.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/samurai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/UNFINISHED/test_lmarena.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/Venice.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/VercelAI.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/WiseCat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/WrDoChat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/ai4chat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/akashgpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/cerebras.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/chatglm.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/cleeai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/deepseek_assistant.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/elmo.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/geminiapi.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/granite.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/hermes.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/julius.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/learnfastai.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/llama3mitril.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/llmchat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/llmchatco.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/meta.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/oivscode.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/scira_chat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/searchchat.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/sonus.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/toolbaz.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/turboseek.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/typefully.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/x0gpt.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/Provider/yep.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/__main__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/api_key_manager.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/auth_system.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/config.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/database.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/exceptions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/middleware.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/models.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/providers.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/rate_limiter.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/request_models.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/request_processing.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/schemas.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/server.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/auth/simple_logger.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/client.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/conversation.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/exceptions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/litagent/Readme.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/litagent/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/litagent/agent.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/litagent/constants.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/litprinter/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/models.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/optimizers.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/prompt_manager.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/sanitize.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/core/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/core/crawler.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/core/scout.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/core/search_result.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/core/text_analyzer.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/core/text_utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/core/web_analyzer.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/element.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/parsers/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/parsers/html5lib_parser.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/parsers/html_parser.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/parsers/lxml_parser.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/scout/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/duckduckgo_main.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/brave.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/answers.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/images.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/news.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/suggestions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/text.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/translate.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/videos.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/duckduckgo/weather.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/mojeek.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/wikipedia.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yahoo.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yahoo_news.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yandex.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yep/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yep/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yep/images.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yep/suggestions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/engines/yep/text.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/http_client.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/results.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/search/yep_main.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/Readme.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/core/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/core/cli.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/core/context.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/core/group.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/decorators/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/decorators/command.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/decorators/options.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/decorators/output.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/exceptions.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/plugins/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/plugins/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/plugins/manager.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/utils/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/utils/formatting.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/swiftcli/utils/parsing.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/update_checker.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/utils.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/zeroart/README.md +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/zeroart/__init__.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/zeroart/base.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/zeroart/effects.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout/zeroart/fonts.py +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout.egg-info/dependency_links.txt +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout.egg-info/entry_points.txt +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/webscout.egg-info/requires.txt +0 -0
- {webscout-2025.10.14.1 → webscout-2025.10.15}/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.15
|
|
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
|
|
@@ -108,9 +108,6 @@ Dynamic: license-file
|
|
|
108
108
|
- [⚙️ Installation](#️-installation)
|
|
109
109
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
110
110
|
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
111
|
-
- [🔍 Search Engines](#-search-engines)
|
|
112
|
-
- [🦆 DuckDuckGo Search](#-duckduckgo-search-with-webs-and-asyncwebs)
|
|
113
|
-
- [💻 WEBS API Reference](#-webs-api-reference)
|
|
114
111
|
- [🤖 AI Models and Voices](#-ai-models-and-voices)
|
|
115
112
|
- [💬 AI Chat Providers](#-ai-chat-providers)
|
|
116
113
|
- [👨💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
|
|
@@ -151,7 +148,7 @@ Dynamic: license-file
|
|
|
151
148
|
<summary><b>Search & AI</b></summary>
|
|
152
149
|
<p>
|
|
153
150
|
|
|
154
|
-
- **Comprehensive Search:**
|
|
151
|
+
- **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
152
|
- **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
|
|
156
153
|
- **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
|
|
157
154
|
- **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
|
|
@@ -325,32 +322,7 @@ python -m webscout-server
|
|
|
325
322
|
<summary><b>🔍 Web Search Commands</b></summary>
|
|
326
323
|
<p>
|
|
327
324
|
|
|
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"` |
|
|
325
|
+
Webscout provides comprehensive CLI commands for all search engines. See the [Search Documentation](docs/search.md#command-line-interface) for detailed command reference.
|
|
354
326
|
|
|
355
327
|
</p>
|
|
356
328
|
</details>
|
|
@@ -399,254 +371,6 @@ For detailed information about the OpenAI-compatible API server, including setup
|
|
|
399
371
|
|
|
400
372
|
<hr/>
|
|
401
373
|
|
|
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
374
|
## 🤖 AI Models and Voices
|
|
651
375
|
|
|
652
376
|
Webscout provides easy access to a wide range of AI models and voice options.
|
|
@@ -781,7 +505,7 @@ for media in response.get("media", []):
|
|
|
781
505
|
<p>
|
|
782
506
|
|
|
783
507
|
```python
|
|
784
|
-
from webscout import GROQ,
|
|
508
|
+
from webscout import GROQ, DuckDuckGoSearch
|
|
785
509
|
import json
|
|
786
510
|
|
|
787
511
|
# Initialize GROQ client
|
|
@@ -799,7 +523,8 @@ def calculate(expression):
|
|
|
799
523
|
def search(query):
|
|
800
524
|
"""Perform a web search"""
|
|
801
525
|
try:
|
|
802
|
-
|
|
526
|
+
ddg = DuckDuckGoSearch()
|
|
527
|
+
results = ddg.text(query, max_results=3)
|
|
803
528
|
return json.dumps({"results": results})
|
|
804
529
|
except Exception as e:
|
|
805
530
|
return json.dumps({"error": str(e)})
|
|
@@ -29,9 +29,6 @@
|
|
|
29
29
|
- [⚙️ Installation](#️-installation)
|
|
30
30
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
31
31
|
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
32
|
-
- [🔍 Search Engines](#-search-engines)
|
|
33
|
-
- [🦆 DuckDuckGo Search](#-duckduckgo-search-with-webs-and-asyncwebs)
|
|
34
|
-
- [💻 WEBS API Reference](#-webs-api-reference)
|
|
35
32
|
- [🤖 AI Models and Voices](#-ai-models-and-voices)
|
|
36
33
|
- [💬 AI Chat Providers](#-ai-chat-providers)
|
|
37
34
|
- [👨💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
|
|
@@ -72,7 +69,7 @@
|
|
|
72
69
|
<summary><b>Search & AI</b></summary>
|
|
73
70
|
<p>
|
|
74
71
|
|
|
75
|
-
- **Comprehensive Search:**
|
|
72
|
+
- **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))
|
|
76
73
|
- **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
|
|
77
74
|
- **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
|
|
78
75
|
- **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
|
|
@@ -246,32 +243,7 @@ python -m webscout-server
|
|
|
246
243
|
<summary><b>🔍 Web Search Commands</b></summary>
|
|
247
244
|
<p>
|
|
248
245
|
|
|
249
|
-
|
|
250
|
-
| --------------------------------- | --------------------------- | ----------------------------------------- |
|
|
251
|
-
| `webscout text -k "query"` | Perform a text search | `webscout text -k "python programming"` |
|
|
252
|
-
| `webscout answers -k "query"` | Get instant answers | `webscout answers -k "what is AI"` |
|
|
253
|
-
| `webscout images -k "query"` | Search for images | `webscout images -k "nature photography"` |
|
|
254
|
-
| `webscout videos -k "query"` | Search for videos | `webscout videos -k "python tutorials"` |
|
|
255
|
-
| `webscout news -k "query"` | Search for news articles | `webscout news -k "technology trends"` |
|
|
256
|
-
| `webscout maps -k "query"` | Perform a maps search | `webscout maps -k "restaurants near me"` |
|
|
257
|
-
| `webscout translate -k "text"` | Translate text | `webscout translate -k "hello world"` |
|
|
258
|
-
| `webscout suggestions -k "query"` | Get search suggestions | `webscout suggestions -k "how to"` |
|
|
259
|
-
| `webscout weather -l "location"` | Get weather information | `webscout weather -l "New York"` |
|
|
260
|
-
| `webscout version` | Display the current version | `webscout version` |
|
|
261
|
-
|
|
262
|
-
**Google Search Commands:**
|
|
263
|
-
| Command | Description | Example |
|
|
264
|
-
|---------|-------------|---------|
|
|
265
|
-
| `webscout google_text -k "query"` | Google text search | `webscout google_text -k "machine learning"` |
|
|
266
|
-
| `webscout google_news -k "query"` | Google news search | `webscout google_news -k "AI breakthrough"` |
|
|
267
|
-
| `webscout google_suggestions -q "query"` | Google suggestions | `webscout google_suggestions -q "python"` |
|
|
268
|
-
|
|
269
|
-
**Yep Search Commands:**
|
|
270
|
-
| Command | Description | Example |
|
|
271
|
-
|---------|-------------|---------|
|
|
272
|
-
| `webscout yep_text -k "query"` | Yep text search | `webscout yep_text -k "web development"` |
|
|
273
|
-
| `webscout yep_images -k "query"` | Yep image search | `webscout yep_images -k "landscapes"` |
|
|
274
|
-
| `webscout yep_suggestions -q "query"` | Yep suggestions | `webscout yep_suggestions -q "javascript"` |
|
|
246
|
+
Webscout provides comprehensive CLI commands for all search engines. See the [Search Documentation](docs/search.md#command-line-interface) for detailed command reference.
|
|
275
247
|
|
|
276
248
|
</p>
|
|
277
249
|
</details>
|
|
@@ -320,254 +292,6 @@ For detailed information about the OpenAI-compatible API server, including setup
|
|
|
320
292
|
|
|
321
293
|
<hr/>
|
|
322
294
|
|
|
323
|
-
## 🔍 Search Engines
|
|
324
|
-
|
|
325
|
-
Webscout provides multiple search engine interfaces for diverse search capabilities.
|
|
326
|
-
|
|
327
|
-
### YepSearch - Yep.com Interface
|
|
328
|
-
|
|
329
|
-
```python
|
|
330
|
-
from webscout import YepSearch
|
|
331
|
-
|
|
332
|
-
# Initialize YepSearch
|
|
333
|
-
yep = YepSearch(
|
|
334
|
-
timeout=20, # Optional: Set custom timeout
|
|
335
|
-
proxies=None, # Optional: Use proxies
|
|
336
|
-
verify=True # Optional: SSL verification
|
|
337
|
-
)
|
|
338
|
-
|
|
339
|
-
# Text Search
|
|
340
|
-
text_results = yep.text(
|
|
341
|
-
keywords="artificial intelligence",
|
|
342
|
-
region="all", # Optional: Region for results
|
|
343
|
-
safesearch="moderate", # Optional: "on", "moderate", "off"
|
|
344
|
-
max_results=10 # Optional: Limit number of results
|
|
345
|
-
)
|
|
346
|
-
|
|
347
|
-
# Image Search
|
|
348
|
-
image_results = yep.images(
|
|
349
|
-
keywords="nature photography",
|
|
350
|
-
region="all",
|
|
351
|
-
safesearch="moderate",
|
|
352
|
-
max_results=10
|
|
353
|
-
)
|
|
354
|
-
|
|
355
|
-
# Get search suggestions
|
|
356
|
-
suggestions = yep.suggestions("hist")
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### GoogleSearch - Google Interface
|
|
360
|
-
|
|
361
|
-
```python
|
|
362
|
-
from webscout import GoogleSearch
|
|
363
|
-
|
|
364
|
-
# Initialize GoogleSearch
|
|
365
|
-
google = GoogleSearch(
|
|
366
|
-
timeout=10, # Optional: Set custom timeout
|
|
367
|
-
proxies=None, # Optional: Use proxies
|
|
368
|
-
verify=True # Optional: SSL verification
|
|
369
|
-
)
|
|
370
|
-
|
|
371
|
-
# Text Search
|
|
372
|
-
text_results = google.text(
|
|
373
|
-
keywords="artificial intelligence",
|
|
374
|
-
region="us", # Optional: Region for results
|
|
375
|
-
safesearch="moderate", # Optional: "on", "moderate", "off"
|
|
376
|
-
max_results=10 # Optional: Limit number of results
|
|
377
|
-
)
|
|
378
|
-
for result in text_results:
|
|
379
|
-
print(f"Title: {result.title}")
|
|
380
|
-
print(f"URL: {result.url}")
|
|
381
|
-
print(f"Description: {result.description}")
|
|
382
|
-
|
|
383
|
-
# News Search
|
|
384
|
-
news_results = google.news(
|
|
385
|
-
keywords="technology trends",
|
|
386
|
-
region="us",
|
|
387
|
-
safesearch="moderate",
|
|
388
|
-
max_results=5
|
|
389
|
-
)
|
|
390
|
-
|
|
391
|
-
# Get search suggestions
|
|
392
|
-
suggestions = google.suggestions("how to")
|
|
393
|
-
|
|
394
|
-
# Legacy usage is still supported
|
|
395
|
-
from webscout import search
|
|
396
|
-
results = search("Python programming", num_results=5)
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
<hr/>
|
|
400
|
-
|
|
401
|
-
## 🦆 DuckDuckGo Search with WEBS
|
|
402
|
-
|
|
403
|
-
Webscout provides powerful interfaces to DuckDuckGo's search capabilities through the `WEBS` and `AsyncWEBS` classes.
|
|
404
|
-
|
|
405
|
-
<details open>
|
|
406
|
-
<summary><b>Synchronous Usage with WEBS</b></summary>
|
|
407
|
-
<p>
|
|
408
|
-
|
|
409
|
-
```python
|
|
410
|
-
from webscout import WEBS
|
|
411
|
-
|
|
412
|
-
# Use as a context manager for proper resource management
|
|
413
|
-
with WEBS() as webs:
|
|
414
|
-
# Simple text search
|
|
415
|
-
results = webs.text("python programming", max_results=5)
|
|
416
|
-
for result in results:
|
|
417
|
-
print(f"Title: {result['title']}\nURL: {result['url']}")
|
|
418
|
-
```
|
|
419
|
-
|
|
420
|
-
</p>
|
|
421
|
-
</details>
|
|
422
|
-
|
|
423
|
-
<details open>
|
|
424
|
-
<summary><b>Asynchronous Usage with AsyncWEBS</b></summary>
|
|
425
|
-
<p>
|
|
426
|
-
|
|
427
|
-
```python
|
|
428
|
-
import asyncio
|
|
429
|
-
from webscout import AsyncWEBS
|
|
430
|
-
|
|
431
|
-
async def search_multiple_terms(search_terms):
|
|
432
|
-
async with AsyncWEBS() as webs:
|
|
433
|
-
# Create tasks for each search term
|
|
434
|
-
tasks = [webs.text(term, max_results=5) for term in search_terms]
|
|
435
|
-
# Run all searches concurrently
|
|
436
|
-
results = await asyncio.gather(*tasks)
|
|
437
|
-
return results
|
|
438
|
-
|
|
439
|
-
async def main():
|
|
440
|
-
terms = ["python", "javascript", "machine learning"]
|
|
441
|
-
all_results = await search_multiple_terms(terms)
|
|
442
|
-
|
|
443
|
-
# Process results
|
|
444
|
-
for i, term_results in enumerate(all_results):
|
|
445
|
-
print(f"Results for '{terms[i]}':\n")
|
|
446
|
-
for result in term_results:
|
|
447
|
-
print(f"- {result['title']}")
|
|
448
|
-
print("\n")
|
|
449
|
-
|
|
450
|
-
# Run the async function
|
|
451
|
-
asyncio.run(main())
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
</p>
|
|
455
|
-
</details>
|
|
456
|
-
|
|
457
|
-
> [!TIP]
|
|
458
|
-
> Always use these classes with a context manager (`with` statement) to ensure proper resource management and cleanup.
|
|
459
|
-
|
|
460
|
-
<hr/>
|
|
461
|
-
|
|
462
|
-
## 💻 WEBS API Reference
|
|
463
|
-
|
|
464
|
-
The WEBS class provides comprehensive access to DuckDuckGo's search capabilities through a clean, intuitive API.
|
|
465
|
-
|
|
466
|
-
### Available Search Methods
|
|
467
|
-
|
|
468
|
-
| Method | Description | Example |
|
|
469
|
-
| --------------- | ------------------- | -------------------------------------------- |
|
|
470
|
-
| `text()` | General web search | `webs.text('python programming')` |
|
|
471
|
-
| `answers()` | Instant answers | `webs.answers('population of france')` |
|
|
472
|
-
| `images()` | Image search | `webs.images('nature photography')` |
|
|
473
|
-
| `videos()` | Video search | `webs.videos('documentary')` |
|
|
474
|
-
| `news()` | News articles | `webs.news('technology')` |
|
|
475
|
-
| `maps()` | Location search | `webs.maps('restaurants', place='new york')` |
|
|
476
|
-
| `translate()` | Text translation | `webs.translate('hello', to='es')` |
|
|
477
|
-
| `suggestions()` | Search suggestions | `webs.suggestions('how to')` |
|
|
478
|
-
| `weather()` | Weather information | `webs.weather('london')` |
|
|
479
|
-
|
|
480
|
-
<details>
|
|
481
|
-
<summary><b>Example: Text Search</b></summary>
|
|
482
|
-
<p>
|
|
483
|
-
|
|
484
|
-
```python
|
|
485
|
-
from webscout import WEBS
|
|
486
|
-
|
|
487
|
-
with WEBS() as webs:
|
|
488
|
-
results = webs.text(
|
|
489
|
-
'artificial intelligence',
|
|
490
|
-
region='wt-wt', # Optional: Region for results
|
|
491
|
-
safesearch='off', # Optional: 'on', 'moderate', 'off'
|
|
492
|
-
timelimit='y', # Optional: Time limit ('d'=day, 'w'=week, 'm'=month, 'y'=year)
|
|
493
|
-
max_results=10 # Optional: Limit number of results
|
|
494
|
-
)
|
|
495
|
-
|
|
496
|
-
for result in results:
|
|
497
|
-
print(f"Title: {result['title']}")
|
|
498
|
-
print(f"URL: {result['url']}")
|
|
499
|
-
print(f"Description: {result['body']}\n")
|
|
500
|
-
```
|
|
501
|
-
|
|
502
|
-
</p>
|
|
503
|
-
</details>
|
|
504
|
-
|
|
505
|
-
<details>
|
|
506
|
-
<summary><b>Example: News Search with Formatting</b></summary>
|
|
507
|
-
<p>
|
|
508
|
-
|
|
509
|
-
```python
|
|
510
|
-
from webscout.search import DuckDuckGoSearch
|
|
511
|
-
|
|
512
|
-
def fetch_formatted_news(keywords, timelimit='d', max_results=20):
|
|
513
|
-
"""Fetch and format news articles"""
|
|
514
|
-
with WEBS() as webs:
|
|
515
|
-
# Get news results
|
|
516
|
-
news_results = webs.news(
|
|
517
|
-
keywords,
|
|
518
|
-
region="wt-wt",
|
|
519
|
-
safesearch="off",
|
|
520
|
-
timelimit=timelimit, # 'd'=day, 'w'=week, 'm'=month
|
|
521
|
-
max_results=max_results
|
|
522
|
-
)
|
|
523
|
-
|
|
524
|
-
# Format the results
|
|
525
|
-
formatted_news = []
|
|
526
|
-
for i, item in enumerate(news_results, 1):
|
|
527
|
-
# Format the date
|
|
528
|
-
date = datetime.datetime.fromisoformat(item['date']).strftime('%B %d, %Y')
|
|
529
|
-
|
|
530
|
-
# Create formatted entry
|
|
531
|
-
entry = f"{i}. {item['title']}\n"
|
|
532
|
-
entry += f" Published: {date}\n"
|
|
533
|
-
entry += f" {item['body']}\n"
|
|
534
|
-
entry += f" URL: {item['url']}\n"
|
|
535
|
-
|
|
536
|
-
formatted_news.append(entry)
|
|
537
|
-
|
|
538
|
-
return formatted_news
|
|
539
|
-
|
|
540
|
-
# Example usage
|
|
541
|
-
news = fetch_formatted_news('artificial intelligence', timelimit='w', max_results=5)
|
|
542
|
-
print('\n'.join(news))
|
|
543
|
-
```
|
|
544
|
-
|
|
545
|
-
</p>
|
|
546
|
-
</details>
|
|
547
|
-
|
|
548
|
-
<details>
|
|
549
|
-
<summary><b>Example: Weather Information</b></summary>
|
|
550
|
-
<p>
|
|
551
|
-
|
|
552
|
-
```python
|
|
553
|
-
from webscout import WEBS
|
|
554
|
-
|
|
555
|
-
with WEBS() as webs:
|
|
556
|
-
# Get weather for a location
|
|
557
|
-
weather = webs.weather("New York")
|
|
558
|
-
|
|
559
|
-
# Access weather data
|
|
560
|
-
if weather:
|
|
561
|
-
print(f"Location: {weather.get('location', 'Unknown')}")
|
|
562
|
-
print(f"Temperature: {weather.get('temperature', 'N/A')}")
|
|
563
|
-
print(f"Conditions: {weather.get('condition', 'N/A')}")
|
|
564
|
-
```
|
|
565
|
-
|
|
566
|
-
</p>
|
|
567
|
-
</details>
|
|
568
|
-
|
|
569
|
-
<hr/>
|
|
570
|
-
|
|
571
295
|
## 🤖 AI Models and Voices
|
|
572
296
|
|
|
573
297
|
Webscout provides easy access to a wide range of AI models and voice options.
|
|
@@ -702,7 +426,7 @@ for media in response.get("media", []):
|
|
|
702
426
|
<p>
|
|
703
427
|
|
|
704
428
|
```python
|
|
705
|
-
from webscout import GROQ,
|
|
429
|
+
from webscout import GROQ, DuckDuckGoSearch
|
|
706
430
|
import json
|
|
707
431
|
|
|
708
432
|
# Initialize GROQ client
|
|
@@ -720,7 +444,8 @@ def calculate(expression):
|
|
|
720
444
|
def search(query):
|
|
721
445
|
"""Perform a web search"""
|
|
722
446
|
try:
|
|
723
|
-
|
|
447
|
+
ddg = DuckDuckGoSearch()
|
|
448
|
+
results = ddg.text(query, max_results=3)
|
|
724
449
|
return json.dumps({"results": results})
|
|
725
450
|
except Exception as e:
|
|
726
451
|
return json.dumps({"error": str(e)})
|
|
Binary file
|