webscout 2025.10.15__tar.gz → 2025.10.16__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of webscout might be problematic. Click here for more details.
- {webscout-2025.10.15/webscout.egg-info → webscout-2025.10.16}/PKG-INFO +10 -52
- {webscout-2025.10.15 → webscout-2025.10.16}/README.md +9 -49
- {webscout-2025.10.15 → webscout-2025.10.16}/changelog.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/pyproject.toml +2 -4
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/README.md +1 -1
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/README.md +3 -3
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/README.md +1 -1
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/bing.py +4 -4
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/__init__.py +1 -1
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/client.py +4 -5
- webscout-2025.10.16/webscout/litprinter/__init__.py +17 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/README.md +59 -8
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/core/scout.py +62 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/element.py +251 -45
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/__init__.py +3 -4
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/bing/images.py +5 -2
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/bing/news.py +6 -4
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/bing/text.py +5 -2
- webscout-2025.10.16/webscout/search/engines/yahoo/__init__.py +41 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/answers.py +16 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/base.py +34 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/images.py +324 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/maps.py +16 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/news.py +258 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/suggestions.py +140 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/text.py +273 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/translate.py +16 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/videos.py +302 -0
- webscout-2025.10.16/webscout/search/engines/yahoo/weather.py +220 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/http_client.py +1 -1
- webscout-2025.10.16/webscout/search/yahoo_main.py +54 -0
- {webscout-2025.10.15/webscout/auth → webscout-2025.10.16/webscout/server}/__init__.py +2 -23
- webscout-2025.10.16/webscout/server/config.py +84 -0
- {webscout-2025.10.15/webscout/auth → webscout-2025.10.16/webscout/server}/request_processing.py +3 -28
- {webscout-2025.10.15/webscout/auth → webscout-2025.10.16/webscout/server}/routes.py +6 -148
- webscout-2025.10.16/webscout/server/schemas.py +23 -0
- {webscout-2025.10.15/webscout/auth → webscout-2025.10.16/webscout/server}/server.py +11 -43
- webscout-2025.10.16/webscout/server/simple_logger.py +84 -0
- webscout-2025.10.16/webscout/version.py +2 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/zeroart/README.md +17 -9
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/zeroart/__init__.py +78 -6
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/zeroart/effects.py +51 -1
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/zeroart/fonts.py +559 -1
- {webscout-2025.10.15 → webscout-2025.10.16/webscout.egg-info}/PKG-INFO +10 -52
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout.egg-info/SOURCES.txt +44 -36
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout.egg-info/entry_points.txt +1 -1
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout.egg-info/requires.txt +0 -2
- webscout-2025.10.15/webscout/auth/api_key_manager.py +0 -189
- webscout-2025.10.15/webscout/auth/auth_system.py +0 -85
- webscout-2025.10.15/webscout/auth/config.py +0 -175
- webscout-2025.10.15/webscout/auth/database.py +0 -755
- webscout-2025.10.15/webscout/auth/middleware.py +0 -248
- webscout-2025.10.15/webscout/auth/models.py +0 -185
- webscout-2025.10.15/webscout/auth/rate_limiter.py +0 -254
- webscout-2025.10.15/webscout/auth/schemas.py +0 -103
- webscout-2025.10.15/webscout/auth/simple_logger.py +0 -236
- webscout-2025.10.15/webscout/litprinter/__init__.py +0 -59
- webscout-2025.10.15/webscout/search/engines/yahoo.py +0 -65
- webscout-2025.10.15/webscout/search/engines/yahoo_news.py +0 -64
- webscout-2025.10.15/webscout/version.py.bak +0 -2
- {webscout-2025.10.15 → webscout-2025.10.16}/LEGAL_NOTICE.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/LICENSE.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/MANIFEST.in +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/setup.cfg +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/AIauto.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/AIbase.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/AIutel.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Bard.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/Act.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/GitToolkit/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/README.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/repository.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/user.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/GitToolkit/gitapi/utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/YTdownloader.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/transcriber.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/README.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/channel.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/playlist.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/pool.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/YTToolkit/ytapi/video.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/autocoder/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/autocoder/autocoder.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/autocoder/autocoder_utiles.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/gguf.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/gguf.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/async_utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/cli.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/emailnator.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/mail_tm.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/tempmail/temp_mail_io.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/weather.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/weather.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Extra/weather_ascii.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Litlogger/README.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Litlogger/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Litlogger/formats.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Litlogger/handlers.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Litlogger/levels.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Litlogger/logger.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/PERPLEXED_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/Perplexity.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/README.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/felo_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/genspark_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/hika_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/iask_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/monica_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/scira_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/stellar_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/AISEARCH/webpilotai_search.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Aitopia.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Andi.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Apriel.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/ChatGPTClone.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/ChatSandbox.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Cloudflare.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Cohere.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Deepinfra.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/ExaAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/ExaChat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Flowith.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/GMI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Gemini.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/GeminiProxy.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/GithubChat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Groq.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/HeckAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Jadve.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/K2Think.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Koboldai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/LambdaChat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Nemotron.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Netwrck.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OLLAMA.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/Cloudflare.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/FalconH1.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/FreeGemini.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/GeminiProxy.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/K2Think.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/NEMOTRON.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/PI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/TogetherAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/TwoAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/ai4chat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatglm.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatgpt.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatgptclone.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/chatsandbox.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/deepinfra.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/e2b.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/exaai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/exachat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/flowith.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/friendli.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/generate_api_key.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/gmi.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/groq.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/heckai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/llmchatco.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/netwrck.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/oivscode.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/opkfc.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/pydantic_imports.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/scirachat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/sonus.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/standardinput.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/textpollinations.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/toolbaz.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/typefully.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/venice.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/wisecat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/writecream.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/x0gpt.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OPENAI/yep.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/OpenGPT.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Openai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/PI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Perplexitylabs.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/QwenLM.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/STT/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/STT/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/STT/elevenlabs.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Sambanova.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/StandardInput.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/README.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/aiarta.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/gpt1image.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/imagen.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/infip.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/magicstudio.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/monochat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/piclumen.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/pixelmuse.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/pollinations.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/together.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTI/venice.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/README.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/deepgram.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/elevenlabs.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/freetts.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/gesserit.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/murfai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/openai_fm.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/parler.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/speechma.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/streamElements.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TTS/utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TeachAnything.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TextPollinationsAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TogetherAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TwoAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/TypliAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/ChatHub.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/ChutesAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/GizAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/Marcus.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/Qodo.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/VercelAIGateway.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/XenAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/Youchat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/liner.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/liner_api_request.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/puterjs.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/samurai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/UNFINISHED/test_lmarena.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/Venice.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/VercelAI.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/WiseCat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/WrDoChat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/ai4chat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/akashgpt.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/cerebras.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/chatglm.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/cleeai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/deepseek_assistant.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/elmo.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/geminiapi.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/granite.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/hermes.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/julius.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/learnfastai.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/llama3mitril.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/llmchat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/llmchatco.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/meta.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/oivscode.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/scira_chat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/searchchat.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/sonus.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/toolbaz.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/turboseek.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/typefully.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/x0gpt.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/Provider/yep.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/__main__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/cli.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/conversation.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/exceptions.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/litagent/Readme.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/litagent/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/litagent/agent.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/litagent/constants.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/models.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/optimizers.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/prompt_manager.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/sanitize.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/core/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/core/crawler.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/core/search_result.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/core/text_analyzer.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/core/text_utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/core/web_analyzer.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/parsers/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/parsers/html5lib_parser.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/parsers/html_parser.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/parsers/lxml_parser.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/scout/utils.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/bing_main.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/duckduckgo_main.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/bing/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/bing/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/bing/suggestions.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/brave.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/answers.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/images.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/maps.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/news.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/suggestions.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/text.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/translate.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/videos.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/duckduckgo/weather.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/mojeek.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/wikipedia.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/yandex.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/yep/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/yep/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/yep/images.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/yep/suggestions.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/engines/yep/text.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/results.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/search/yep_main.py +0 -0
- {webscout-2025.10.15/webscout/auth → webscout-2025.10.16/webscout/server}/exceptions.py +0 -0
- {webscout-2025.10.15/webscout/auth → webscout-2025.10.16/webscout/server}/providers.py +0 -0
- {webscout-2025.10.15/webscout/auth → webscout-2025.10.16/webscout/server}/request_models.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/Readme.md +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/core/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/core/cli.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/core/context.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/core/group.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/decorators/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/decorators/command.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/decorators/options.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/decorators/output.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/exceptions.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/plugins/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/plugins/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/plugins/manager.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/utils/__init__.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/utils/formatting.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/swiftcli/utils/parsing.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/update_checker.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/utils.py +0 -0
- /webscout-2025.10.15/webscout/version.py → /webscout-2025.10.16/webscout/version.py.bak +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout/zeroart/base.py +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout.egg-info/dependency_links.txt +0 -0
- {webscout-2025.10.15 → webscout-2025.10.16}/webscout.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: webscout
|
|
3
|
-
Version: 2025.10.
|
|
3
|
+
Version: 2025.10.16
|
|
4
4
|
Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
|
|
5
5
|
Author-email: OEvortex <helpingai5@gmail.com>
|
|
6
6
|
License: HelpingAI
|
|
@@ -70,15 +70,13 @@ Requires-Dist: uvicorn[standard]; extra == "api"
|
|
|
70
70
|
Requires-Dist: pydantic; extra == "api"
|
|
71
71
|
Requires-Dist: python-multipart; extra == "api"
|
|
72
72
|
Requires-Dist: tiktoken; extra == "api"
|
|
73
|
-
Requires-Dist: motor; extra == "api"
|
|
74
73
|
Requires-Dist: jinja2; extra == "api"
|
|
75
|
-
Requires-Dist: supabase; extra == "api"
|
|
76
74
|
Requires-Dist: websockets>=11.0; extra == "api"
|
|
77
75
|
Requires-Dist: starlette; extra == "api"
|
|
78
76
|
Dynamic: license-file
|
|
79
77
|
|
|
80
78
|
<div align="center">
|
|
81
|
-
<a href="https://github.com/
|
|
79
|
+
<a href="https://github.com/pyscout/Webscout">
|
|
82
80
|
<img src="https://img.shields.io/badge/WebScout-Ultimate%20Toolkit-blue?style=for-the-badge&logo=python&logoColor=white" alt="WebScout Logo">
|
|
83
81
|
</a>
|
|
84
82
|
|
|
@@ -96,7 +94,7 @@ Dynamic: license-file
|
|
|
96
94
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout/month?style=flat-square" alt="Monthly Downloads"></a>
|
|
97
95
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout?style=flat-square" alt="Total Downloads"></a>
|
|
98
96
|
<a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout?style=flat-square&logo=python" alt="Python Version"></a>
|
|
99
|
-
<a href="https://deepwiki.com/
|
|
97
|
+
<a href="https://deepwiki.com/pyscout/Webscout"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
|
|
100
98
|
</p>
|
|
101
99
|
</div>
|
|
102
100
|
|
|
@@ -108,6 +106,7 @@ Dynamic: license-file
|
|
|
108
106
|
- [⚙️ Installation](#️-installation)
|
|
109
107
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
110
108
|
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
109
|
+
- [🕸️ Scout: HTML Parser & Web Crawler](docs/scout.md)
|
|
111
110
|
- [🤖 AI Models and Voices](#-ai-models-and-voices)
|
|
112
111
|
- [💬 AI Chat Providers](#-ai-chat-providers)
|
|
113
112
|
- [👨💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
|
|
@@ -121,7 +120,7 @@ Dynamic: license-file
|
|
|
121
120
|
>
|
|
122
121
|
> - **Native Compatibility:** Webscout's own native API for maximum flexibility
|
|
123
122
|
> - **OpenAI Compatibility:** Use providers with OpenAI-compatible interfaces
|
|
124
|
-
> - **Local LLM Compatibility:** Run local models with
|
|
123
|
+
> - **Local LLM Compatibility:** Run local models with OpenAI-compatible servers
|
|
125
124
|
>
|
|
126
125
|
> Choose the approach that best fits your needs! For OpenAI compatibility, check the [OpenAI Providers README](webscout/Provider/OPENAI/README.md) or see the [OpenAI-Compatible API Server](#-openai-compatible-api-server) section below.
|
|
127
126
|
|
|
@@ -152,7 +151,7 @@ Dynamic: license-file
|
|
|
152
151
|
- **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
|
|
153
152
|
- **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
|
|
154
153
|
- **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
|
|
155
|
-
- **
|
|
154
|
+
- **Local LLMs:** Run local models with OpenAI-compatible servers (see [Inferno documentation](docs/inferno.md))
|
|
156
155
|
- **[AI Search](webscout/Provider/AISEARCH/README.md):** AI-powered search engines with advanced capabilities
|
|
157
156
|
</p>
|
|
158
157
|
</details>
|
|
@@ -177,8 +176,7 @@ Dynamic: license-file
|
|
|
177
176
|
- **[LitPrinter](webscout/litprinter/Readme.md):** Styled console output with rich formatting and colors
|
|
178
177
|
- **[LitLogger](webscout/litlogger/README.md):** Simplified logging with customizable formats and color schemes
|
|
179
178
|
- **[LitAgent](webscout/litagent/Readme.md):** Modern user agent generator that keeps your requests undetectable
|
|
180
|
-
- **[Scout](
|
|
181
|
-
- **[Inferno](https://github.com/HelpingAI/inferno):** Run local LLMs with an OpenAI-compatible API and interactive CLI (now a standalone package: `pip install inferno-llm`)
|
|
179
|
+
- **[Scout](docs/scout.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
|
|
182
180
|
- **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
|
|
183
181
|
- **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
|
|
184
182
|
- **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
|
|
@@ -245,7 +243,7 @@ webscout-server
|
|
|
245
243
|
|
|
246
244
|
```bash
|
|
247
245
|
# Clone the repository
|
|
248
|
-
git clone https://github.com/
|
|
246
|
+
git clone https://github.com/pyscout/Webscout.git
|
|
249
247
|
cd Webscout
|
|
250
248
|
|
|
251
249
|
# Install in development mode with UV
|
|
@@ -262,8 +260,8 @@ uv pip install -e ".[dev,api]"
|
|
|
262
260
|
|
|
263
261
|
```bash
|
|
264
262
|
# Pull and run the Docker image
|
|
265
|
-
docker pull
|
|
266
|
-
docker run -it
|
|
263
|
+
docker pull pyscout/webscout:latest
|
|
264
|
+
docker run -it pyscout/webscout:latest
|
|
267
265
|
```
|
|
268
266
|
|
|
269
267
|
### 📱 Quick Start Commands
|
|
@@ -327,46 +325,6 @@ Webscout provides comprehensive CLI commands for all search engines. See the [Se
|
|
|
327
325
|
</p>
|
|
328
326
|
</details>
|
|
329
327
|
|
|
330
|
-
<details open>
|
|
331
|
-
<summary><b>Inferno LLM Commands</b></summary>
|
|
332
|
-
<p>
|
|
333
|
-
|
|
334
|
-
Inferno is now a standalone package. Install it separately with:
|
|
335
|
-
|
|
336
|
-
```bash
|
|
337
|
-
pip install inferno-llm
|
|
338
|
-
```
|
|
339
|
-
|
|
340
|
-
After installation, you can use its CLI for managing and using local LLMs:
|
|
341
|
-
|
|
342
|
-
```bash
|
|
343
|
-
inferno --help
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
| Command | Description |
|
|
347
|
-
| ------------------------ | ----------------------------------------------- |
|
|
348
|
-
| `inferno pull <model>` | Download a model from Hugging Face |
|
|
349
|
-
| `inferno list` | List downloaded models |
|
|
350
|
-
| `inferno serve <model>` | Start a model server with OpenAI-compatible API |
|
|
351
|
-
| `inferno run <model>` | Chat with a model interactively |
|
|
352
|
-
| `inferno remove <model>` | Remove a downloaded model |
|
|
353
|
-
| `inferno version` | Show version information |
|
|
354
|
-
|
|
355
|
-
For more information, visit the [Inferno GitHub repository](https://github.com/HelpingAI/inferno) or [PyPI package page](https://pypi.org/project/inferno-llm/).
|
|
356
|
-
|
|
357
|
-
</p>
|
|
358
|
-
</details>
|
|
359
|
-
|
|
360
|
-
> [!NOTE]
|
|
361
|
-
> **Hardware requirements for running models with Inferno:**
|
|
362
|
-
>
|
|
363
|
-
> - Around 2 GB of RAM for 1B models
|
|
364
|
-
> - Around 4 GB of RAM for 3B models
|
|
365
|
-
> - At least 8 GB of RAM for 7B models
|
|
366
|
-
> - 16 GB of RAM for 13B models
|
|
367
|
-
> - 32 GB of RAM for 33B models
|
|
368
|
-
> - GPU acceleration is recommended for better performance
|
|
369
|
-
|
|
370
328
|
For detailed information about the OpenAI-compatible API server, including setup, configuration, and usage examples, see the [OpenAI API Server Documentation](docs/openai-api-server.md).
|
|
371
329
|
|
|
372
330
|
<hr/>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://github.com/
|
|
2
|
+
<a href="https://github.com/pyscout/Webscout">
|
|
3
3
|
<img src="https://img.shields.io/badge/WebScout-Ultimate%20Toolkit-blue?style=for-the-badge&logo=python&logoColor=white" alt="WebScout Logo">
|
|
4
4
|
</a>
|
|
5
5
|
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout/month?style=flat-square" alt="Monthly Downloads"></a>
|
|
18
18
|
<a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout?style=flat-square" alt="Total Downloads"></a>
|
|
19
19
|
<a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout?style=flat-square&logo=python" alt="Python Version"></a>
|
|
20
|
-
<a href="https://deepwiki.com/
|
|
20
|
+
<a href="https://deepwiki.com/pyscout/Webscout"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
|
|
21
21
|
</p>
|
|
22
22
|
</div>
|
|
23
23
|
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
- [⚙️ Installation](#️-installation)
|
|
30
30
|
- [🖥️ Command Line Interface](#️-command-line-interface)
|
|
31
31
|
- [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
|
|
32
|
+
- [🕸️ Scout: HTML Parser & Web Crawler](docs/scout.md)
|
|
32
33
|
- [🤖 AI Models and Voices](#-ai-models-and-voices)
|
|
33
34
|
- [💬 AI Chat Providers](#-ai-chat-providers)
|
|
34
35
|
- [👨💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
|
|
@@ -42,7 +43,7 @@
|
|
|
42
43
|
>
|
|
43
44
|
> - **Native Compatibility:** Webscout's own native API for maximum flexibility
|
|
44
45
|
> - **OpenAI Compatibility:** Use providers with OpenAI-compatible interfaces
|
|
45
|
-
> - **Local LLM Compatibility:** Run local models with
|
|
46
|
+
> - **Local LLM Compatibility:** Run local models with OpenAI-compatible servers
|
|
46
47
|
>
|
|
47
48
|
> Choose the approach that best fits your needs! For OpenAI compatibility, check the [OpenAI Providers README](webscout/Provider/OPENAI/README.md) or see the [OpenAI-Compatible API Server](#-openai-compatible-api-server) section below.
|
|
48
49
|
|
|
@@ -73,7 +74,7 @@
|
|
|
73
74
|
- **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
|
|
74
75
|
- **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
|
|
75
76
|
- **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
|
|
76
|
-
- **
|
|
77
|
+
- **Local LLMs:** Run local models with OpenAI-compatible servers (see [Inferno documentation](docs/inferno.md))
|
|
77
78
|
- **[AI Search](webscout/Provider/AISEARCH/README.md):** AI-powered search engines with advanced capabilities
|
|
78
79
|
</p>
|
|
79
80
|
</details>
|
|
@@ -98,8 +99,7 @@
|
|
|
98
99
|
- **[LitPrinter](webscout/litprinter/Readme.md):** Styled console output with rich formatting and colors
|
|
99
100
|
- **[LitLogger](webscout/litlogger/README.md):** Simplified logging with customizable formats and color schemes
|
|
100
101
|
- **[LitAgent](webscout/litagent/Readme.md):** Modern user agent generator that keeps your requests undetectable
|
|
101
|
-
- **[Scout](
|
|
102
|
-
- **[Inferno](https://github.com/HelpingAI/inferno):** Run local LLMs with an OpenAI-compatible API and interactive CLI (now a standalone package: `pip install inferno-llm`)
|
|
102
|
+
- **[Scout](docs/scout.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
|
|
103
103
|
- **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
|
|
104
104
|
- **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
|
|
105
105
|
- **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
|
|
@@ -166,7 +166,7 @@ webscout-server
|
|
|
166
166
|
|
|
167
167
|
```bash
|
|
168
168
|
# Clone the repository
|
|
169
|
-
git clone https://github.com/
|
|
169
|
+
git clone https://github.com/pyscout/Webscout.git
|
|
170
170
|
cd Webscout
|
|
171
171
|
|
|
172
172
|
# Install in development mode with UV
|
|
@@ -183,8 +183,8 @@ uv pip install -e ".[dev,api]"
|
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
185
|
# Pull and run the Docker image
|
|
186
|
-
docker pull
|
|
187
|
-
docker run -it
|
|
186
|
+
docker pull pyscout/webscout:latest
|
|
187
|
+
docker run -it pyscout/webscout:latest
|
|
188
188
|
```
|
|
189
189
|
|
|
190
190
|
### 📱 Quick Start Commands
|
|
@@ -248,46 +248,6 @@ Webscout provides comprehensive CLI commands for all search engines. See the [Se
|
|
|
248
248
|
</p>
|
|
249
249
|
</details>
|
|
250
250
|
|
|
251
|
-
<details open>
|
|
252
|
-
<summary><b>Inferno LLM Commands</b></summary>
|
|
253
|
-
<p>
|
|
254
|
-
|
|
255
|
-
Inferno is now a standalone package. Install it separately with:
|
|
256
|
-
|
|
257
|
-
```bash
|
|
258
|
-
pip install inferno-llm
|
|
259
|
-
```
|
|
260
|
-
|
|
261
|
-
After installation, you can use its CLI for managing and using local LLMs:
|
|
262
|
-
|
|
263
|
-
```bash
|
|
264
|
-
inferno --help
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
| Command | Description |
|
|
268
|
-
| ------------------------ | ----------------------------------------------- |
|
|
269
|
-
| `inferno pull <model>` | Download a model from Hugging Face |
|
|
270
|
-
| `inferno list` | List downloaded models |
|
|
271
|
-
| `inferno serve <model>` | Start a model server with OpenAI-compatible API |
|
|
272
|
-
| `inferno run <model>` | Chat with a model interactively |
|
|
273
|
-
| `inferno remove <model>` | Remove a downloaded model |
|
|
274
|
-
| `inferno version` | Show version information |
|
|
275
|
-
|
|
276
|
-
For more information, visit the [Inferno GitHub repository](https://github.com/HelpingAI/inferno) or [PyPI package page](https://pypi.org/project/inferno-llm/).
|
|
277
|
-
|
|
278
|
-
</p>
|
|
279
|
-
</details>
|
|
280
|
-
|
|
281
|
-
> [!NOTE]
|
|
282
|
-
> **Hardware requirements for running models with Inferno:**
|
|
283
|
-
>
|
|
284
|
-
> - Around 2 GB of RAM for 1B models
|
|
285
|
-
> - Around 4 GB of RAM for 3B models
|
|
286
|
-
> - At least 8 GB of RAM for 7B models
|
|
287
|
-
> - 16 GB of RAM for 13B models
|
|
288
|
-
> - 32 GB of RAM for 33B models
|
|
289
|
-
> - GPU acceleration is recommended for better performance
|
|
290
|
-
|
|
291
251
|
For detailed information about the OpenAI-compatible API server, including setup, configuration, and usage examples, see the [OpenAI API Server Documentation](docs/openai-api-server.md).
|
|
292
252
|
|
|
293
253
|
<hr/>
|
|
Binary file
|
|
@@ -77,7 +77,7 @@ dependencies = [
|
|
|
77
77
|
[project.scripts]
|
|
78
78
|
WEBS = "webscout.cli:main"
|
|
79
79
|
webscout = "webscout.cli:main"
|
|
80
|
-
webscout-server = "webscout.
|
|
80
|
+
webscout-server = "webscout.server.server:main" # Instantly start the OpenAI-compatible API server
|
|
81
81
|
|
|
82
82
|
[project.urls]
|
|
83
83
|
Source = "https://github.com/OE-LUCIFER/Webscout"
|
|
@@ -95,10 +95,8 @@ api = [
|
|
|
95
95
|
"pydantic",
|
|
96
96
|
"python-multipart",
|
|
97
97
|
"tiktoken", # Added tiktoken for token counting support
|
|
98
|
-
"motor", # MongoDB async driver for enhanced authentication
|
|
99
98
|
"jinja2", # Template engine for custom Swagger UI
|
|
100
|
-
"
|
|
101
|
-
"websockets>=11.0", # Ensure websockets.asyncio module is available for Supabase realtime
|
|
99
|
+
"websockets>=11.0",
|
|
102
100
|
"starlette"
|
|
103
101
|
]
|
|
104
102
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://github.com/
|
|
2
|
+
<a href="https://github.com/pyscout/Webscout">
|
|
3
3
|
<img src="https://img.shields.io/badge/YTToolkit-YouTube%20Toolkit-red?style=for-the-badge&logo=youtube&logoColor=white" alt="YTToolkit Logo">
|
|
4
4
|
</a>
|
|
5
5
|
<h1>YTToolkit</h1>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://github.com/
|
|
3
|
-
<img src="https://img.shields.io/badge/WebScout-TempMail%
|
|
2
|
+
<a href="https://github.com/pyscout/Webscout">
|
|
3
|
+
<img src="https://img.shields.io/badge/WebScout-TempMail%20Toolkit-blue?style=for-the-badge&logo=maildotru&logoColor=white" alt="WebScout TempMail Toolkit">
|
|
4
4
|
</a>
|
|
5
5
|
|
|
6
6
|
<h1>📧 TempMail</h1>
|
|
@@ -484,5 +484,5 @@ Please refer to the main Webscout project's contributing guidelines if you plan
|
|
|
484
484
|
<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>
|
|
485
485
|
</div>
|
|
486
486
|
<p>📧 TempMail - Part of the Webscout Toolkit</p>
|
|
487
|
-
<a href="https://github.com/
|
|
487
|
+
<a href="https://github.com/pyscout/Webscout">Back to Main Webscout Project</a>
|
|
488
488
|
</div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
-
<a href="https://github.com/
|
|
2
|
+
<a href="https://github.com/pyscout/Webscout">
|
|
3
3
|
<img src="https://img.shields.io/badge/WebScout-OpenAI%20Compatible%20Providers-4285F4?style=for-the-badge&logo=openai&logoColor=white" alt="WebScout OpenAI Compatible Providers">
|
|
4
4
|
</a>
|
|
5
5
|
<br/>
|
|
@@ -7,6 +7,7 @@ from webscout.Provider.TTI.utils import ImageData, ImageResponse
|
|
|
7
7
|
from webscout.Provider.TTI.base import TTICompatibleProvider, BaseImages
|
|
8
8
|
from io import BytesIO
|
|
9
9
|
from webscout.litagent import LitAgent
|
|
10
|
+
from webscout.scout import Scout
|
|
10
11
|
|
|
11
12
|
try:
|
|
12
13
|
from PIL import Image
|
|
@@ -81,9 +82,8 @@ class Images(BaseImages):
|
|
|
81
82
|
time.sleep(3)
|
|
82
83
|
try:
|
|
83
84
|
poll_resp = session.get(polling_url, headers=headers, timeout=timeout)
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
imgs = [img["src"].split("?")[0] for img in soup.select(".img_cont .mimg") if img.get("src")]
|
|
85
|
+
scout = Scout(poll_resp.text, features='html.parser')
|
|
86
|
+
imgs = [img["src"].split("?")[0] for img in scout.select(".img_cont .mimg") if img.attrs.get("src")]
|
|
87
87
|
if imgs:
|
|
88
88
|
img_url = imgs[0]
|
|
89
89
|
break
|
|
@@ -232,7 +232,7 @@ class BingImageAI(TTICompatibleProvider):
|
|
|
232
232
|
|
|
233
233
|
if __name__ == "__main__":
|
|
234
234
|
from rich import print
|
|
235
|
-
client = BingImageAI(cookie="
|
|
235
|
+
client = BingImageAI(cookie="1Fw9daLSZzVBJXgevTDuc0jHZ60l4m5IiQEwjRCFOwEkpEBDmw3b8CEAALFSwZ1QBu-rATNkfD0i0gfJmVHeFlogqIriGwxNwT9T6fVREgAQD4_qn0VnQYP681NN4K80t6o-eJXnK1MBhdjxTIaok8173LGmLkEWLqHC0k3dYnF7m2kHRhf1dxjEH3WDI56hxiSPZtnggdzrfnuFAmOgCQQ")
|
|
236
236
|
response = client.images.create(
|
|
237
237
|
model="gpt4o",
|
|
238
238
|
prompt="A cat riding a bicycle",
|
|
@@ -34,20 +34,19 @@ from webscout.Provider.OPENAI import *
|
|
|
34
34
|
try:
|
|
35
35
|
# Use lazy import to avoid module execution issues
|
|
36
36
|
def run_api(*args, **kwargs):
|
|
37
|
-
|
|
38
|
-
from webscout.auth.server import run_api as _run_api
|
|
37
|
+
from webscout.server.server import run_api as _run_api
|
|
39
38
|
return _run_api(*args, **kwargs)
|
|
40
39
|
|
|
41
40
|
def start_server(**kwargs):
|
|
42
41
|
"""Start the Webscout OpenAI-compatible API server (FastAPI backend)."""
|
|
43
|
-
from webscout.
|
|
42
|
+
from webscout.server.server import run_api as _run_api
|
|
44
43
|
return _run_api(**kwargs)
|
|
45
44
|
except ImportError:
|
|
46
45
|
# Fallback for environments where the backend is not available
|
|
47
46
|
def run_api(*args, **kwargs):
|
|
48
|
-
raise ImportError("webscout.
|
|
47
|
+
raise ImportError("webscout.server.server.run_api is not available in this environment.")
|
|
49
48
|
def start_server(*args, **kwargs):
|
|
50
|
-
raise ImportError("webscout.
|
|
49
|
+
raise ImportError("webscout.server.server.start_server is not available in this environment.")
|
|
51
50
|
|
|
52
51
|
# ---
|
|
53
52
|
# API Documentation
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
try:
|
|
2
|
+
import litprinter
|
|
3
|
+
# If standalone package is found, re-export all its components
|
|
4
|
+
from litprinter import litprint, lit, log, ic, install, uninstall
|
|
5
|
+
from litprinter import LITPrintDebugger, argumentToString
|
|
6
|
+
from litprinter import JARVIS, RICH, MODERN, NEON, CYBERPUNK, create_custom_style
|
|
7
|
+
from litprinter import traceback
|
|
8
|
+
# For compatibility with icecream
|
|
9
|
+
enable = litprinter.enable
|
|
10
|
+
disable = litprinter.disable
|
|
11
|
+
|
|
12
|
+
except ImportError:
|
|
13
|
+
# Raise a more informative error when litprinter is not installed
|
|
14
|
+
raise ImportError(
|
|
15
|
+
"The 'litprinter' package is required but not installed. "
|
|
16
|
+
"Please install it using: pip install litprinter"
|
|
17
|
+
) from None
|
|
@@ -43,7 +43,7 @@ pip install webscout
|
|
|
43
43
|
Or install the latest version from GitHub:
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
pip install git+https://github.com/
|
|
46
|
+
pip install git+https://github.com/pyscout/Webscout.git
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
## 🚀 Quick Start
|
|
@@ -147,10 +147,57 @@ Scout provides powerful tools for navigating and manipulating HTML/XML documents
|
|
|
147
147
|
- **Document Manipulation**: Modify, replace, or remove elements
|
|
148
148
|
- **Dynamic Building**: Easily append or insert new nodes
|
|
149
149
|
|
|
150
|
+
#### CSS Selector Support
|
|
151
|
+
|
|
152
|
+
Scout includes a comprehensive CSS selector engine that supports all common selector types:
|
|
153
|
+
|
|
150
154
|
```python
|
|
151
|
-
#
|
|
152
|
-
|
|
155
|
+
# Tag selectors
|
|
156
|
+
paragraphs = scout.select('p')
|
|
157
|
+
divs = scout.select('div')
|
|
158
|
+
|
|
159
|
+
# Class selectors
|
|
160
|
+
items = scout.select('.item') # Single class
|
|
161
|
+
cards = scout.select('div.card') # Tag + class
|
|
162
|
+
special = scout.select('.card.special') # Multiple classes
|
|
163
|
+
|
|
164
|
+
# ID selectors
|
|
165
|
+
header = scout.select_one('#header') # Single element by ID
|
|
166
|
+
menu = scout.select('nav#main-menu') # Tag + ID
|
|
167
|
+
|
|
168
|
+
# Attribute selectors
|
|
169
|
+
links = scout.select('a[href]') # Has attribute
|
|
170
|
+
external = scout.select('a[rel="nofollow"]') # Attribute value
|
|
171
|
+
images = scout.select('img[alt]') # Has alt attribute
|
|
172
|
+
|
|
173
|
+
# Descendant selectors (space)
|
|
174
|
+
nested = scout.select('div p') # Any p inside div
|
|
175
|
+
deep = scout.select('article section p') # Deeply nested
|
|
176
|
+
|
|
177
|
+
# Child selectors (>)
|
|
178
|
+
direct = scout.select('ul > li') # Direct children only
|
|
179
|
+
menu_items = scout.select('nav#menu > ul > li') # Multiple levels
|
|
180
|
+
|
|
181
|
+
# Combined selectors
|
|
182
|
+
complex = scout.select('div.container > p.text[lang="en"]')
|
|
183
|
+
links = scout.select('ol#results > li.item a[href]')
|
|
184
|
+
|
|
185
|
+
# Get first match only
|
|
186
|
+
first = scout.select_one('p.intro')
|
|
187
|
+
```
|
|
153
188
|
|
|
189
|
+
**Supported Selector Types:**
|
|
190
|
+
- **Tag**: `p`, `div`, `a`
|
|
191
|
+
- **Class**: `.class`, `div.class`, `.class1.class2`
|
|
192
|
+
- **ID**: `#id`, `div#id`
|
|
193
|
+
- **Attribute**: `[attr]`, `[attr="value"]`
|
|
194
|
+
- **Descendant**: `div p`, `article section p`
|
|
195
|
+
- **Child**: `div > p`, `ul > li`
|
|
196
|
+
- **Combined**: `p.class#id[attr="value"]`
|
|
197
|
+
|
|
198
|
+
#### Element Navigation
|
|
199
|
+
|
|
200
|
+
```python
|
|
154
201
|
# Advanced find with attribute matching
|
|
155
202
|
results = scout.find_all('a', attrs={'class': 'external', 'rel': 'nofollow'})
|
|
156
203
|
|
|
@@ -340,6 +387,10 @@ cached_data = scout.cache('parsed_data')
|
|
|
340
387
|
- `__init__(markup, features='html.parser', from_encoding=None)`: Initialize with HTML content
|
|
341
388
|
- `find(name, attrs={}, recursive=True, text=None)`: Find first matching element
|
|
342
389
|
- `find_all(name, attrs={}, recursive=True, text=None, limit=None)`: Find all matching elements
|
|
390
|
+
- `find_next(name, attrs={}, text=None)`: Find next element in document order
|
|
391
|
+
- `find_all_next(name, attrs={}, text=None, limit=None)`: Find all next elements in document order
|
|
392
|
+
- `find_previous(name, attrs={}, text=None)`: Find previous element in document order
|
|
393
|
+
- `find_all_previous(name, attrs={}, text=None, limit=None)`: Find all previous elements in document order
|
|
343
394
|
- `select(selector)`: Find elements using CSS selector
|
|
344
395
|
- `get_text(separator=' ', strip=False)`: Extract text from document
|
|
345
396
|
- `analyze_text()`: Perform text analysis
|
|
@@ -358,7 +409,7 @@ cached_data = scout.cache('parsed_data')
|
|
|
358
409
|
- `_crawl_page(url, depth=0)`: Crawl a single page (internal method)
|
|
359
410
|
- `_is_valid_url(url)`: Check if a URL is valid (internal method)
|
|
360
411
|
|
|
361
|
-
For detailed API documentation, please refer to the [documentation](https://github.com/
|
|
412
|
+
For detailed API documentation, please refer to the [documentation](https://github.com/pyscout/Webscout/wiki).
|
|
362
413
|
|
|
363
414
|
## 🔧 Dependencies
|
|
364
415
|
|
|
@@ -393,9 +444,9 @@ This project is licensed under the MIT License - see the LICENSE file for detail
|
|
|
393
444
|
<div align="center">
|
|
394
445
|
<p>Made with ❤️ by the Webscout team</p>
|
|
395
446
|
<p>
|
|
396
|
-
<a href="https://github.com/
|
|
397
|
-
<a href="https://github.com/
|
|
398
|
-
<a href="https://github.com/
|
|
399
|
-
<a href="https://github.com/
|
|
447
|
+
<a href="https://github.com/pyscout/Webscout">GitHub</a> •
|
|
448
|
+
<a href="https://github.com/pyscout/Webscout/wiki">Documentation</a> •
|
|
449
|
+
<a href="https://github.com/pyscout/Webscout/issues">Report Bug</a> •
|
|
450
|
+
<a href="https://github.com/pyscout/Webscout/issues">Request Feature</a>
|
|
400
451
|
</p>
|
|
401
452
|
</div>
|
|
@@ -454,6 +454,68 @@ class Scout:
|
|
|
454
454
|
pass
|
|
455
455
|
return siblings
|
|
456
456
|
|
|
457
|
+
def find_next(self, name=None, attrs={}, text=None, **kwargs) -> Optional[Tag]:
|
|
458
|
+
"""
|
|
459
|
+
Find the next element in document order.
|
|
460
|
+
|
|
461
|
+
Args:
|
|
462
|
+
name: Tag name to search for
|
|
463
|
+
attrs: Attributes to match
|
|
464
|
+
text: Text content to match
|
|
465
|
+
**kwargs: Additional attributes
|
|
466
|
+
|
|
467
|
+
Returns:
|
|
468
|
+
Optional[Tag]: Next matching element or None
|
|
469
|
+
"""
|
|
470
|
+
return self._soup.find_next(name, attrs, text, **kwargs)
|
|
471
|
+
|
|
472
|
+
def find_all_next(self, name=None, attrs={}, text=None, limit=None, **kwargs) -> List[Tag]:
|
|
473
|
+
"""
|
|
474
|
+
Find all next elements in document order.
|
|
475
|
+
|
|
476
|
+
Args:
|
|
477
|
+
name: Tag name to search for
|
|
478
|
+
attrs: Attributes to match
|
|
479
|
+
text: Text content to match
|
|
480
|
+
limit: Maximum number of results
|
|
481
|
+
**kwargs: Additional attributes
|
|
482
|
+
|
|
483
|
+
Returns:
|
|
484
|
+
List[Tag]: List of matching elements
|
|
485
|
+
"""
|
|
486
|
+
return self._soup.find_all_next(name, attrs, text, limit, **kwargs)
|
|
487
|
+
|
|
488
|
+
def find_previous(self, name=None, attrs={}, text=None, **kwargs) -> Optional[Tag]:
|
|
489
|
+
"""
|
|
490
|
+
Find the previous element in document order.
|
|
491
|
+
|
|
492
|
+
Args:
|
|
493
|
+
name: Tag name to search for
|
|
494
|
+
attrs: Attributes to match
|
|
495
|
+
text: Text content to match
|
|
496
|
+
**kwargs: Additional attributes
|
|
497
|
+
|
|
498
|
+
Returns:
|
|
499
|
+
Optional[Tag]: Previous matching element or None
|
|
500
|
+
"""
|
|
501
|
+
return self._soup.find_previous(name, attrs, text, **kwargs)
|
|
502
|
+
|
|
503
|
+
def find_all_previous(self, name=None, attrs={}, text=None, limit=None, **kwargs) -> List[Tag]:
|
|
504
|
+
"""
|
|
505
|
+
Find all previous elements in document order.
|
|
506
|
+
|
|
507
|
+
Args:
|
|
508
|
+
name: Tag name to search for
|
|
509
|
+
attrs: Attributes to match
|
|
510
|
+
text: Text content to match
|
|
511
|
+
limit: Maximum number of results
|
|
512
|
+
**kwargs: Additional attributes
|
|
513
|
+
|
|
514
|
+
Returns:
|
|
515
|
+
List[Tag]: List of matching elements
|
|
516
|
+
"""
|
|
517
|
+
return self._soup.find_all_previous(name, attrs, text, limit, **kwargs)
|
|
518
|
+
|
|
457
519
|
def select(self, selector: str) -> List[Tag]:
|
|
458
520
|
"""
|
|
459
521
|
Select elements using CSS selector.
|