webscout 7.9__tar.gz → 8.1__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-8.1/PKG-INFO +650 -0
- webscout-8.1/README.md +622 -0
- webscout-8.1/webscout/Extra/GitToolkit/__init__.py +10 -0
- webscout-8.1/webscout/Extra/GitToolkit/gitapi/__init__.py +12 -0
- webscout-8.1/webscout/Extra/GitToolkit/gitapi/repository.py +195 -0
- webscout-8.1/webscout/Extra/GitToolkit/gitapi/user.py +96 -0
- webscout-8.1/webscout/Extra/GitToolkit/gitapi/utils.py +62 -0
- webscout-8.1/webscout/Extra/YTToolkit/ytapi/video.py +232 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/AISEARCH/DeepFind.py +1 -1
- {webscout-7.9 → webscout-8.1}/webscout/Provider/AISEARCH/ISou.py +1 -1
- webscout-8.1/webscout/Provider/AISEARCH/__init__.py +9 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/AISEARCH/felo_search.py +1 -1
- {webscout-7.9 → webscout-8.1}/webscout/Provider/AISEARCH/genspark_search.py +1 -1
- webscout-8.1/webscout/Provider/AISEARCH/hika_search.py +194 -0
- webscout-8.1/webscout/Provider/AISEARCH/iask_search.py +436 -0
- webscout-8.1/webscout/Provider/AISEARCH/monica_search.py +246 -0
- webscout-8.1/webscout/Provider/AISEARCH/scira_search.py +320 -0
- webscout-8.1/webscout/Provider/AISEARCH/webpilotai_search.py +281 -0
- webscout-8.1/webscout/Provider/AllenAI.py +413 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/DeepSeek.py +1 -2
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Deepinfra.py +17 -9
- webscout-8.1/webscout/Provider/ExaAI.py +261 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/ExaChat.py +8 -1
- {webscout-7.9 → webscout-8.1}/webscout/Provider/GithubChat.py +2 -1
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Jadve.py +2 -2
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Netwrck.py +3 -2
- webscout-8.1/webscout/Provider/OPENAI/__init__.py +17 -0
- webscout-8.1/webscout/Provider/OPENAI/base.py +46 -0
- webscout-8.1/webscout/Provider/OPENAI/c4ai.py +347 -0
- webscout-8.1/webscout/Provider/OPENAI/chatgptclone.py +460 -0
- webscout-8.1/webscout/Provider/OPENAI/deepinfra.py +284 -0
- webscout-8.1/webscout/Provider/OPENAI/exaai.py +419 -0
- webscout-8.1/webscout/Provider/OPENAI/exachat.py +421 -0
- webscout-8.1/webscout/Provider/OPENAI/freeaichat.py +355 -0
- webscout-8.1/webscout/Provider/OPENAI/glider.py +314 -0
- webscout-8.1/webscout/Provider/OPENAI/heckai.py +337 -0
- webscout-8.1/webscout/Provider/OPENAI/llmchatco.py +325 -0
- webscout-8.1/webscout/Provider/OPENAI/netwrck.py +348 -0
- webscout-8.1/webscout/Provider/OPENAI/scirachat.py +459 -0
- webscout-8.1/webscout/Provider/OPENAI/sonus.py +294 -0
- webscout-8.1/webscout/Provider/OPENAI/typegpt.py +361 -0
- webscout-8.1/webscout/Provider/OPENAI/utils.py +211 -0
- webscout-8.1/webscout/Provider/OPENAI/venice.py +428 -0
- webscout-8.1/webscout/Provider/OPENAI/wisecat.py +381 -0
- webscout-8.1/webscout/Provider/OPENAI/x0gpt.py +389 -0
- webscout-8.1/webscout/Provider/OPENAI/yep.py +329 -0
- webscout-8.1/webscout/Provider/OpenGPT.py +199 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/PI.py +39 -24
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Venice.py +1 -1
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Youchat.py +326 -296
- {webscout-7.9 → webscout-8.1}/webscout/Provider/__init__.py +16 -6
- {webscout-7.9 → webscout-8.1}/webscout/Provider/ai4chat.py +58 -56
- {webscout-7.9 → webscout-8.1}/webscout/Provider/akashgpt.py +34 -22
- {webscout-7.9 → webscout-8.1}/webscout/Provider/freeaichat.py +1 -1
- {webscout-7.9 → webscout-8.1}/webscout/Provider/labyrinth.py +121 -20
- webscout-8.1/webscout/Provider/llmchatco.py +306 -0
- webscout-8.1/webscout/Provider/scira_chat.py +274 -0
- webscout-8.1/webscout/Provider/typefully.py +280 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/typegpt.py +3 -184
- {webscout-7.9 → webscout-8.1}/webscout/prompt_manager.py +2 -1
- {webscout-7.9 → webscout-8.1}/webscout/version.py +1 -1
- {webscout-7.9 → webscout-8.1}/webscout/webscout_search.py +118 -54
- {webscout-7.9 → webscout-8.1}/webscout/webscout_search_async.py +109 -45
- webscout-8.1/webscout.egg-info/PKG-INFO +650 -0
- {webscout-7.9 → webscout-8.1}/webscout.egg-info/SOURCES.txt +35 -1
- webscout-7.9/PKG-INFO +0 -962
- webscout-7.9/README.md +0 -934
- webscout-7.9/webscout/Extra/YTToolkit/ytapi/video.py +0 -103
- webscout-7.9/webscout/Provider/AISEARCH/__init__.py +0 -4
- webscout-7.9/webscout/Provider/AllenAI.py +0 -280
- webscout-7.9/webscout/Provider/flowith.py +0 -207
- webscout-7.9/webscout.egg-info/PKG-INFO +0 -962
- {webscout-7.9 → webscout-8.1}/LICENSE.md +0 -0
- {webscout-7.9 → webscout-8.1}/setup.cfg +0 -0
- {webscout-7.9 → webscout-8.1}/setup.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/AIauto.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/AIbase.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/AIutel.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Bard.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/DWEBS.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/YTdownloader.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/transcriber.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/channel.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/playlist.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/pool.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/YTToolkit/ytapi/utils.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/autocoder/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/autocoder/autocoder.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/autocoder/autocoder_utiles.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/gguf.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/tempmail/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/tempmail/async_utils.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/tempmail/base.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/tempmail/cli.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/tempmail/mail_tm.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/tempmail/temp_mail_io.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/weather.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Extra/weather_ascii.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/LLM.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/core/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/core/level.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/core/logger.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/handlers/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/handlers/console.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/handlers/file.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/handlers/network.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/styles/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/styles/colors.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/styles/formats.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/styles/text.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/utils/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/utils/detectors.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Litlogger/utils/formatters.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/AI21.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Aitopia.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Andi.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Blackboxai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/C4ai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/ChatGPTClone.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/ChatGPTES.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/ChatGPTGratis.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Chatify.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Cloudflare.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Cohere.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/ElectronHub.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Free2GPT.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/GPTWeb.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Gemini.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Glider.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Groq.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/HF_space/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/HF_space/qwen_qwen2.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/HeckAI.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/HuggingFaceChat.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Hunyuan.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Koboldai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/LambdaChat.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Llama.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Llama3.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Marcus.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/OLLAMA.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Openai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Perplexitylabs.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Phind.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/PizzaGPT.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/QwenLM.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/Reka.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/AiForce/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/AiForce/async_aiforce.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/AiForce/sync_aiforce.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/FreeAIPlayground/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/FreeAIPlayground/async_freeaiplayground.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/FreeAIPlayground/sync_freeaiplayground.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/ImgSys/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/ImgSys/async_imgsys.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/ImgSys/sync_imgsys.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/MagicStudio/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/MagicStudio/async_magicstudio.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/MagicStudio/sync_magicstudio.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/Nexra/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/Nexra/async_nexra.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/Nexra/sync_nexra.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/PollinationsAI/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/PollinationsAI/async_pollinations.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/aiarta/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/aiarta/async_aiarta.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/aiarta/sync_aiarta.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/artbit/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/artbit/async_artbit.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/artbit/sync_artbit.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/fastflux/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/fastflux/async_fastflux.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/fastflux/sync_fastflux.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/huggingface/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/huggingface/async_huggingface.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/huggingface/sync_huggingface.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/piclumen/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/piclumen/async_piclumen.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/piclumen/sync_piclumen.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/pixelmuse/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/pixelmuse/async_pixelmuse.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/pixelmuse/sync_pixelmuse.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/talkai/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/talkai/async_talkai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTI/talkai/sync_talkai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/deepgram.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/elevenlabs.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/gesserit.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/murfai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/parler.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/speechma.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/streamElements.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TTS/utils.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TeachAnything.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TextPollinationsAI.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/TwoAI.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/VercelAI.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/WebSim.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/WiseCat.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/aimathgpt.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/askmyai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/asksteve.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/bagoodex.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/cerebras.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/chatglm.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/cleeai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/copilot.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/elmo.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/gaurish.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/geminiapi.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/geminiprorealtime.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/granite.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/hermes.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/julius.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/koala.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/learnfastai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/lepton.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/llama3mitril.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/llamatutor.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/llmchat.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/meta.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/multichat.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/promptrefine.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/searchchat.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/sonus.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/talkai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/turboseek.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/tutorai.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/uncovr.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/x0gpt.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/Provider/yep.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/__main__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/cli.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/conversation.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/exceptions.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/litagent/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/litagent/agent.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/litagent/constants.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/litprinter/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/models.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/optimizers.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core/crawler.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core/scout.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core/search_result.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core/text_analyzer.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core/text_utils.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core/web_analyzer.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/core.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/element.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/parsers/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/parsers/html5lib_parser.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/parsers/html_parser.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/parsers/lxml_parser.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/scout/utils.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/swiftcli/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/tempid.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/update_checker.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/utils.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/yep_search.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/zeroart/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/zeroart/base.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/zeroart/effects.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout/zeroart/fonts.py +0 -0
- {webscout-7.9 → webscout-8.1}/webscout.egg-info/dependency_links.txt +0 -0
- {webscout-7.9 → webscout-8.1}/webscout.egg-info/entry_points.txt +0 -0
- {webscout-7.9 → webscout-8.1}/webscout.egg-info/requires.txt +0 -0
- {webscout-7.9 → webscout-8.1}/webscout.egg-info/top_level.txt +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/__init__.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/classifier.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/keywords.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/language.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/ner.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/normalizer.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/processor.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/sentiment.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/stemmer.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/tagger.py +0 -0
- {webscout-7.9 → webscout-8.1}/webstoken/tokenizer.py +0 -0
webscout-8.1/PKG-INFO
ADDED
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: webscout
|
|
3
|
+
Version: 8.1
|
|
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
|
+
Author: OEvortex
|
|
6
|
+
Author-email: helpingai5@gmail.com
|
|
7
|
+
License: HelpingAI
|
|
8
|
+
Project-URL: Source, https://github.com/OE-LUCIFER/Webscout
|
|
9
|
+
Project-URL: Tracker, https://github.com/OE-LUCIFER/Webscout/issues
|
|
10
|
+
Project-URL: YouTube, https://youtube.com/@OEvortex
|
|
11
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: License :: Other/Proprietary License
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
22
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Requires-Python: >=3.9
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
License-File: LICENSE.md
|
|
28
|
+
|
|
29
|
+
<div align="center">
|
|
30
|
+
<a href="https://github.com/OEvortex/Webscout">
|
|
31
|
+
<img src="https://img.shields.io/badge/WebScout-Ultimate%20Toolkit-blue?style=for-the-badge&logo=python&logoColor=white" alt="WebScout Logo">
|
|
32
|
+
</a>
|
|
33
|
+
|
|
34
|
+
<h1>Webscout</h1>
|
|
35
|
+
|
|
36
|
+
<p><strong>Your All-in-One Python Toolkit for Web Search, AI Interaction, Digital Utilities, and More</strong></p>
|
|
37
|
+
|
|
38
|
+
<p>
|
|
39
|
+
Access diverse search engines, cutting-edge AI models, temporary communication tools, media utilities, developer helpers, and powerful CLI interfaces – all through one unified library.
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
<!-- Badges -->
|
|
43
|
+
<p>
|
|
44
|
+
<a href="https://pypi.org/project/webscout/"><img src="https://img.shields.io/pypi/v/webscout.svg?style=flat-square&logo=pypi&label=PyPI" alt="PyPI Version"></a>
|
|
45
|
+
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout/month?style=flat-square" alt="Monthly Downloads"></a>
|
|
46
|
+
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout?style=flat-square" alt="Total Downloads"></a>
|
|
47
|
+
<a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout?style=flat-square&logo=python" alt="Python Version"></a>
|
|
48
|
+
</p>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
> [!IMPORTANT]
|
|
52
|
+
> Webscout supports two types of compatibility:
|
|
53
|
+
> - **Native Compatibility:** Webscout's own native API for maximum flexibility
|
|
54
|
+
> - **OpenAI Compatibility:** Use providers with OpenAI-compatible interfaces
|
|
55
|
+
>
|
|
56
|
+
> Choose the approach that best fits your needs! For OpenAI compatibility, check the [OpenAI Providers README](webscout/Provider/OPENAI/README.md).
|
|
57
|
+
|
|
58
|
+
> [!NOTE]
|
|
59
|
+
> Webscout supports over 90 AI providers including: LLAMA, C4ai, Venice, Copilot, HuggingFaceChat, PerplexityLabs, DeepSeek, WiseCat, GROQ, OPENAI, GEMINI, DeepInfra, Meta, YEPCHAT, TypeGPT, ChatGPTClone, ExaAI, Claude, Anthropic, Cloudflare, AI21, Cerebras, and many more. All providers follow similar usage patterns with consistent interfaces.
|
|
60
|
+
|
|
61
|
+
<div align="center">
|
|
62
|
+
<!-- Social/Support Links -->
|
|
63
|
+
<p>
|
|
64
|
+
<a href="https://t.me/PyscoutAI"><img alt="Telegram Group" src="https://img.shields.io/badge/Telegram%20Group-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
|
|
65
|
+
<a href="https://t.me/ANONYMOUS_56788"><img alt="Developer Telegram" src="https://img.shields.io/badge/Developer%20Contact-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
|
|
66
|
+
<a href="https://youtube.com/@OEvortex"><img alt="YouTube" src="https://img.shields.io/badge/YouTube-FF0000?style=for-the-badge&logo=youtube&logoColor=white"></a>
|
|
67
|
+
<a href="https://www.linkedin.com/in/oe-vortex-29a407265/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
|
|
68
|
+
<a href="https://www.instagram.com/oevortex/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
|
|
69
|
+
<a href="https://buymeacoffee.com/oevortex"><img alt="Buy Me A Coffee" src="https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=black"></a>
|
|
70
|
+
</p>
|
|
71
|
+
</div>
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
## 🚀 Features
|
|
75
|
+
|
|
76
|
+
### Search & AI
|
|
77
|
+
* **Comprehensive Search:** Leverage Google, DuckDuckGo, and Yep for diverse search results
|
|
78
|
+
* **AI Powerhouse:** Access and interact with various AI models through two compatibility options:
|
|
79
|
+
* **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
|
|
80
|
+
* **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
|
|
81
|
+
* **[AI Search](webscout/Provider/AISEARCH/README.md):** AI-powered search engines with advanced capabilities
|
|
82
|
+
|
|
83
|
+
### Media & Content Tools
|
|
84
|
+
* **[YouTube Toolkit](webscout/Extra/YTToolkit/README.md):** Advanced YouTube video and transcript management with multi-language support
|
|
85
|
+
* **[Text-to-Speech (TTS)](webscout/Provider/TTS/README.md):** Convert text into natural-sounding speech using multiple AI-powered providers
|
|
86
|
+
* **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
|
|
87
|
+
* **[Weather Tools](webscout/Extra/weather.md):** Retrieve detailed weather information for any location
|
|
88
|
+
|
|
89
|
+
### Developer Tools
|
|
90
|
+
* **[GitAPI](webscout/Extra/GitToolkit/gitapi):** Powerful GitHub data extraction toolkit without authentication requirements for public data
|
|
91
|
+
* **[SwiftCLI](webscout/swiftcli/Readme.md):** A powerful and elegant CLI framework for beautiful command-line interfaces
|
|
92
|
+
* **[LitPrinter](webscout/litprinter/Readme.md):** Styled console output with rich formatting and colors
|
|
93
|
+
* **[LitLogger](webscout/litlogger/Readme.md):** Simplified logging with customizable formats and color schemes
|
|
94
|
+
* **[LitAgent](webscout/litagent/Readme.md):** Modern user agent generator that keeps your requests undetectable
|
|
95
|
+
* **[Scout](webscout/scout/README.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
|
|
96
|
+
* **GGUF Conversion:** Convert and quantize Hugging Face models to GGUF format
|
|
97
|
+
|
|
98
|
+
### Privacy & Utilities
|
|
99
|
+
* **[Tempmail](webscout/Extra/tempmail/README.md) & Temp Number:** Generate temporary email addresses and phone numbers
|
|
100
|
+
* **[Awesome Prompts](webscout/Extra/Act.md):** Curated collection of system prompts for specialized AI personas
|
|
101
|
+
|
|
102
|
+
## ⚙️ Installation
|
|
103
|
+
|
|
104
|
+
Install Webscout using pip:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
pip install -U webscout
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## 🖥️ Command Line Interface
|
|
111
|
+
|
|
112
|
+
Webscout provides a powerful command-line interface for quick access to its features:
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
python -m webscout --help
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
| Command | Description |
|
|
119
|
+
|---------|-------------|
|
|
120
|
+
| `python -m webscout answers -k "query"` | Perform an answers search |
|
|
121
|
+
| `python -m webscout chat` | Start an interactive AI chat session |
|
|
122
|
+
| `python -m webscout images -k "query"` | Search for images |
|
|
123
|
+
| `python -m webscout maps -k "query"` | Perform a maps search |
|
|
124
|
+
| `python -m webscout news -k "query"` | Search for news articles |
|
|
125
|
+
| `python -m webscout suggestions -k "query"` | Get search suggestions |
|
|
126
|
+
| `python -m webscout text -k "query"` | Perform a text search |
|
|
127
|
+
| `python -m webscout translate -k "text"` | Translate text |
|
|
128
|
+
| `python -m webscout version` | Display the current version |
|
|
129
|
+
| `python -m webscout videos -k "query"` | Search for videos |
|
|
130
|
+
| `python -m webscout weather -l "location"` | Get weather information |
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
## 🔍 Search Engines
|
|
135
|
+
|
|
136
|
+
Webscout provides multiple search engine interfaces for diverse search capabilities.
|
|
137
|
+
|
|
138
|
+
### YepSearch - Yep.com Interface
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from webscout import YepSearch
|
|
142
|
+
|
|
143
|
+
# Initialize YepSearch
|
|
144
|
+
yep = YepSearch(
|
|
145
|
+
timeout=20, # Optional: Set custom timeout
|
|
146
|
+
proxies=None, # Optional: Use proxies
|
|
147
|
+
verify=True # Optional: SSL verification
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
# Text Search
|
|
151
|
+
text_results = yep.text(
|
|
152
|
+
keywords="artificial intelligence",
|
|
153
|
+
region="all", # Optional: Region for results
|
|
154
|
+
safesearch="moderate", # Optional: "on", "moderate", "off"
|
|
155
|
+
max_results=10 # Optional: Limit number of results
|
|
156
|
+
)
|
|
157
|
+
|
|
158
|
+
# Image Search
|
|
159
|
+
image_results = yep.images(
|
|
160
|
+
keywords="nature photography",
|
|
161
|
+
region="all",
|
|
162
|
+
safesearch="moderate",
|
|
163
|
+
max_results=10
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
# Get search suggestions
|
|
167
|
+
suggestions = yep.suggestions("hist")
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### GoogleSearch - Google Interface
|
|
171
|
+
|
|
172
|
+
```python
|
|
173
|
+
from webscout import GoogleSearch
|
|
174
|
+
|
|
175
|
+
# Initialize GoogleSearch
|
|
176
|
+
google = GoogleSearch(
|
|
177
|
+
timeout=10, # Optional: Set custom timeout
|
|
178
|
+
proxies=None, # Optional: Use proxies
|
|
179
|
+
verify=True # Optional: SSL verification
|
|
180
|
+
)
|
|
181
|
+
|
|
182
|
+
# Text Search
|
|
183
|
+
text_results = google.text(
|
|
184
|
+
keywords="artificial intelligence",
|
|
185
|
+
region="us", # Optional: Region for results
|
|
186
|
+
safesearch="moderate", # Optional: "on", "moderate", "off"
|
|
187
|
+
max_results=10 # Optional: Limit number of results
|
|
188
|
+
)
|
|
189
|
+
for result in text_results:
|
|
190
|
+
print(f"Title: {result.title}")
|
|
191
|
+
print(f"URL: {result.url}")
|
|
192
|
+
print(f"Description: {result.description}")
|
|
193
|
+
|
|
194
|
+
# News Search
|
|
195
|
+
news_results = google.news(
|
|
196
|
+
keywords="technology trends",
|
|
197
|
+
region="us",
|
|
198
|
+
safesearch="moderate",
|
|
199
|
+
max_results=5
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
# Get search suggestions
|
|
203
|
+
suggestions = google.suggestions("how to")
|
|
204
|
+
|
|
205
|
+
# Legacy usage is still supported
|
|
206
|
+
from webscout import search
|
|
207
|
+
results = search("Python programming", num_results=5)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## 🦆 DuckDuckGo Search with WEBS and AsyncWEBS
|
|
211
|
+
|
|
212
|
+
Webscout provides powerful interfaces to DuckDuckGo's search capabilities through the `WEBS` and `AsyncWEBS` classes.
|
|
213
|
+
|
|
214
|
+
### Synchronous Usage with WEBS
|
|
215
|
+
|
|
216
|
+
```python
|
|
217
|
+
from webscout import WEBS
|
|
218
|
+
|
|
219
|
+
# Use as a context manager for proper resource management
|
|
220
|
+
with WEBS() as webs:
|
|
221
|
+
# Simple text search
|
|
222
|
+
results = webs.text("python programming", max_results=5)
|
|
223
|
+
for result in results:
|
|
224
|
+
print(f"Title: {result['title']}\nURL: {result['url']}")
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Asynchronous Usage with AsyncWEBS
|
|
228
|
+
|
|
229
|
+
```python
|
|
230
|
+
import asyncio
|
|
231
|
+
from webscout import AsyncWEBS
|
|
232
|
+
|
|
233
|
+
async def search_multiple_terms(search_terms):
|
|
234
|
+
async with AsyncWEBS() as webs:
|
|
235
|
+
# Create tasks for each search term
|
|
236
|
+
tasks = [webs.text(term, max_results=5) for term in search_terms]
|
|
237
|
+
# Run all searches concurrently
|
|
238
|
+
results = await asyncio.gather(*tasks)
|
|
239
|
+
return results
|
|
240
|
+
|
|
241
|
+
async def main():
|
|
242
|
+
terms = ["python", "javascript", "machine learning"]
|
|
243
|
+
all_results = await search_multiple_terms(terms)
|
|
244
|
+
|
|
245
|
+
# Process results
|
|
246
|
+
for i, term_results in enumerate(all_results):
|
|
247
|
+
print(f"Results for '{terms[i]}':\n")
|
|
248
|
+
for result in term_results:
|
|
249
|
+
print(f"- {result['title']}")
|
|
250
|
+
print("\n")
|
|
251
|
+
|
|
252
|
+
# Run the async function
|
|
253
|
+
asyncio.run(main())
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
> [!NOTE]
|
|
257
|
+
> Always use these classes with a context manager (`with` statement) to ensure proper resource management and cleanup.
|
|
258
|
+
|
|
259
|
+
## 💻 WEBS API Reference
|
|
260
|
+
|
|
261
|
+
The WEBS class provides comprehensive access to DuckDuckGo's search capabilities through a clean, intuitive API.
|
|
262
|
+
|
|
263
|
+
### Available Search Methods
|
|
264
|
+
|
|
265
|
+
| Method | Description | Example |
|
|
266
|
+
|--------|-------------|--------|
|
|
267
|
+
| `text()` | General web search | `webs.text('python programming')` |
|
|
268
|
+
| `answers()` | Instant answers | `webs.answers('population of france')` |
|
|
269
|
+
| `images()` | Image search | `webs.images('nature photography')` |
|
|
270
|
+
| `videos()` | Video search | `webs.videos('documentary')` |
|
|
271
|
+
| `news()` | News articles | `webs.news('technology')` |
|
|
272
|
+
| `maps()` | Location search | `webs.maps('restaurants', place='new york')` |
|
|
273
|
+
| `translate()` | Text translation | `webs.translate('hello', to='es')` |
|
|
274
|
+
| `suggestions()` | Search suggestions | `webs.suggestions('how to')` |
|
|
275
|
+
| `weather()` | Weather information | `webs.weather('london')` |
|
|
276
|
+
|
|
277
|
+
### Example: Text Search
|
|
278
|
+
|
|
279
|
+
```python
|
|
280
|
+
from webscout import WEBS
|
|
281
|
+
|
|
282
|
+
with WEBS() as webs:
|
|
283
|
+
results = webs.text(
|
|
284
|
+
'artificial intelligence',
|
|
285
|
+
region='wt-wt', # Optional: Region for results
|
|
286
|
+
safesearch='off', # Optional: 'on', 'moderate', 'off'
|
|
287
|
+
timelimit='y', # Optional: Time limit ('d'=day, 'w'=week, 'm'=month, 'y'=year)
|
|
288
|
+
max_results=10 # Optional: Limit number of results
|
|
289
|
+
)
|
|
290
|
+
|
|
291
|
+
for result in results:
|
|
292
|
+
print(f"Title: {result['title']}")
|
|
293
|
+
print(f"URL: {result['url']}")
|
|
294
|
+
print(f"Description: {result['body']}\n")
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Example: News Search with Formatting
|
|
298
|
+
|
|
299
|
+
```python
|
|
300
|
+
from webscout import WEBS
|
|
301
|
+
import datetime
|
|
302
|
+
|
|
303
|
+
def fetch_formatted_news(keywords, timelimit='d', max_results=20):
|
|
304
|
+
"""Fetch and format news articles"""
|
|
305
|
+
with WEBS() as webs:
|
|
306
|
+
# Get news results
|
|
307
|
+
news_results = webs.news(
|
|
308
|
+
keywords,
|
|
309
|
+
region="wt-wt",
|
|
310
|
+
safesearch="off",
|
|
311
|
+
timelimit=timelimit, # 'd'=day, 'w'=week, 'm'=month
|
|
312
|
+
max_results=max_results
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
# Format the results
|
|
316
|
+
formatted_news = []
|
|
317
|
+
for i, item in enumerate(news_results, 1):
|
|
318
|
+
# Format the date
|
|
319
|
+
date = datetime.datetime.fromisoformat(item['date']).strftime('%B %d, %Y')
|
|
320
|
+
|
|
321
|
+
# Create formatted entry
|
|
322
|
+
entry = f"{i}. {item['title']}\n"
|
|
323
|
+
entry += f" Published: {date}\n"
|
|
324
|
+
entry += f" {item['body']}\n"
|
|
325
|
+
entry += f" URL: {item['url']}\n"
|
|
326
|
+
|
|
327
|
+
formatted_news.append(entry)
|
|
328
|
+
|
|
329
|
+
return formatted_news
|
|
330
|
+
|
|
331
|
+
# Example usage
|
|
332
|
+
news = fetch_formatted_news('artificial intelligence', timelimit='w', max_results=5)
|
|
333
|
+
print('\n'.join(news))
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Example: Weather Information
|
|
337
|
+
|
|
338
|
+
```python
|
|
339
|
+
from webscout import WEBS
|
|
340
|
+
|
|
341
|
+
with WEBS() as webs:
|
|
342
|
+
# Get weather for a location
|
|
343
|
+
weather = webs.weather("New York")
|
|
344
|
+
|
|
345
|
+
# Access weather data
|
|
346
|
+
if weather:
|
|
347
|
+
print(f"Location: {weather.get('location', 'Unknown')}")
|
|
348
|
+
print(f"Temperature: {weather.get('temperature', 'N/A')}")
|
|
349
|
+
print(f"Conditions: {weather.get('condition', 'N/A')}")
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
## 🤖 AI Models and Voices
|
|
353
|
+
|
|
354
|
+
Webscout provides easy access to a wide range of AI models and voice options.
|
|
355
|
+
|
|
356
|
+
### LLM Models
|
|
357
|
+
|
|
358
|
+
Access and manage Large Language Models with Webscout's model utilities.
|
|
359
|
+
|
|
360
|
+
```python
|
|
361
|
+
from webscout import model
|
|
362
|
+
from rich import print
|
|
363
|
+
|
|
364
|
+
# List all available LLM models
|
|
365
|
+
all_models = model.llm.list()
|
|
366
|
+
print(f"Total available models: {len(all_models)}")
|
|
367
|
+
|
|
368
|
+
# Get a summary of models by provider
|
|
369
|
+
summary = model.llm.summary()
|
|
370
|
+
print("Models by provider:")
|
|
371
|
+
for provider, count in summary.items():
|
|
372
|
+
print(f" {provider}: {count} models")
|
|
373
|
+
|
|
374
|
+
# Get models for a specific provider
|
|
375
|
+
provider_name = "PerplexityLabs"
|
|
376
|
+
available_models = model.llm.get(provider_name)
|
|
377
|
+
print(f"\n{provider_name} models:")
|
|
378
|
+
if isinstance(available_models, list):
|
|
379
|
+
for i, model_name in enumerate(available_models, 1):
|
|
380
|
+
print(f" {i}. {model_name}")
|
|
381
|
+
else:
|
|
382
|
+
print(f" {available_models}")
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### TTS Voices
|
|
386
|
+
|
|
387
|
+
Access and manage Text-to-Speech voices across multiple providers.
|
|
388
|
+
|
|
389
|
+
```python
|
|
390
|
+
from webscout import model
|
|
391
|
+
from rich import print
|
|
392
|
+
|
|
393
|
+
# List all available TTS voices
|
|
394
|
+
all_voices = model.tts.list()
|
|
395
|
+
print(f"Total available voices: {len(all_voices)}")
|
|
396
|
+
|
|
397
|
+
# Get a summary of voices by provider
|
|
398
|
+
summary = model.tts.summary()
|
|
399
|
+
print("\nVoices by provider:")
|
|
400
|
+
for provider, count in summary.items():
|
|
401
|
+
print(f" {provider}: {count} voices")
|
|
402
|
+
|
|
403
|
+
# Get voices for a specific provider
|
|
404
|
+
provider_name = "ElevenlabsTTS"
|
|
405
|
+
available_voices = model.tts.get(provider_name)
|
|
406
|
+
print(f"\n{provider_name} voices:")
|
|
407
|
+
if isinstance(available_voices, dict):
|
|
408
|
+
for voice_name, voice_id in list(available_voices.items())[:5]: # Show first 5 voices
|
|
409
|
+
print(f" - {voice_name}: {voice_id}")
|
|
410
|
+
if len(available_voices) > 5:
|
|
411
|
+
print(f" ... and {len(available_voices) - 5} more")
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
## 💬 AI Chat Providers
|
|
415
|
+
|
|
416
|
+
Webscout offers a comprehensive collection of AI chat providers, giving you access to various language models through a consistent interface.
|
|
417
|
+
|
|
418
|
+
### Popular AI Providers
|
|
419
|
+
|
|
420
|
+
| Provider | Description | Key Features |
|
|
421
|
+
|----------|-------------|-------------|
|
|
422
|
+
| `OPENAI` | OpenAI's models | GPT-3.5, GPT-4, tool calling |
|
|
423
|
+
| `GEMINI` | Google's Gemini models | Web search capabilities |
|
|
424
|
+
| `Meta` | Meta's AI assistant | Image generation, web search |
|
|
425
|
+
| `GROQ` | Fast inference platform | High-speed inference, tool calling |
|
|
426
|
+
| `LLAMA` | Meta's Llama models | Open weights models |
|
|
427
|
+
| `DeepInfra` | Various open models | Multiple model options |
|
|
428
|
+
| `Cohere` | Cohere's language models | Command models |
|
|
429
|
+
| `PerplexityLabs` | Perplexity AI | Web search integration |
|
|
430
|
+
| `Anthropic` | Claude models | Long context windows |
|
|
431
|
+
| `YEPCHAT` | Yep.com's AI | Streaming responses |
|
|
432
|
+
| `ChatGPTClone` | ChatGPT-like interface | Multiple model options |
|
|
433
|
+
| `TypeGPT` | TypeChat models | Code generation focus |
|
|
434
|
+
|
|
435
|
+
### Example: Using Duckchat
|
|
436
|
+
|
|
437
|
+
```python
|
|
438
|
+
from webscout import WEBS
|
|
439
|
+
|
|
440
|
+
# Initialize and use Duckchat
|
|
441
|
+
with WEBS() as webs:
|
|
442
|
+
response = webs.chat(
|
|
443
|
+
"Explain quantum computing in simple terms",
|
|
444
|
+
model='gpt-4o-mini' # Options: mixtral-8x7b, llama-3.1-70b, claude-3-haiku, etc.
|
|
445
|
+
)
|
|
446
|
+
print(response)
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
### Example: Using Meta AI
|
|
450
|
+
|
|
451
|
+
```python
|
|
452
|
+
from webscout import Meta
|
|
453
|
+
|
|
454
|
+
# For basic usage (no authentication required)
|
|
455
|
+
meta_ai = Meta()
|
|
456
|
+
|
|
457
|
+
# Simple text prompt
|
|
458
|
+
response = meta_ai.chat("What is the capital of France?")
|
|
459
|
+
print(response)
|
|
460
|
+
|
|
461
|
+
# For authenticated usage with web search and image generation
|
|
462
|
+
meta_ai = Meta(fb_email="your_email@example.com", fb_password="your_password")
|
|
463
|
+
|
|
464
|
+
# Text prompt with web search
|
|
465
|
+
response = meta_ai.ask("What are the latest developments in quantum computing?")
|
|
466
|
+
print(response["message"])
|
|
467
|
+
print("Sources:", response["sources"])
|
|
468
|
+
|
|
469
|
+
# Image generation
|
|
470
|
+
response = meta_ai.ask("Create an image of a futuristic city")
|
|
471
|
+
for media in response.get("media", []):
|
|
472
|
+
print(media["url"])
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
### Example: GROQ with Tool Calling
|
|
476
|
+
|
|
477
|
+
```python
|
|
478
|
+
from webscout import GROQ, WEBS
|
|
479
|
+
import json
|
|
480
|
+
|
|
481
|
+
# Initialize GROQ client
|
|
482
|
+
client = GROQ(api_key="your_api_key")
|
|
483
|
+
|
|
484
|
+
# Define helper functions
|
|
485
|
+
def calculate(expression):
|
|
486
|
+
"""Evaluate a mathematical expression"""
|
|
487
|
+
try:
|
|
488
|
+
result = eval(expression)
|
|
489
|
+
return json.dumps({"result": result})
|
|
490
|
+
except Exception as e:
|
|
491
|
+
return json.dumps({"error": str(e)})
|
|
492
|
+
|
|
493
|
+
def search(query):
|
|
494
|
+
"""Perform a web search"""
|
|
495
|
+
try:
|
|
496
|
+
results = WEBS().text(query, max_results=3)
|
|
497
|
+
return json.dumps({"results": results})
|
|
498
|
+
except Exception as e:
|
|
499
|
+
return json.dumps({"error": str(e)})
|
|
500
|
+
|
|
501
|
+
# Register functions with GROQ
|
|
502
|
+
client.add_function("calculate", calculate)
|
|
503
|
+
client.add_function("search", search)
|
|
504
|
+
|
|
505
|
+
# Define tool specifications
|
|
506
|
+
tools = [
|
|
507
|
+
{
|
|
508
|
+
"type": "function",
|
|
509
|
+
"function": {
|
|
510
|
+
"name": "calculate",
|
|
511
|
+
"description": "Evaluate a mathematical expression",
|
|
512
|
+
"parameters": {
|
|
513
|
+
"type": "object",
|
|
514
|
+
"properties": {
|
|
515
|
+
"expression": {
|
|
516
|
+
"type": "string",
|
|
517
|
+
"description": "The mathematical expression to evaluate"
|
|
518
|
+
}
|
|
519
|
+
},
|
|
520
|
+
"required": ["expression"]
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"type": "function",
|
|
526
|
+
"function": {
|
|
527
|
+
"name": "search",
|
|
528
|
+
"description": "Perform a web search",
|
|
529
|
+
"parameters": {
|
|
530
|
+
"type": "object",
|
|
531
|
+
"properties": {
|
|
532
|
+
"query": {
|
|
533
|
+
"type": "string",
|
|
534
|
+
"description": "The search query"
|
|
535
|
+
}
|
|
536
|
+
},
|
|
537
|
+
"required": ["query"]
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
]
|
|
542
|
+
|
|
543
|
+
# Use the tools
|
|
544
|
+
response = client.chat("What is 25 * 4 + 10?", tools=tools)
|
|
545
|
+
print(response)
|
|
546
|
+
|
|
547
|
+
response = client.chat("Find information about quantum computing", tools=tools)
|
|
548
|
+
print(response)
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
## 👨💻 Advanced AI Interfaces
|
|
552
|
+
|
|
553
|
+
### Direct Model Access with LLM and VLM
|
|
554
|
+
|
|
555
|
+
Webscout provides direct interfaces to language and vision-language models through the `LLM` and `VLM` classes.
|
|
556
|
+
|
|
557
|
+
```python
|
|
558
|
+
from webscout.LLM import LLM, VLM
|
|
559
|
+
|
|
560
|
+
# Text-only model interaction
|
|
561
|
+
llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct")
|
|
562
|
+
response = llm.chat([
|
|
563
|
+
{"role": "user", "content": "Explain the concept of neural networks"}
|
|
564
|
+
])
|
|
565
|
+
print(response)
|
|
566
|
+
|
|
567
|
+
# Vision-language model interaction
|
|
568
|
+
vlm = VLM("cogvlm-grounding-generalist")
|
|
569
|
+
response = vlm.chat([
|
|
570
|
+
{
|
|
571
|
+
"role": "user",
|
|
572
|
+
"content": [
|
|
573
|
+
{"type": "image", "image_url": "path/to/image.jpg"},
|
|
574
|
+
{"type": "text", "text": "Describe what you see in this image"}
|
|
575
|
+
]
|
|
576
|
+
}
|
|
577
|
+
])
|
|
578
|
+
print(response)
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
### GGUF Model Conversion
|
|
582
|
+
|
|
583
|
+
Webscout provides tools to convert and quantize Hugging Face models into the GGUF format for offline use.
|
|
584
|
+
|
|
585
|
+
```python
|
|
586
|
+
from webscout.Extra.gguf import ModelConverter
|
|
587
|
+
|
|
588
|
+
# Create a converter instance
|
|
589
|
+
converter = ModelConverter(
|
|
590
|
+
model_id="mistralai/Mistral-7B-Instruct-v0.2", # Hugging Face model ID
|
|
591
|
+
quantization_methods="q4_k_m" # Quantization method
|
|
592
|
+
)
|
|
593
|
+
|
|
594
|
+
# Run the conversion
|
|
595
|
+
converter.convert()
|
|
596
|
+
```
|
|
597
|
+
|
|
598
|
+
#### Available Quantization Methods
|
|
599
|
+
|
|
600
|
+
| Method | Description |
|
|
601
|
+
|--------|-------------|
|
|
602
|
+
| `fp16` | 16-bit floating point - maximum accuracy, largest size |
|
|
603
|
+
| `q2_k` | 2-bit quantization (smallest size, lowest accuracy) |
|
|
604
|
+
| `q3_k_l` | 3-bit quantization (large) - balanced for size/accuracy |
|
|
605
|
+
| `q3_k_m` | 3-bit quantization (medium) - good balance for most use cases |
|
|
606
|
+
| `q3_k_s` | 3-bit quantization (small) - optimized for speed |
|
|
607
|
+
| `q4_0` | 4-bit quantization (version 0) - standard 4-bit compression |
|
|
608
|
+
| `q4_1` | 4-bit quantization (version 1) - improved accuracy over q4_0 |
|
|
609
|
+
| `q4_k_m` | 4-bit quantization (medium) - balanced for most models |
|
|
610
|
+
| `q4_k_s` | 4-bit quantization (small) - optimized for speed |
|
|
611
|
+
| `q5_0` | 5-bit quantization (version 0) - high accuracy, larger size |
|
|
612
|
+
| `q5_1` | 5-bit quantization (version 1) - improved accuracy over q5_0 |
|
|
613
|
+
| `q5_k_m` | 5-bit quantization (medium) - best balance for quality/size |
|
|
614
|
+
| `q5_k_s` | 5-bit quantization (small) - optimized for speed |
|
|
615
|
+
| `q6_k` | 6-bit quantization - highest accuracy, largest size |
|
|
616
|
+
| `q8_0` | 8-bit quantization - maximum accuracy, largest size |
|
|
617
|
+
|
|
618
|
+
#### Command Line Usage
|
|
619
|
+
|
|
620
|
+
```bash
|
|
621
|
+
python -m webscout.Extra.gguf convert -m "mistralai/Mistral-7B-Instruct-v0.2" -q "q4_k_m"
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
<div align="center">
|
|
625
|
+
<p>
|
|
626
|
+
<a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a> |
|
|
627
|
+
<a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
|
|
628
|
+
</p>
|
|
629
|
+
</div>
|
|
630
|
+
|
|
631
|
+
## 🤝 Contributing
|
|
632
|
+
|
|
633
|
+
Contributions are welcome! If you'd like to contribute to Webscout, please follow these steps:
|
|
634
|
+
|
|
635
|
+
1. Fork the repository
|
|
636
|
+
2. Create a new branch for your feature or bug fix
|
|
637
|
+
3. Make your changes and commit them with descriptive messages
|
|
638
|
+
4. Push your branch to your forked repository
|
|
639
|
+
5. Submit a pull request to the main repository
|
|
640
|
+
|
|
641
|
+
## 🙏 Acknowledgments
|
|
642
|
+
|
|
643
|
+
* All the amazing developers who have contributed to the project
|
|
644
|
+
* The open-source community for their support and inspiration
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
<div align="center">
|
|
649
|
+
<p>Made with ❤️ by the Webscout team</p>
|
|
650
|
+
</div>
|