webscout 8.3.6__py3-none-any.whl → 2025.10.11__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of webscout might be problematic. Click here for more details.

Files changed (304) hide show
  1. webscout/AIauto.py +250 -250
  2. webscout/AIbase.py +379 -379
  3. webscout/AIutel.py +60 -58
  4. webscout/Bard.py +1012 -1012
  5. webscout/Bing_search.py +417 -417
  6. webscout/DWEBS.py +529 -529
  7. webscout/Extra/Act.md +309 -309
  8. webscout/Extra/GitToolkit/__init__.py +10 -10
  9. webscout/Extra/GitToolkit/gitapi/README.md +110 -110
  10. webscout/Extra/GitToolkit/gitapi/__init__.py +11 -11
  11. webscout/Extra/GitToolkit/gitapi/repository.py +195 -195
  12. webscout/Extra/GitToolkit/gitapi/user.py +96 -96
  13. webscout/Extra/GitToolkit/gitapi/utils.py +61 -61
  14. webscout/Extra/YTToolkit/README.md +375 -375
  15. webscout/Extra/YTToolkit/YTdownloader.py +956 -956
  16. webscout/Extra/YTToolkit/__init__.py +2 -2
  17. webscout/Extra/YTToolkit/transcriber.py +475 -475
  18. webscout/Extra/YTToolkit/ytapi/README.md +44 -44
  19. webscout/Extra/YTToolkit/ytapi/__init__.py +6 -6
  20. webscout/Extra/YTToolkit/ytapi/channel.py +307 -307
  21. webscout/Extra/YTToolkit/ytapi/errors.py +13 -13
  22. webscout/Extra/YTToolkit/ytapi/extras.py +118 -118
  23. webscout/Extra/YTToolkit/ytapi/https.py +88 -88
  24. webscout/Extra/YTToolkit/ytapi/patterns.py +61 -61
  25. webscout/Extra/YTToolkit/ytapi/playlist.py +58 -58
  26. webscout/Extra/YTToolkit/ytapi/pool.py +7 -7
  27. webscout/Extra/YTToolkit/ytapi/query.py +39 -39
  28. webscout/Extra/YTToolkit/ytapi/stream.py +62 -62
  29. webscout/Extra/YTToolkit/ytapi/utils.py +62 -62
  30. webscout/Extra/YTToolkit/ytapi/video.py +232 -232
  31. webscout/Extra/autocoder/__init__.py +9 -9
  32. webscout/Extra/autocoder/autocoder.py +1105 -1105
  33. webscout/Extra/autocoder/autocoder_utiles.py +332 -332
  34. webscout/Extra/gguf.md +429 -429
  35. webscout/Extra/gguf.py +1213 -1213
  36. webscout/Extra/tempmail/README.md +487 -487
  37. webscout/Extra/tempmail/__init__.py +27 -27
  38. webscout/Extra/tempmail/async_utils.py +140 -140
  39. webscout/Extra/tempmail/base.py +160 -160
  40. webscout/Extra/tempmail/cli.py +186 -186
  41. webscout/Extra/tempmail/emailnator.py +84 -84
  42. webscout/Extra/tempmail/mail_tm.py +360 -360
  43. webscout/Extra/tempmail/temp_mail_io.py +291 -291
  44. webscout/Extra/weather.md +281 -281
  45. webscout/Extra/weather.py +193 -193
  46. webscout/Litlogger/README.md +10 -10
  47. webscout/Litlogger/__init__.py +15 -15
  48. webscout/Litlogger/formats.py +13 -13
  49. webscout/Litlogger/handlers.py +121 -121
  50. webscout/Litlogger/levels.py +13 -13
  51. webscout/Litlogger/logger.py +134 -134
  52. webscout/Provider/AISEARCH/Perplexity.py +332 -332
  53. webscout/Provider/AISEARCH/README.md +279 -279
  54. webscout/Provider/AISEARCH/__init__.py +33 -11
  55. webscout/Provider/AISEARCH/felo_search.py +206 -206
  56. webscout/Provider/AISEARCH/genspark_search.py +323 -323
  57. webscout/Provider/AISEARCH/hika_search.py +185 -185
  58. webscout/Provider/AISEARCH/iask_search.py +410 -410
  59. webscout/Provider/AISEARCH/monica_search.py +219 -219
  60. webscout/Provider/AISEARCH/scira_search.py +316 -314
  61. webscout/Provider/AISEARCH/stellar_search.py +177 -177
  62. webscout/Provider/AISEARCH/webpilotai_search.py +255 -255
  63. webscout/Provider/Aitopia.py +314 -315
  64. webscout/Provider/Andi.py +3 -3
  65. webscout/Provider/Apriel.py +306 -0
  66. webscout/Provider/ChatGPTClone.py +236 -236
  67. webscout/Provider/ChatSandbox.py +343 -342
  68. webscout/Provider/Cloudflare.py +324 -324
  69. webscout/Provider/Cohere.py +208 -207
  70. webscout/Provider/Deepinfra.py +370 -369
  71. webscout/Provider/ExaAI.py +260 -260
  72. webscout/Provider/ExaChat.py +308 -387
  73. webscout/Provider/Flowith.py +221 -221
  74. webscout/Provider/GMI.py +293 -0
  75. webscout/Provider/Gemini.py +164 -162
  76. webscout/Provider/GeminiProxy.py +167 -166
  77. webscout/Provider/GithubChat.py +371 -370
  78. webscout/Provider/Groq.py +800 -800
  79. webscout/Provider/HeckAI.py +383 -379
  80. webscout/Provider/Jadve.py +282 -297
  81. webscout/Provider/K2Think.py +308 -0
  82. webscout/Provider/Koboldai.py +206 -384
  83. webscout/Provider/LambdaChat.py +423 -425
  84. webscout/Provider/Nemotron.py +244 -245
  85. webscout/Provider/Netwrck.py +248 -247
  86. webscout/Provider/OLLAMA.py +395 -394
  87. webscout/Provider/OPENAI/Cloudflare.py +394 -395
  88. webscout/Provider/OPENAI/FalconH1.py +452 -457
  89. webscout/Provider/OPENAI/FreeGemini.py +297 -299
  90. webscout/Provider/OPENAI/{monochat.py → K2Think.py} +432 -329
  91. webscout/Provider/OPENAI/NEMOTRON.py +241 -244
  92. webscout/Provider/OPENAI/PI.py +428 -427
  93. webscout/Provider/OPENAI/README.md +959 -959
  94. webscout/Provider/OPENAI/TogetherAI.py +345 -345
  95. webscout/Provider/OPENAI/TwoAI.py +466 -467
  96. webscout/Provider/OPENAI/__init__.py +33 -59
  97. webscout/Provider/OPENAI/ai4chat.py +313 -303
  98. webscout/Provider/OPENAI/base.py +249 -269
  99. webscout/Provider/OPENAI/chatglm.py +528 -0
  100. webscout/Provider/OPENAI/chatgpt.py +593 -588
  101. webscout/Provider/OPENAI/chatgptclone.py +521 -524
  102. webscout/Provider/OPENAI/chatsandbox.py +202 -177
  103. webscout/Provider/OPENAI/deepinfra.py +319 -315
  104. webscout/Provider/OPENAI/e2b.py +1665 -1665
  105. webscout/Provider/OPENAI/exaai.py +420 -420
  106. webscout/Provider/OPENAI/exachat.py +452 -452
  107. webscout/Provider/OPENAI/friendli.py +232 -232
  108. webscout/Provider/OPENAI/{refact.py → gmi.py} +324 -274
  109. webscout/Provider/OPENAI/groq.py +364 -364
  110. webscout/Provider/OPENAI/heckai.py +314 -311
  111. webscout/Provider/OPENAI/llmchatco.py +337 -337
  112. webscout/Provider/OPENAI/netwrck.py +355 -354
  113. webscout/Provider/OPENAI/oivscode.py +290 -290
  114. webscout/Provider/OPENAI/opkfc.py +518 -518
  115. webscout/Provider/OPENAI/pydantic_imports.py +1 -1
  116. webscout/Provider/OPENAI/scirachat.py +535 -529
  117. webscout/Provider/OPENAI/sonus.py +308 -308
  118. webscout/Provider/OPENAI/standardinput.py +442 -442
  119. webscout/Provider/OPENAI/textpollinations.py +340 -348
  120. webscout/Provider/OPENAI/toolbaz.py +419 -413
  121. webscout/Provider/OPENAI/typefully.py +362 -362
  122. webscout/Provider/OPENAI/utils.py +295 -295
  123. webscout/Provider/OPENAI/venice.py +436 -436
  124. webscout/Provider/OPENAI/wisecat.py +387 -387
  125. webscout/Provider/OPENAI/writecream.py +166 -166
  126. webscout/Provider/OPENAI/x0gpt.py +378 -378
  127. webscout/Provider/OPENAI/yep.py +389 -389
  128. webscout/Provider/OpenGPT.py +230 -230
  129. webscout/Provider/Openai.py +244 -496
  130. webscout/Provider/PI.py +405 -404
  131. webscout/Provider/Perplexitylabs.py +430 -431
  132. webscout/Provider/QwenLM.py +272 -254
  133. webscout/Provider/STT/__init__.py +32 -2
  134. webscout/Provider/{Llama3.py → Sambanova.py} +257 -258
  135. webscout/Provider/StandardInput.py +309 -309
  136. webscout/Provider/TTI/README.md +82 -82
  137. webscout/Provider/TTI/__init__.py +33 -12
  138. webscout/Provider/TTI/aiarta.py +413 -413
  139. webscout/Provider/TTI/base.py +136 -136
  140. webscout/Provider/TTI/bing.py +243 -243
  141. webscout/Provider/TTI/gpt1image.py +149 -149
  142. webscout/Provider/TTI/imagen.py +196 -196
  143. webscout/Provider/TTI/infip.py +211 -211
  144. webscout/Provider/TTI/magicstudio.py +232 -232
  145. webscout/Provider/TTI/monochat.py +219 -219
  146. webscout/Provider/TTI/piclumen.py +214 -214
  147. webscout/Provider/TTI/pixelmuse.py +232 -232
  148. webscout/Provider/TTI/pollinations.py +232 -232
  149. webscout/Provider/TTI/together.py +288 -288
  150. webscout/Provider/TTI/utils.py +12 -12
  151. webscout/Provider/TTI/venice.py +367 -367
  152. webscout/Provider/TTS/README.md +192 -192
  153. webscout/Provider/TTS/__init__.py +33 -10
  154. webscout/Provider/TTS/parler.py +110 -110
  155. webscout/Provider/TTS/streamElements.py +333 -333
  156. webscout/Provider/TTS/utils.py +280 -280
  157. webscout/Provider/TeachAnything.py +237 -236
  158. webscout/Provider/TextPollinationsAI.py +311 -318
  159. webscout/Provider/TogetherAI.py +356 -357
  160. webscout/Provider/TwoAI.py +313 -569
  161. webscout/Provider/TypliAI.py +312 -311
  162. webscout/Provider/UNFINISHED/ChatHub.py +208 -208
  163. webscout/Provider/UNFINISHED/ChutesAI.py +313 -313
  164. webscout/Provider/{GizAI.py → UNFINISHED/GizAI.py} +294 -294
  165. webscout/Provider/{Marcus.py → UNFINISHED/Marcus.py} +198 -198
  166. webscout/Provider/{Qodo.py → UNFINISHED/Qodo.py} +477 -477
  167. webscout/Provider/UNFINISHED/VercelAIGateway.py +338 -338
  168. webscout/Provider/{XenAI.py → UNFINISHED/XenAI.py} +324 -324
  169. webscout/Provider/UNFINISHED/Youchat.py +330 -330
  170. webscout/Provider/UNFINISHED/liner.py +334 -0
  171. webscout/Provider/UNFINISHED/liner_api_request.py +262 -262
  172. webscout/Provider/UNFINISHED/puterjs.py +634 -634
  173. webscout/Provider/UNFINISHED/samurai.py +223 -223
  174. webscout/Provider/UNFINISHED/test_lmarena.py +119 -119
  175. webscout/Provider/Venice.py +251 -250
  176. webscout/Provider/VercelAI.py +256 -255
  177. webscout/Provider/WiseCat.py +232 -231
  178. webscout/Provider/WrDoChat.py +367 -366
  179. webscout/Provider/__init__.py +33 -86
  180. webscout/Provider/ai4chat.py +174 -174
  181. webscout/Provider/akashgpt.py +331 -334
  182. webscout/Provider/cerebras.py +446 -340
  183. webscout/Provider/chatglm.py +394 -214
  184. webscout/Provider/cleeai.py +211 -212
  185. webscout/Provider/deepseek_assistant.py +1 -1
  186. webscout/Provider/elmo.py +282 -282
  187. webscout/Provider/geminiapi.py +208 -208
  188. webscout/Provider/granite.py +261 -261
  189. webscout/Provider/hermes.py +263 -265
  190. webscout/Provider/julius.py +223 -222
  191. webscout/Provider/learnfastai.py +309 -309
  192. webscout/Provider/llama3mitril.py +214 -214
  193. webscout/Provider/llmchat.py +243 -243
  194. webscout/Provider/llmchatco.py +290 -290
  195. webscout/Provider/meta.py +801 -801
  196. webscout/Provider/oivscode.py +309 -309
  197. webscout/Provider/scira_chat.py +384 -457
  198. webscout/Provider/searchchat.py +292 -291
  199. webscout/Provider/sonus.py +258 -258
  200. webscout/Provider/toolbaz.py +370 -364
  201. webscout/Provider/turboseek.py +274 -265
  202. webscout/Provider/typefully.py +208 -207
  203. webscout/Provider/x0gpt.py +1 -0
  204. webscout/Provider/yep.py +372 -371
  205. webscout/__init__.py +30 -31
  206. webscout/__main__.py +5 -5
  207. webscout/auth/api_key_manager.py +189 -189
  208. webscout/auth/config.py +175 -175
  209. webscout/auth/models.py +185 -185
  210. webscout/auth/routes.py +664 -664
  211. webscout/auth/simple_logger.py +236 -236
  212. webscout/cli.py +523 -523
  213. webscout/conversation.py +438 -438
  214. webscout/exceptions.py +361 -361
  215. webscout/litagent/Readme.md +298 -298
  216. webscout/litagent/__init__.py +28 -28
  217. webscout/litagent/agent.py +581 -581
  218. webscout/litagent/constants.py +59 -59
  219. webscout/litprinter/__init__.py +58 -58
  220. webscout/models.py +181 -181
  221. webscout/optimizers.py +419 -419
  222. webscout/prompt_manager.py +288 -288
  223. webscout/sanitize.py +1078 -1078
  224. webscout/scout/README.md +401 -401
  225. webscout/scout/__init__.py +8 -8
  226. webscout/scout/core/__init__.py +6 -6
  227. webscout/scout/core/crawler.py +297 -297
  228. webscout/scout/core/scout.py +706 -706
  229. webscout/scout/core/search_result.py +95 -95
  230. webscout/scout/core/text_analyzer.py +62 -62
  231. webscout/scout/core/text_utils.py +277 -277
  232. webscout/scout/core/web_analyzer.py +51 -51
  233. webscout/scout/element.py +599 -599
  234. webscout/scout/parsers/__init__.py +69 -69
  235. webscout/scout/parsers/html5lib_parser.py +172 -172
  236. webscout/scout/parsers/html_parser.py +236 -236
  237. webscout/scout/parsers/lxml_parser.py +178 -178
  238. webscout/scout/utils.py +37 -37
  239. webscout/swiftcli/Readme.md +323 -323
  240. webscout/swiftcli/__init__.py +95 -95
  241. webscout/swiftcli/core/__init__.py +7 -7
  242. webscout/swiftcli/core/cli.py +308 -308
  243. webscout/swiftcli/core/context.py +104 -104
  244. webscout/swiftcli/core/group.py +241 -241
  245. webscout/swiftcli/decorators/__init__.py +28 -28
  246. webscout/swiftcli/decorators/command.py +221 -221
  247. webscout/swiftcli/decorators/options.py +220 -220
  248. webscout/swiftcli/decorators/output.py +302 -302
  249. webscout/swiftcli/exceptions.py +21 -21
  250. webscout/swiftcli/plugins/__init__.py +9 -9
  251. webscout/swiftcli/plugins/base.py +135 -135
  252. webscout/swiftcli/plugins/manager.py +269 -269
  253. webscout/swiftcli/utils/__init__.py +59 -59
  254. webscout/swiftcli/utils/formatting.py +252 -252
  255. webscout/swiftcli/utils/parsing.py +267 -267
  256. webscout/update_checker.py +117 -117
  257. webscout/version.py +1 -1
  258. webscout/webscout_search.py +1183 -1183
  259. webscout/webscout_search_async.py +649 -649
  260. webscout/yep_search.py +346 -346
  261. webscout/zeroart/README.md +89 -89
  262. webscout/zeroart/__init__.py +134 -134
  263. webscout/zeroart/base.py +66 -66
  264. webscout/zeroart/effects.py +100 -100
  265. webscout/zeroart/fonts.py +1238 -1238
  266. {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/METADATA +937 -936
  267. webscout-2025.10.11.dist-info/RECORD +300 -0
  268. webscout/Provider/AISEARCH/DeepFind.py +0 -254
  269. webscout/Provider/AllenAI.py +0 -440
  270. webscout/Provider/Blackboxai.py +0 -793
  271. webscout/Provider/FreeGemini.py +0 -250
  272. webscout/Provider/GptOss.py +0 -207
  273. webscout/Provider/Hunyuan.py +0 -283
  274. webscout/Provider/Kimi.py +0 -445
  275. webscout/Provider/MCPCore.py +0 -322
  276. webscout/Provider/MiniMax.py +0 -207
  277. webscout/Provider/OPENAI/BLACKBOXAI.py +0 -1045
  278. webscout/Provider/OPENAI/MiniMax.py +0 -298
  279. webscout/Provider/OPENAI/Qwen3.py +0 -304
  280. webscout/Provider/OPENAI/autoproxy.py +0 -1067
  281. webscout/Provider/OPENAI/copilot.py +0 -321
  282. webscout/Provider/OPENAI/gptoss.py +0 -288
  283. webscout/Provider/OPENAI/kimi.py +0 -469
  284. webscout/Provider/OPENAI/mcpcore.py +0 -431
  285. webscout/Provider/OPENAI/multichat.py +0 -378
  286. webscout/Provider/OPENAI/qodo.py +0 -630
  287. webscout/Provider/OPENAI/xenai.py +0 -514
  288. webscout/Provider/Reka.py +0 -214
  289. webscout/Provider/UNFINISHED/fetch_together_models.py +0 -90
  290. webscout/Provider/asksteve.py +0 -220
  291. webscout/Provider/copilot.py +0 -441
  292. webscout/Provider/freeaichat.py +0 -294
  293. webscout/Provider/koala.py +0 -182
  294. webscout/Provider/lmarena.py +0 -198
  295. webscout/Provider/monochat.py +0 -275
  296. webscout/Provider/multichat.py +0 -375
  297. webscout/Provider/scnet.py +0 -244
  298. webscout/Provider/talkai.py +0 -194
  299. webscout/tempid.py +0 -128
  300. webscout-8.3.6.dist-info/RECORD +0 -327
  301. {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/WHEEL +0 -0
  302. {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/entry_points.txt +0 -0
  303. {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/licenses/LICENSE.md +0 -0
  304. {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/top_level.txt +0 -0
@@ -1,936 +1,937 @@
1
- Metadata-Version: 2.4
2
- Name: webscout
3
- Version: 8.3.6
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-email: OEvortex <helpingai5@gmail.com>
6
- License: HelpingAI
7
- Project-URL: Source, https://github.com/OE-LUCIFER/Webscout
8
- Project-URL: Tracker, https://github.com/OE-LUCIFER/Webscout/issues
9
- Project-URL: YouTube, https://youtube.com/@OEvortex
10
- Keywords: search,ai,chatbot,llm,language-model,gpt,openai,gemini,claude,llama,search-engine,text-to-speech,tts,text-to-image,tti,weather,youtube,toolkit,utilities,web-search,duckduckgo,google,yep
11
- Classifier: Development Status :: 5 - Production/Stable
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Intended Audience :: End Users/Desktop
14
- Classifier: Intended Audience :: Science/Research
15
- Classifier: License :: Other/Proprietary License
16
- Classifier: Natural Language :: English
17
- Classifier: Operating System :: OS Independent
18
- Classifier: Operating System :: Microsoft :: Windows
19
- Classifier: Operating System :: POSIX :: Linux
20
- Classifier: Operating System :: MacOS :: MacOS X
21
- Classifier: Programming Language :: Python :: 3
22
- Classifier: Programming Language :: Python :: 3.9
23
- Classifier: Programming Language :: Python :: 3.10
24
- Classifier: Programming Language :: Python :: 3.11
25
- Classifier: Programming Language :: Python :: 3.12
26
- Classifier: Programming Language :: Python :: 3.13
27
- Classifier: Programming Language :: Python :: Implementation :: CPython
28
- Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
29
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
- Classifier: Topic :: Text Processing :: Linguistic
31
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
32
- Classifier: Topic :: Communications
33
- Classifier: Topic :: Utilities
34
- Requires-Python: >=3.9
35
- Description-Content-Type: text/markdown
36
- License-File: LICENSE.md
37
- Requires-Dist: setuptools
38
- Requires-Dist: wheel
39
- Requires-Dist: pip
40
- Requires-Dist: nodriver
41
- Requires-Dist: mistune
42
- Requires-Dist: curl_cffi
43
- Requires-Dist: nest-asyncio
44
- Requires-Dist: colorama
45
- Requires-Dist: rich
46
- Requires-Dist: markdownify
47
- Requires-Dist: requests
48
- Requires-Dist: google-generativeai
49
- Requires-Dist: lxml>=5.2.2
50
- Requires-Dist: orjson
51
- Requires-Dist: PyYAML
52
- Requires-Dist: pillow
53
- Requires-Dist: bson
54
- Requires-Dist: cloudscraper
55
- Requires-Dist: html5lib
56
- Requires-Dist: aiofiles
57
- Requires-Dist: openai
58
- Requires-Dist: gradio_client
59
- Requires-Dist: psutil
60
- Requires-Dist: aiohttp
61
- Requires-Dist: zstandard
62
- Requires-Dist: brotli
63
- Requires-Dist: litproxy
64
- Provides-Extra: dev
65
- Requires-Dist: ruff>=0.1.6; extra == "dev"
66
- Requires-Dist: pytest>=7.4.2; extra == "dev"
67
- Provides-Extra: api
68
- Requires-Dist: fastapi; extra == "api"
69
- Requires-Dist: uvicorn[standard]; extra == "api"
70
- Requires-Dist: pydantic; extra == "api"
71
- Requires-Dist: python-multipart; extra == "api"
72
- Requires-Dist: tiktoken; extra == "api"
73
- Requires-Dist: motor; extra == "api"
74
- Requires-Dist: jinja2; extra == "api"
75
- Requires-Dist: supabase; extra == "api"
76
- Requires-Dist: websockets>=11.0; extra == "api"
77
- Dynamic: license-file
78
-
79
- <div align="center">
80
- <a href="https://github.com/OEvortex/Webscout">
81
- <img src="https://img.shields.io/badge/WebScout-Ultimate%20Toolkit-blue?style=for-the-badge&logo=python&logoColor=white" alt="WebScout Logo">
82
- </a>
83
-
84
- <h1>Webscout</h1>
85
-
86
- <p><strong>Your All-in-One Python Toolkit for Web Search, AI Interaction, Digital Utilities, and More</strong></p>
87
-
88
- <p>
89
- Access diverse search engines, cutting-edge AI models, temporary communication tools, media utilities, developer helpers, and powerful CLI interfaces – all through one unified library.
90
- </p>
91
-
92
- <!-- Badges -->
93
- <p>
94
- <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>
95
- <a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout/month?style=flat-square" alt="Monthly Downloads"></a>
96
- <a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout?style=flat-square" alt="Total Downloads"></a>
97
- <a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout?style=flat-square&logo=python" alt="Python Version"></a>
98
- <a href="https://deepwiki.com/OEvortex/Webscout"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
99
- </p>
100
- </div>
101
-
102
- <hr/>
103
-
104
- ## 📋 Table of Contents
105
-
106
- - [🌟 Key Features](#-features)
107
- - [⚙️ Installation](#️-installation)
108
- - [🖥️ Command Line Interface](#️-command-line-interface)
109
- - [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
110
- - [🔍 Search Engines](#-search-engines)
111
- - [🦆 DuckDuckGo Search](#-duckduckgo-search-with-webs-and-asyncwebs)
112
- - [💻 WEBS API Reference](#-webs-api-reference)
113
- - [🤖 AI Models and Voices](#-ai-models-and-voices)
114
- - [💬 AI Chat Providers](#-ai-chat-providers)
115
- - [👨‍💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
116
- - [🤝 Contributing](#-contributing)
117
- - [🙏 Acknowledgments](#-acknowledgments)
118
-
119
- <hr/>
120
-
121
- > [!IMPORTANT]
122
- > **Webscout supports three types of compatibility:**
123
- >
124
- > - **Native Compatibility:** Webscout's own native API for maximum flexibility
125
- > - **OpenAI Compatibility:** Use providers with OpenAI-compatible interfaces
126
- > - **Local LLM Compatibility:** Run local models with [Inferno](https://github.com/HelpingAI/inferno), an OpenAI-compatible server (now a standalone package)
127
- >
128
- > 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.
129
-
130
- > [!NOTE]
131
- > 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.
132
-
133
- <div align="center">
134
- <!-- Social/Support Links -->
135
- <p>
136
- <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>
137
- <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>
138
- <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>
139
- <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>
140
- <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>
141
- <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>
142
- </p>
143
- </div>
144
-
145
- <hr/>
146
-
147
- ## 🚀 Features
148
-
149
- <details open>
150
- <summary><b>Search & AI</b></summary>
151
- <p>
152
-
153
- - **Comprehensive Search:** Leverage Google, DuckDuckGo, and Yep for diverse search results
154
- - **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
155
- - **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
156
- - **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
157
- - **[Local LLMs with Inferno](https://github.com/HelpingAI/inferno):** Run local models with an OpenAI-compatible server (now available as a standalone package)
158
- - **[AI Search](webscout/Provider/AISEARCH/README.md):** AI-powered search engines with advanced capabilities
159
- </p>
160
- </details>
161
-
162
- <details open>
163
- <summary><b>Media & Content Tools</b></summary>
164
- <p>
165
-
166
- - **[YouTube Toolkit](webscout/Extra/YTToolkit/README.md):** Advanced YouTube video and transcript management with multi-language support
167
- - **[Text-to-Speech (TTS)](webscout/Provider/TTS/README.md):** Convert text into natural-sounding speech using multiple AI-powered providers
168
- - **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
169
- - **[Weather Tools](webscout/Extra/weather.md):** Retrieve detailed weather information for any location
170
- </p>
171
- </details>
172
-
173
- <details open>
174
- <summary><b>Developer Tools</b></summary>
175
- <p>
176
-
177
- - **[GitAPI](webscout/Extra/GitToolkit/gitapi):** Powerful GitHub data extraction toolkit without authentication requirements for public data
178
- - **[SwiftCLI](webscout/swiftcli/Readme.md):** A powerful and elegant CLI framework for beautiful command-line interfaces
179
- - **[LitPrinter](webscout/litprinter/Readme.md):** Styled console output with rich formatting and colors
180
- - **[LitLogger](webscout/litlogger/README.md):** Simplified logging with customizable formats and color schemes
181
- - **[LitAgent](webscout/litagent/Readme.md):** Modern user agent generator that keeps your requests undetectable
182
- - **[Scout](webscout/scout/README.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
183
- - **[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`)
184
- - **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
185
- - **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
186
- - **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
187
- </p>
188
- </details>
189
-
190
- <details open>
191
- <summary><b>Privacy & Utilities</b></summary>
192
- <p>
193
-
194
- - **[Tempmail](webscout/Extra/tempmail/README.md) & Temp Number:** Generate temporary email addresses and phone numbers
195
- - **[Awesome Prompts](webscout/Extra/Act.md):** Curated collection of system prompts for specialized AI personas
196
- </p>
197
- </details>
198
-
199
- <hr/>
200
-
201
- ## ⚙️ Installation
202
-
203
- Webscout supports multiple installation methods to fit your workflow:
204
-
205
- ### 📦 Standard Installation
206
-
207
- ```bash
208
- # Install from PyPI
209
- pip install -U webscout
210
-
211
- # Install with API server dependencies
212
- pip install -U "webscout[api]"
213
-
214
- # Install with development dependencies
215
- pip install -U "webscout[dev]"
216
- ```
217
-
218
- ### ⚡ UV Package Manager (Recommended)
219
-
220
- [UV](https://github.com/astral-sh/uv) is a fast Python package manager. Webscout has full UV support:
221
-
222
- ```bash
223
- # Install UV first (if not already installed)
224
- pip install uv
225
-
226
- # Install Webscout with UV
227
- uv add webscout
228
-
229
- # Install with API dependencies
230
- uv add "webscout[api]"
231
-
232
- # Run Webscout directly with UV (no installation needed)
233
- uv run webscout --help
234
-
235
- # Run with API dependencies
236
- uv run webscout --extra api webscout-server
237
-
238
- # Install as a UV tool for global access
239
- uv tool install webscout
240
-
241
- # Use UV tool commands
242
- webscout --help
243
- webscout-server
244
- ```
245
-
246
- ### 🔧 Development Installation
247
-
248
- ```bash
249
- # Clone the repository
250
- git clone https://github.com/OEvortex/Webscout.git
251
- cd Webscout
252
-
253
- # Install in development mode with UV
254
- uv sync --extra dev --extra api
255
-
256
- # Or with pip
257
- pip install -e ".[dev,api]"
258
-
259
- # Or with uv pip
260
- uv pip install -e ".[dev,api]"
261
- ```
262
-
263
- ### 🐳 Docker Installation
264
-
265
- ```bash
266
- # Pull and run the Docker image
267
- docker pull oevortex/webscout:latest
268
- docker run -it oevortex/webscout:latest
269
- ```
270
-
271
- ### 📱 Quick Start Commands
272
-
273
- After installation, you can immediately start using Webscout:
274
-
275
- ```bash
276
- # Check version
277
- webscout version
278
-
279
- # Search the web
280
- webscout text -k "python programming"
281
-
282
- # Start API server
283
- webscout-server
284
-
285
- # Get help
286
- webscout --help
287
- ```
288
-
289
- <hr/>
290
-
291
- ## 🖥️ Command Line Interface
292
-
293
- Webscout provides a powerful command-line interface for quick access to its features. You can use it in multiple ways:
294
-
295
- ### 🚀 Direct Commands (Recommended)
296
-
297
- After installing with `uv tool install webscout` or `pip install webscout`:
298
-
299
- ```bash
300
- # Get help
301
- webscout --help
302
-
303
- # Start API server
304
- webscout-server
305
- ```
306
-
307
- ### 🔧 UV Run Commands (No Installation Required)
308
-
309
- ```bash
310
- # Run directly with UV (downloads and runs automatically)
311
- uv run webscout --help
312
- uv run --extra api webscout-server
313
- ```
314
-
315
- ### 📦 Python Module Commands
316
-
317
- ```bash
318
- # Traditional Python module execution
319
- python -m webscout --help
320
- python -m webscout-server
321
- ```
322
-
323
- <details open>
324
- <summary><b>🔍 Web Search Commands</b></summary>
325
- <p>
326
-
327
- | Command | Description | Example |
328
- | --------------------------------- | --------------------------- | ----------------------------------------- |
329
- | `webscout text -k "query"` | Perform a text search | `webscout text -k "python programming"` |
330
- | `webscout answers -k "query"` | Get instant answers | `webscout answers -k "what is AI"` |
331
- | `webscout images -k "query"` | Search for images | `webscout images -k "nature photography"` |
332
- | `webscout videos -k "query"` | Search for videos | `webscout videos -k "python tutorials"` |
333
- | `webscout news -k "query"` | Search for news articles | `webscout news -k "technology trends"` |
334
- | `webscout maps -k "query"` | Perform a maps search | `webscout maps -k "restaurants near me"` |
335
- | `webscout translate -k "text"` | Translate text | `webscout translate -k "hello world"` |
336
- | `webscout suggestions -k "query"` | Get search suggestions | `webscout suggestions -k "how to"` |
337
- | `webscout weather -l "location"` | Get weather information | `webscout weather -l "New York"` |
338
- | `webscout version` | Display the current version | `webscout version` |
339
-
340
- **Google Search Commands:**
341
- | Command | Description | Example |
342
- |---------|-------------|---------|
343
- | `webscout google_text -k "query"` | Google text search | `webscout google_text -k "machine learning"` |
344
- | `webscout google_news -k "query"` | Google news search | `webscout google_news -k "AI breakthrough"` |
345
- | `webscout google_suggestions -q "query"` | Google suggestions | `webscout google_suggestions -q "python"` |
346
-
347
- **Yep Search Commands:**
348
- | Command | Description | Example |
349
- |---------|-------------|---------|
350
- | `webscout yep_text -k "query"` | Yep text search | `webscout yep_text -k "web development"` |
351
- | `webscout yep_images -k "query"` | Yep image search | `webscout yep_images -k "landscapes"` |
352
- | `webscout yep_suggestions -q "query"` | Yep suggestions | `webscout yep_suggestions -q "javascript"` |
353
-
354
- </p>
355
- </details>
356
-
357
- <details open>
358
- <summary><b>Inferno LLM Commands</b></summary>
359
- <p>
360
-
361
- Inferno is now a standalone package. Install it separately with:
362
-
363
- ```bash
364
- pip install inferno-llm
365
- ```
366
-
367
- After installation, you can use its CLI for managing and using local LLMs:
368
-
369
- ```bash
370
- inferno --help
371
- ```
372
-
373
- | Command | Description |
374
- | ------------------------ | ----------------------------------------------- |
375
- | `inferno pull <model>` | Download a model from Hugging Face |
376
- | `inferno list` | List downloaded models |
377
- | `inferno serve <model>` | Start a model server with OpenAI-compatible API |
378
- | `inferno run <model>` | Chat with a model interactively |
379
- | `inferno remove <model>` | Remove a downloaded model |
380
- | `inferno version` | Show version information |
381
-
382
- For more information, visit the [Inferno GitHub repository](https://github.com/HelpingAI/inferno) or [PyPI package page](https://pypi.org/project/inferno-llm/).
383
-
384
- </p>
385
- </details>
386
-
387
- > [!NOTE]
388
- > **Hardware requirements for running models with Inferno:**
389
- >
390
- > - Around 2 GB of RAM for 1B models
391
- > - Around 4 GB of RAM for 3B models
392
- > - At least 8 GB of RAM for 7B models
393
- > - 16 GB of RAM for 13B models
394
- > - 32 GB of RAM for 33B models
395
- > - GPU acceleration is recommended for better performance
396
-
397
- 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).
398
-
399
- <hr/>
400
-
401
- ## 🔍 Search Engines
402
-
403
- Webscout provides multiple search engine interfaces for diverse search capabilities.
404
-
405
- ### YepSearch - Yep.com Interface
406
-
407
- ```python
408
- from webscout import YepSearch
409
-
410
- # Initialize YepSearch
411
- yep = YepSearch(
412
- timeout=20, # Optional: Set custom timeout
413
- proxies=None, # Optional: Use proxies
414
- verify=True # Optional: SSL verification
415
- )
416
-
417
- # Text Search
418
- text_results = yep.text(
419
- keywords="artificial intelligence",
420
- region="all", # Optional: Region for results
421
- safesearch="moderate", # Optional: "on", "moderate", "off"
422
- max_results=10 # Optional: Limit number of results
423
- )
424
-
425
- # Image Search
426
- image_results = yep.images(
427
- keywords="nature photography",
428
- region="all",
429
- safesearch="moderate",
430
- max_results=10
431
- )
432
-
433
- # Get search suggestions
434
- suggestions = yep.suggestions("hist")
435
- ```
436
-
437
- ### GoogleSearch - Google Interface
438
-
439
- ```python
440
- from webscout import GoogleSearch
441
-
442
- # Initialize GoogleSearch
443
- google = GoogleSearch(
444
- timeout=10, # Optional: Set custom timeout
445
- proxies=None, # Optional: Use proxies
446
- verify=True # Optional: SSL verification
447
- )
448
-
449
- # Text Search
450
- text_results = google.text(
451
- keywords="artificial intelligence",
452
- region="us", # Optional: Region for results
453
- safesearch="moderate", # Optional: "on", "moderate", "off"
454
- max_results=10 # Optional: Limit number of results
455
- )
456
- for result in text_results:
457
- print(f"Title: {result.title}")
458
- print(f"URL: {result.url}")
459
- print(f"Description: {result.description}")
460
-
461
- # News Search
462
- news_results = google.news(
463
- keywords="technology trends",
464
- region="us",
465
- safesearch="moderate",
466
- max_results=5
467
- )
468
-
469
- # Get search suggestions
470
- suggestions = google.suggestions("how to")
471
-
472
- # Legacy usage is still supported
473
- from webscout import search
474
- results = search("Python programming", num_results=5)
475
- ```
476
-
477
- <hr/>
478
-
479
- ## 🦆 DuckDuckGo Search with WEBS and AsyncWEBS
480
-
481
- Webscout provides powerful interfaces to DuckDuckGo's search capabilities through the `WEBS` and `AsyncWEBS` classes.
482
-
483
- <details open>
484
- <summary><b>Synchronous Usage with WEBS</b></summary>
485
- <p>
486
-
487
- ```python
488
- from webscout import WEBS
489
-
490
- # Use as a context manager for proper resource management
491
- with WEBS() as webs:
492
- # Simple text search
493
- results = webs.text("python programming", max_results=5)
494
- for result in results:
495
- print(f"Title: {result['title']}\nURL: {result['url']}")
496
- ```
497
-
498
- </p>
499
- </details>
500
-
501
- <details open>
502
- <summary><b>Asynchronous Usage with AsyncWEBS</b></summary>
503
- <p>
504
-
505
- ```python
506
- import asyncio
507
- from webscout import AsyncWEBS
508
-
509
- async def search_multiple_terms(search_terms):
510
- async with AsyncWEBS() as webs:
511
- # Create tasks for each search term
512
- tasks = [webs.text(term, max_results=5) for term in search_terms]
513
- # Run all searches concurrently
514
- results = await asyncio.gather(*tasks)
515
- return results
516
-
517
- async def main():
518
- terms = ["python", "javascript", "machine learning"]
519
- all_results = await search_multiple_terms(terms)
520
-
521
- # Process results
522
- for i, term_results in enumerate(all_results):
523
- print(f"Results for '{terms[i]}':\n")
524
- for result in term_results:
525
- print(f"- {result['title']}")
526
- print("\n")
527
-
528
- # Run the async function
529
- asyncio.run(main())
530
- ```
531
-
532
- </p>
533
- </details>
534
-
535
- > [!TIP]
536
- > Always use these classes with a context manager (`with` statement) to ensure proper resource management and cleanup.
537
-
538
- <hr/>
539
-
540
- ## 💻 WEBS API Reference
541
-
542
- The WEBS class provides comprehensive access to DuckDuckGo's search capabilities through a clean, intuitive API.
543
-
544
- ### Available Search Methods
545
-
546
- | Method | Description | Example |
547
- | --------------- | ------------------- | -------------------------------------------- |
548
- | `text()` | General web search | `webs.text('python programming')` |
549
- | `answers()` | Instant answers | `webs.answers('population of france')` |
550
- | `images()` | Image search | `webs.images('nature photography')` |
551
- | `videos()` | Video search | `webs.videos('documentary')` |
552
- | `news()` | News articles | `webs.news('technology')` |
553
- | `maps()` | Location search | `webs.maps('restaurants', place='new york')` |
554
- | `translate()` | Text translation | `webs.translate('hello', to='es')` |
555
- | `suggestions()` | Search suggestions | `webs.suggestions('how to')` |
556
- | `weather()` | Weather information | `webs.weather('london')` |
557
-
558
- <details>
559
- <summary><b>Example: Text Search</b></summary>
560
- <p>
561
-
562
- ```python
563
- from webscout import WEBS
564
-
565
- with WEBS() as webs:
566
- results = webs.text(
567
- 'artificial intelligence',
568
- region='wt-wt', # Optional: Region for results
569
- safesearch='off', # Optional: 'on', 'moderate', 'off'
570
- timelimit='y', # Optional: Time limit ('d'=day, 'w'=week, 'm'=month, 'y'=year)
571
- max_results=10 # Optional: Limit number of results
572
- )
573
-
574
- for result in results:
575
- print(f"Title: {result['title']}")
576
- print(f"URL: {result['url']}")
577
- print(f"Description: {result['body']}\n")
578
- ```
579
-
580
- </p>
581
- </details>
582
-
583
- <details>
584
- <summary><b>Example: News Search with Formatting</b></summary>
585
- <p>
586
-
587
- ```python
588
- from webscout import WEBS
589
- import datetime
590
-
591
- def fetch_formatted_news(keywords, timelimit='d', max_results=20):
592
- """Fetch and format news articles"""
593
- with WEBS() as webs:
594
- # Get news results
595
- news_results = webs.news(
596
- keywords,
597
- region="wt-wt",
598
- safesearch="off",
599
- timelimit=timelimit, # 'd'=day, 'w'=week, 'm'=month
600
- max_results=max_results
601
- )
602
-
603
- # Format the results
604
- formatted_news = []
605
- for i, item in enumerate(news_results, 1):
606
- # Format the date
607
- date = datetime.datetime.fromisoformat(item['date']).strftime('%B %d, %Y')
608
-
609
- # Create formatted entry
610
- entry = f"{i}. {item['title']}\n"
611
- entry += f" Published: {date}\n"
612
- entry += f" {item['body']}\n"
613
- entry += f" URL: {item['url']}\n"
614
-
615
- formatted_news.append(entry)
616
-
617
- return formatted_news
618
-
619
- # Example usage
620
- news = fetch_formatted_news('artificial intelligence', timelimit='w', max_results=5)
621
- print('\n'.join(news))
622
- ```
623
-
624
- </p>
625
- </details>
626
-
627
- <details>
628
- <summary><b>Example: Weather Information</b></summary>
629
- <p>
630
-
631
- ```python
632
- from webscout import WEBS
633
-
634
- with WEBS() as webs:
635
- # Get weather for a location
636
- weather = webs.weather("New York")
637
-
638
- # Access weather data
639
- if weather:
640
- print(f"Location: {weather.get('location', 'Unknown')}")
641
- print(f"Temperature: {weather.get('temperature', 'N/A')}")
642
- print(f"Conditions: {weather.get('condition', 'N/A')}")
643
- ```
644
-
645
- </p>
646
- </details>
647
-
648
- <hr/>
649
-
650
- ## 🤖 AI Models and Voices
651
-
652
- Webscout provides easy access to a wide range of AI models and voice options.
653
-
654
- <details open>
655
- <summary><b>LLM Models</b></summary>
656
- <p>
657
-
658
- Access and manage Large Language Models with Webscout's model utilities.
659
-
660
- ```python
661
- from webscout import model
662
- from rich import print
663
-
664
- # List all available LLM models
665
- all_models = model.llm.list()
666
- print(f"Total available models: {len(all_models)}")
667
-
668
- # Get a summary of models by provider
669
- summary = model.llm.summary()
670
- print("Models by provider:")
671
- for provider, count in summary.items():
672
- print(f" {provider}: {count} models")
673
-
674
- # Get models for a specific provider
675
- provider_name = "PerplexityLabs"
676
- available_models = model.llm.get(provider_name)
677
- print(f"\n{provider_name} models:")
678
- if isinstance(available_models, list):
679
- for i, model_name in enumerate(available_models, 1):
680
- print(f" {i}. {model_name}")
681
- else:
682
- print(f" {available_models}")
683
- ```
684
-
685
- </p>
686
- </details>
687
-
688
- <details open>
689
- <summary><b>TTS Voices</b></summary>
690
- <p>
691
-
692
- Access and manage Text-to-Speech voices across multiple providers.
693
-
694
- ```python
695
- from webscout import model
696
- from rich import print
697
-
698
- # List all available TTS voices
699
- all_voices = model.tts.list()
700
- print(f"Total available voices: {len(all_voices)}")
701
-
702
- # Get a summary of voices by provider
703
- summary = model.tts.summary()
704
- print("\nVoices by provider:")
705
- for provider, count in summary.items():
706
- print(f" {provider}: {count} voices")
707
-
708
- # Get voices for a specific provider
709
- provider_name = "ElevenlabsTTS"
710
- available_voices = model.tts.get(provider_name)
711
- print(f"\n{provider_name} voices:")
712
- if isinstance(available_voices, dict):
713
- for voice_name, voice_id in list(available_voices.items())[:5]: # Show first 5 voices
714
- print(f" - {voice_name}: {voice_id}")
715
- if len(available_voices) > 5:
716
- print(f" ... and {len(available_voices) - 5} more")
717
- ```
718
-
719
- </p>
720
- </details>
721
-
722
- <hr/>
723
-
724
- ## 💬 AI Chat Providers
725
-
726
- Webscout offers a comprehensive collection of AI chat providers, giving you access to various language models through a consistent interface.
727
-
728
- ### Popular AI Providers
729
-
730
- <div class="provider-table">
731
-
732
- | Provider | Description | Key Features |
733
- | ---------------- | ------------------------ | ---------------------------------- |
734
- | `OPENAI` | OpenAI's models | GPT-3.5, GPT-4, tool calling |
735
- | `GEMINI` | Google's Gemini models | Web search capabilities |
736
- | `Meta` | Meta's AI assistant | Image generation, web search |
737
- | `GROQ` | Fast inference platform | High-speed inference, tool calling |
738
- | `LLAMA` | Meta's Llama models | Open weights models |
739
- | `DeepInfra` | Various open models | Multiple model options |
740
- | `Cohere` | Cohere's language models | Command models |
741
- | `PerplexityLabs` | Perplexity AI | Web search integration |
742
- | `YEPCHAT` | Yep.com's AI | Streaming responses |
743
- | `ChatGPTClone` | ChatGPT-like interface | Multiple model options |
744
- | `TypeGPT` | TypeChat models | Multiple model options |
745
-
746
- </div>
747
-
748
- <details>
749
- <summary><b>Example: Using Meta AI</b></summary>
750
- <p>
751
-
752
- ```python
753
- from webscout import Meta
754
-
755
- # For basic usage (no authentication required)
756
- meta_ai = Meta()
757
-
758
- # Simple text prompt
759
- response = meta_ai.chat("What is the capital of France?")
760
- print(response)
761
-
762
- # For authenticated usage with web search and image generation
763
- meta_ai = Meta(fb_email="your_email@example.com", fb_password="your_password")
764
-
765
- # Text prompt with web search
766
- response = meta_ai.ask("What are the latest developments in quantum computing?")
767
- print(response["message"])
768
- print("Sources:", response["sources"])
769
-
770
- # Image generation
771
- response = meta_ai.ask("Create an image of a futuristic city")
772
- for media in response.get("media", []):
773
- print(media["url"])
774
- ```
775
-
776
- </p>
777
- </details>
778
-
779
- <details>
780
- <summary><b>Example: GROQ with Tool Calling</b></summary>
781
- <p>
782
-
783
- ```python
784
- from webscout import GROQ, WEBS
785
- import json
786
-
787
- # Initialize GROQ client
788
- client = GROQ(api_key="your_api_key")
789
-
790
- # Define helper functions
791
- def calculate(expression):
792
- """Evaluate a mathematical expression"""
793
- try:
794
- result = eval(expression)
795
- return json.dumps({"result": result})
796
- except Exception as e:
797
- return json.dumps({"error": str(e)})
798
-
799
- def search(query):
800
- """Perform a web search"""
801
- try:
802
- results = WEBS().text(query, max_results=3)
803
- return json.dumps({"results": results})
804
- except Exception as e:
805
- return json.dumps({"error": str(e)})
806
-
807
- # Register functions with GROQ
808
- client.add_function("calculate", calculate)
809
- client.add_function("search", search)
810
-
811
- # Define tool specifications
812
- tools = [
813
- {
814
- "type": "function",
815
- "function": {
816
- "name": "calculate",
817
- "description": "Evaluate a mathematical expression",
818
- "parameters": {
819
- "type": "object",
820
- "properties": {
821
- "expression": {
822
- "type": "string",
823
- "description": "The mathematical expression to evaluate"
824
- }
825
- },
826
- "required": ["expression"]
827
- }
828
- }
829
- },
830
- {
831
- "type": "function",
832
- "function": {
833
- "name": "search",
834
- "description": "Perform a web search",
835
- "parameters": {
836
- "type": "object",
837
- "properties": {
838
- "query": {
839
- "type": "string",
840
- "description": "The search query"
841
- }
842
- },
843
- "required": ["query"]
844
- }
845
- }
846
- }
847
- ]
848
-
849
- # Use the tools
850
- response = client.chat("What is 25 * 4 + 10?", tools=tools)
851
- print(response)
852
-
853
- response = client.chat("Find information about quantum computing", tools=tools)
854
- print(response)
855
- ```
856
-
857
- </p>
858
- </details>
859
-
860
- <details open>
861
- <summary><b>GGUF Model Conversion</b></summary>
862
- <p>
863
-
864
- Webscout provides tools to convert and quantize Hugging Face models into the GGUF format for offline use.
865
-
866
- ```python
867
- from webscout.Extra.gguf import ModelConverter
868
-
869
- # Create a converter instance
870
- converter = ModelConverter(
871
- model_id="mistralai/Mistral-7B-Instruct-v0.2", # Hugging Face model ID
872
- quantization_methods="q4_k_m" # Quantization method
873
- )
874
-
875
- # Run the conversion
876
- converter.convert()
877
- ```
878
-
879
- #### Available Quantization Methods
880
-
881
- | Method | Description |
882
- | -------- | ------------------------------------------------------------- |
883
- | `fp16` | 16-bit floating point - maximum accuracy, largest size |
884
- | `q2_k` | 2-bit quantization (smallest size, lowest accuracy) |
885
- | `q3_k_l` | 3-bit quantization (large) - balanced for size/accuracy |
886
- | `q3_k_m` | 3-bit quantization (medium) - good balance for most use cases |
887
- | `q3_k_s` | 3-bit quantization (small) - optimized for speed |
888
- | `q4_0` | 4-bit quantization (version 0) - standard 4-bit compression |
889
- | `q4_1` | 4-bit quantization (version 1) - improved accuracy over q4_0 |
890
- | `q4_k_m` | 4-bit quantization (medium) - balanced for most models |
891
- | `q4_k_s` | 4-bit quantization (small) - optimized for speed |
892
- | `q5_0` | 5-bit quantization (version 0) - high accuracy, larger size |
893
- | `q5_1` | 5-bit quantization (version 1) - improved accuracy over q5_0 |
894
- | `q5_k_m` | 5-bit quantization (medium) - best balance for quality/size |
895
- | `q5_k_s` | 5-bit quantization (small) - optimized for speed |
896
- | `q6_k` | 6-bit quantization - highest accuracy, largest size |
897
- | `q8_0` | 8-bit quantization - maximum accuracy, largest size |
898
-
899
- #### Command Line Usage
900
-
901
- ```bash
902
- python -m webscout.Extra.gguf convert -m "mistralai/Mistral-7B-Instruct-v0.2" -q "q4_k_m"
903
- ```
904
-
905
- </p>
906
- </details>
907
-
908
- <div align="center">
909
- <p>
910
- <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a> |
911
- <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
912
- </p>
913
- </div>
914
-
915
- <hr/>
916
-
917
- ## 🤝 Contributing
918
-
919
- Contributions are welcome! If you'd like to contribute to Webscout, please follow these steps:
920
-
921
- 1. Fork the repository
922
- 2. Create a new branch for your feature or bug fix
923
- 3. Make your changes and commit them with descriptive messages
924
- 4. Push your branch to your forked repository
925
- 5. Submit a pull request to the main repository
926
-
927
- ## 🙏 Acknowledgments
928
-
929
- - All the amazing developers who have contributed to the project
930
- - The open-source community for their support and inspiration
931
-
932
- <hr/>
933
-
934
- <div align="center">
935
- <p>Made with ❤️ by the Webscout team</p>
936
- </div>
1
+ Metadata-Version: 2.4
2
+ Name: webscout
3
+ Version: 2025.10.11
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-email: OEvortex <helpingai5@gmail.com>
6
+ License: HelpingAI
7
+ Project-URL: Source, https://github.com/OE-LUCIFER/Webscout
8
+ Project-URL: Tracker, https://github.com/OE-LUCIFER/Webscout/issues
9
+ Project-URL: YouTube, https://youtube.com/@OEvortex
10
+ Keywords: search,ai,chatbot,llm,language-model,gpt,openai,gemini,claude,llama,search-engine,text-to-speech,tts,text-to-image,tti,weather,youtube,toolkit,utilities,web-search,duckduckgo,google,yep
11
+ Classifier: Development Status :: 5 - Production/Stable
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: End Users/Desktop
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: License :: Other/Proprietary License
16
+ Classifier: Natural Language :: English
17
+ Classifier: Operating System :: OS Independent
18
+ Classifier: Operating System :: Microsoft :: Windows
19
+ Classifier: Operating System :: POSIX :: Linux
20
+ Classifier: Operating System :: MacOS :: MacOS X
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.9
23
+ Classifier: Programming Language :: Python :: 3.10
24
+ Classifier: Programming Language :: Python :: 3.11
25
+ Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Programming Language :: Python :: 3.13
27
+ Classifier: Programming Language :: Python :: Implementation :: CPython
28
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
29
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
30
+ Classifier: Topic :: Text Processing :: Linguistic
31
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
32
+ Classifier: Topic :: Communications
33
+ Classifier: Topic :: Utilities
34
+ Requires-Python: >=3.9
35
+ Description-Content-Type: text/markdown
36
+ License-File: LICENSE.md
37
+ Requires-Dist: setuptools
38
+ Requires-Dist: wheel
39
+ Requires-Dist: pip
40
+ Requires-Dist: nodriver
41
+ Requires-Dist: mistune
42
+ Requires-Dist: curl_cffi
43
+ Requires-Dist: nest-asyncio
44
+ Requires-Dist: colorama
45
+ Requires-Dist: rich
46
+ Requires-Dist: markdownify
47
+ Requires-Dist: requests
48
+ Requires-Dist: google-generativeai
49
+ Requires-Dist: lxml>=5.2.2
50
+ Requires-Dist: orjson
51
+ Requires-Dist: PyYAML
52
+ Requires-Dist: pillow
53
+ Requires-Dist: bson
54
+ Requires-Dist: cloudscraper
55
+ Requires-Dist: html5lib
56
+ Requires-Dist: aiofiles
57
+ Requires-Dist: openai
58
+ Requires-Dist: gradio_client
59
+ Requires-Dist: psutil
60
+ Requires-Dist: aiohttp
61
+ Requires-Dist: zstandard
62
+ Requires-Dist: brotli
63
+ Requires-Dist: litproxy
64
+ Provides-Extra: dev
65
+ Requires-Dist: ruff>=0.1.6; extra == "dev"
66
+ Requires-Dist: pytest>=7.4.2; extra == "dev"
67
+ Provides-Extra: api
68
+ Requires-Dist: fastapi; extra == "api"
69
+ Requires-Dist: uvicorn[standard]; extra == "api"
70
+ Requires-Dist: pydantic; extra == "api"
71
+ Requires-Dist: python-multipart; extra == "api"
72
+ Requires-Dist: tiktoken; extra == "api"
73
+ Requires-Dist: motor; extra == "api"
74
+ Requires-Dist: jinja2; extra == "api"
75
+ Requires-Dist: supabase; extra == "api"
76
+ Requires-Dist: websockets>=11.0; extra == "api"
77
+ Requires-Dist: starlette; extra == "api"
78
+ Dynamic: license-file
79
+
80
+ <div align="center">
81
+ <a href="https://github.com/OEvortex/Webscout">
82
+ <img src="https://img.shields.io/badge/WebScout-Ultimate%20Toolkit-blue?style=for-the-badge&logo=python&logoColor=white" alt="WebScout Logo">
83
+ </a>
84
+
85
+ <h1>Webscout</h1>
86
+
87
+ <p><strong>Your All-in-One Python Toolkit for Web Search, AI Interaction, Digital Utilities, and More</strong></p>
88
+
89
+ <p>
90
+ Access diverse search engines, cutting-edge AI models, temporary communication tools, media utilities, developer helpers, and powerful CLI interfaces – all through one unified library.
91
+ </p>
92
+
93
+ <!-- Badges -->
94
+ <p>
95
+ <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>
96
+ <a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout/month?style=flat-square" alt="Monthly Downloads"></a>
97
+ <a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout?style=flat-square" alt="Total Downloads"></a>
98
+ <a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout?style=flat-square&logo=python" alt="Python Version"></a>
99
+ <a href="https://deepwiki.com/OEvortex/Webscout"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
100
+ </p>
101
+ </div>
102
+
103
+ <hr/>
104
+
105
+ ## 📋 Table of Contents
106
+
107
+ - [🌟 Key Features](#-features)
108
+ - [⚙️ Installation](#️-installation)
109
+ - [🖥️ Command Line Interface](#️-command-line-interface)
110
+ - [🔄 OpenAI-Compatible API Server](docs/openai-api-server.md)
111
+ - [🔍 Search Engines](#-search-engines)
112
+ - [🦆 DuckDuckGo Search](#-duckduckgo-search-with-webs-and-asyncwebs)
113
+ - [💻 WEBS API Reference](#-webs-api-reference)
114
+ - [🤖 AI Models and Voices](#-ai-models-and-voices)
115
+ - [💬 AI Chat Providers](#-ai-chat-providers)
116
+ - [👨‍💻 Advanced AI Interfaces](#-advanced-ai-interfaces)
117
+ - [🤝 Contributing](#-contributing)
118
+ - [🙏 Acknowledgments](#-acknowledgments)
119
+
120
+ <hr/>
121
+
122
+ > [!IMPORTANT]
123
+ > **Webscout supports three types of compatibility:**
124
+ >
125
+ > - **Native Compatibility:** Webscout's own native API for maximum flexibility
126
+ > - **OpenAI Compatibility:** Use providers with OpenAI-compatible interfaces
127
+ > - **Local LLM Compatibility:** Run local models with [Inferno](https://github.com/HelpingAI/inferno), an OpenAI-compatible server (now a standalone package)
128
+ >
129
+ > Choose the approach that best fits your needs! For OpenAI compatibility, check the [OpenAI Providers README](webscout/Provider/OPENAI/README.md) or see the [OpenAI-Compatible API Server](#-openai-compatible-api-server) section below.
130
+
131
+ > [!NOTE]
132
+ > 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.
133
+
134
+ <div align="center">
135
+ <!-- Social/Support Links -->
136
+ <p>
137
+ <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>
138
+ <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>
139
+ <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>
140
+ <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>
141
+ <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>
142
+ <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>
143
+ </p>
144
+ </div>
145
+
146
+ <hr/>
147
+
148
+ ## 🚀 Features
149
+
150
+ <details open>
151
+ <summary><b>Search & AI</b></summary>
152
+ <p>
153
+
154
+ - **Comprehensive Search:** Leverage Google, DuckDuckGo, and Yep for diverse search results
155
+ - **AI Powerhouse:** Access and interact with various AI models through three compatibility options:
156
+ - **Native API:** Use Webscout's native interfaces for providers like OpenAI, Cohere, Gemini, and many more
157
+ - **[OpenAI-Compatible Providers](webscout/Provider/OPENAI/README.md):** Seamlessly integrate with various AI providers using standardized OpenAI-compatible interfaces
158
+ - **[Local LLMs with Inferno](https://github.com/HelpingAI/inferno):** Run local models with an OpenAI-compatible server (now available as a standalone package)
159
+ - **[AI Search](webscout/Provider/AISEARCH/README.md):** AI-powered search engines with advanced capabilities
160
+ </p>
161
+ </details>
162
+
163
+ <details open>
164
+ <summary><b>Media & Content Tools</b></summary>
165
+ <p>
166
+
167
+ - **[YouTube Toolkit](webscout/Extra/YTToolkit/README.md):** Advanced YouTube video and transcript management with multi-language support
168
+ - **[Text-to-Speech (TTS)](webscout/Provider/TTS/README.md):** Convert text into natural-sounding speech using multiple AI-powered providers
169
+ - **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
170
+ - **[Weather Tools](webscout/Extra/weather.md):** Retrieve detailed weather information for any location
171
+ </p>
172
+ </details>
173
+
174
+ <details open>
175
+ <summary><b>Developer Tools</b></summary>
176
+ <p>
177
+
178
+ - **[GitAPI](webscout/Extra/GitToolkit/gitapi):** Powerful GitHub data extraction toolkit without authentication requirements for public data
179
+ - **[SwiftCLI](webscout/swiftcli/Readme.md):** A powerful and elegant CLI framework for beautiful command-line interfaces
180
+ - **[LitPrinter](webscout/litprinter/Readme.md):** Styled console output with rich formatting and colors
181
+ - **[LitLogger](webscout/litlogger/README.md):** Simplified logging with customizable formats and color schemes
182
+ - **[LitAgent](webscout/litagent/Readme.md):** Modern user agent generator that keeps your requests undetectable
183
+ - **[Scout](webscout/scout/README.md):** Advanced web parsing and crawling library with intelligent HTML/XML parsing
184
+ - **[Inferno](https://github.com/HelpingAI/inferno):** Run local LLMs with an OpenAI-compatible API and interactive CLI (now a standalone package: `pip install inferno-llm`)
185
+ - **[GGUF Conversion](webscout/Extra/gguf.md):** Convert and quantize Hugging Face models to GGUF format
186
+ - **[Utility Decorators](docs/decorators.md):** Easily measure function execution time (`timeIt`) and add retry logic (`retry`) to any function
187
+ - **[Stream Sanitization Utilities](docs/sanitize.md):** Advanced tools for cleaning, decoding, and processing data streams
188
+ </p>
189
+ </details>
190
+
191
+ <details open>
192
+ <summary><b>Privacy & Utilities</b></summary>
193
+ <p>
194
+
195
+ - **[Tempmail](webscout/Extra/tempmail/README.md) & Temp Number:** Generate temporary email addresses and phone numbers
196
+ - **[Awesome Prompts](webscout/Extra/Act.md):** Curated collection of system prompts for specialized AI personas
197
+ </p>
198
+ </details>
199
+
200
+ <hr/>
201
+
202
+ ## ⚙️ Installation
203
+
204
+ Webscout supports multiple installation methods to fit your workflow:
205
+
206
+ ### 📦 Standard Installation
207
+
208
+ ```bash
209
+ # Install from PyPI
210
+ pip install -U webscout
211
+
212
+ # Install with API server dependencies
213
+ pip install -U "webscout[api]"
214
+
215
+ # Install with development dependencies
216
+ pip install -U "webscout[dev]"
217
+ ```
218
+
219
+ ### ⚡ UV Package Manager (Recommended)
220
+
221
+ [UV](https://github.com/astral-sh/uv) is a fast Python package manager. Webscout has full UV support:
222
+
223
+ ```bash
224
+ # Install UV first (if not already installed)
225
+ pip install uv
226
+
227
+ # Install Webscout with UV
228
+ uv add webscout
229
+
230
+ # Install with API dependencies
231
+ uv add "webscout[api]"
232
+
233
+ # Run Webscout directly with UV (no installation needed)
234
+ uv run webscout --help
235
+
236
+ # Run with API dependencies
237
+ uv run webscout --extra api webscout-server
238
+
239
+ # Install as a UV tool for global access
240
+ uv tool install webscout
241
+
242
+ # Use UV tool commands
243
+ webscout --help
244
+ webscout-server
245
+ ```
246
+
247
+ ### 🔧 Development Installation
248
+
249
+ ```bash
250
+ # Clone the repository
251
+ git clone https://github.com/OEvortex/Webscout.git
252
+ cd Webscout
253
+
254
+ # Install in development mode with UV
255
+ uv sync --extra dev --extra api
256
+
257
+ # Or with pip
258
+ pip install -e ".[dev,api]"
259
+
260
+ # Or with uv pip
261
+ uv pip install -e ".[dev,api]"
262
+ ```
263
+
264
+ ### 🐳 Docker Installation
265
+
266
+ ```bash
267
+ # Pull and run the Docker image
268
+ docker pull oevortex/webscout:latest
269
+ docker run -it oevortex/webscout:latest
270
+ ```
271
+
272
+ ### 📱 Quick Start Commands
273
+
274
+ After installation, you can immediately start using Webscout:
275
+
276
+ ```bash
277
+ # Check version
278
+ webscout version
279
+
280
+ # Search the web
281
+ webscout text -k "python programming"
282
+
283
+ # Start API server
284
+ webscout-server
285
+
286
+ # Get help
287
+ webscout --help
288
+ ```
289
+
290
+ <hr/>
291
+
292
+ ## 🖥️ Command Line Interface
293
+
294
+ Webscout provides a powerful command-line interface for quick access to its features. You can use it in multiple ways:
295
+
296
+ ### 🚀 Direct Commands (Recommended)
297
+
298
+ After installing with `uv tool install webscout` or `pip install webscout`:
299
+
300
+ ```bash
301
+ # Get help
302
+ webscout --help
303
+
304
+ # Start API server
305
+ webscout-server
306
+ ```
307
+
308
+ ### 🔧 UV Run Commands (No Installation Required)
309
+
310
+ ```bash
311
+ # Run directly with UV (downloads and runs automatically)
312
+ uv run webscout --help
313
+ uv run --extra api webscout-server
314
+ ```
315
+
316
+ ### 📦 Python Module Commands
317
+
318
+ ```bash
319
+ # Traditional Python module execution
320
+ python -m webscout --help
321
+ python -m webscout-server
322
+ ```
323
+
324
+ <details open>
325
+ <summary><b>🔍 Web Search Commands</b></summary>
326
+ <p>
327
+
328
+ | Command | Description | Example |
329
+ | --------------------------------- | --------------------------- | ----------------------------------------- |
330
+ | `webscout text -k "query"` | Perform a text search | `webscout text -k "python programming"` |
331
+ | `webscout answers -k "query"` | Get instant answers | `webscout answers -k "what is AI"` |
332
+ | `webscout images -k "query"` | Search for images | `webscout images -k "nature photography"` |
333
+ | `webscout videos -k "query"` | Search for videos | `webscout videos -k "python tutorials"` |
334
+ | `webscout news -k "query"` | Search for news articles | `webscout news -k "technology trends"` |
335
+ | `webscout maps -k "query"` | Perform a maps search | `webscout maps -k "restaurants near me"` |
336
+ | `webscout translate -k "text"` | Translate text | `webscout translate -k "hello world"` |
337
+ | `webscout suggestions -k "query"` | Get search suggestions | `webscout suggestions -k "how to"` |
338
+ | `webscout weather -l "location"` | Get weather information | `webscout weather -l "New York"` |
339
+ | `webscout version` | Display the current version | `webscout version` |
340
+
341
+ **Google Search Commands:**
342
+ | Command | Description | Example |
343
+ |---------|-------------|---------|
344
+ | `webscout google_text -k "query"` | Google text search | `webscout google_text -k "machine learning"` |
345
+ | `webscout google_news -k "query"` | Google news search | `webscout google_news -k "AI breakthrough"` |
346
+ | `webscout google_suggestions -q "query"` | Google suggestions | `webscout google_suggestions -q "python"` |
347
+
348
+ **Yep Search Commands:**
349
+ | Command | Description | Example |
350
+ |---------|-------------|---------|
351
+ | `webscout yep_text -k "query"` | Yep text search | `webscout yep_text -k "web development"` |
352
+ | `webscout yep_images -k "query"` | Yep image search | `webscout yep_images -k "landscapes"` |
353
+ | `webscout yep_suggestions -q "query"` | Yep suggestions | `webscout yep_suggestions -q "javascript"` |
354
+
355
+ </p>
356
+ </details>
357
+
358
+ <details open>
359
+ <summary><b>Inferno LLM Commands</b></summary>
360
+ <p>
361
+
362
+ Inferno is now a standalone package. Install it separately with:
363
+
364
+ ```bash
365
+ pip install inferno-llm
366
+ ```
367
+
368
+ After installation, you can use its CLI for managing and using local LLMs:
369
+
370
+ ```bash
371
+ inferno --help
372
+ ```
373
+
374
+ | Command | Description |
375
+ | ------------------------ | ----------------------------------------------- |
376
+ | `inferno pull <model>` | Download a model from Hugging Face |
377
+ | `inferno list` | List downloaded models |
378
+ | `inferno serve <model>` | Start a model server with OpenAI-compatible API |
379
+ | `inferno run <model>` | Chat with a model interactively |
380
+ | `inferno remove <model>` | Remove a downloaded model |
381
+ | `inferno version` | Show version information |
382
+
383
+ For more information, visit the [Inferno GitHub repository](https://github.com/HelpingAI/inferno) or [PyPI package page](https://pypi.org/project/inferno-llm/).
384
+
385
+ </p>
386
+ </details>
387
+
388
+ > [!NOTE]
389
+ > **Hardware requirements for running models with Inferno:**
390
+ >
391
+ > - Around 2 GB of RAM for 1B models
392
+ > - Around 4 GB of RAM for 3B models
393
+ > - At least 8 GB of RAM for 7B models
394
+ > - 16 GB of RAM for 13B models
395
+ > - 32 GB of RAM for 33B models
396
+ > - GPU acceleration is recommended for better performance
397
+
398
+ For detailed information about the OpenAI-compatible API server, including setup, configuration, and usage examples, see the [OpenAI API Server Documentation](docs/openai-api-server.md).
399
+
400
+ <hr/>
401
+
402
+ ## 🔍 Search Engines
403
+
404
+ Webscout provides multiple search engine interfaces for diverse search capabilities.
405
+
406
+ ### YepSearch - Yep.com Interface
407
+
408
+ ```python
409
+ from webscout import YepSearch
410
+
411
+ # Initialize YepSearch
412
+ yep = YepSearch(
413
+ timeout=20, # Optional: Set custom timeout
414
+ proxies=None, # Optional: Use proxies
415
+ verify=True # Optional: SSL verification
416
+ )
417
+
418
+ # Text Search
419
+ text_results = yep.text(
420
+ keywords="artificial intelligence",
421
+ region="all", # Optional: Region for results
422
+ safesearch="moderate", # Optional: "on", "moderate", "off"
423
+ max_results=10 # Optional: Limit number of results
424
+ )
425
+
426
+ # Image Search
427
+ image_results = yep.images(
428
+ keywords="nature photography",
429
+ region="all",
430
+ safesearch="moderate",
431
+ max_results=10
432
+ )
433
+
434
+ # Get search suggestions
435
+ suggestions = yep.suggestions("hist")
436
+ ```
437
+
438
+ ### GoogleSearch - Google Interface
439
+
440
+ ```python
441
+ from webscout import GoogleSearch
442
+
443
+ # Initialize GoogleSearch
444
+ google = GoogleSearch(
445
+ timeout=10, # Optional: Set custom timeout
446
+ proxies=None, # Optional: Use proxies
447
+ verify=True # Optional: SSL verification
448
+ )
449
+
450
+ # Text Search
451
+ text_results = google.text(
452
+ keywords="artificial intelligence",
453
+ region="us", # Optional: Region for results
454
+ safesearch="moderate", # Optional: "on", "moderate", "off"
455
+ max_results=10 # Optional: Limit number of results
456
+ )
457
+ for result in text_results:
458
+ print(f"Title: {result.title}")
459
+ print(f"URL: {result.url}")
460
+ print(f"Description: {result.description}")
461
+
462
+ # News Search
463
+ news_results = google.news(
464
+ keywords="technology trends",
465
+ region="us",
466
+ safesearch="moderate",
467
+ max_results=5
468
+ )
469
+
470
+ # Get search suggestions
471
+ suggestions = google.suggestions("how to")
472
+
473
+ # Legacy usage is still supported
474
+ from webscout import search
475
+ results = search("Python programming", num_results=5)
476
+ ```
477
+
478
+ <hr/>
479
+
480
+ ## 🦆 DuckDuckGo Search with WEBS and AsyncWEBS
481
+
482
+ Webscout provides powerful interfaces to DuckDuckGo's search capabilities through the `WEBS` and `AsyncWEBS` classes.
483
+
484
+ <details open>
485
+ <summary><b>Synchronous Usage with WEBS</b></summary>
486
+ <p>
487
+
488
+ ```python
489
+ from webscout import WEBS
490
+
491
+ # Use as a context manager for proper resource management
492
+ with WEBS() as webs:
493
+ # Simple text search
494
+ results = webs.text("python programming", max_results=5)
495
+ for result in results:
496
+ print(f"Title: {result['title']}\nURL: {result['url']}")
497
+ ```
498
+
499
+ </p>
500
+ </details>
501
+
502
+ <details open>
503
+ <summary><b>Asynchronous Usage with AsyncWEBS</b></summary>
504
+ <p>
505
+
506
+ ```python
507
+ import asyncio
508
+ from webscout import AsyncWEBS
509
+
510
+ async def search_multiple_terms(search_terms):
511
+ async with AsyncWEBS() as webs:
512
+ # Create tasks for each search term
513
+ tasks = [webs.text(term, max_results=5) for term in search_terms]
514
+ # Run all searches concurrently
515
+ results = await asyncio.gather(*tasks)
516
+ return results
517
+
518
+ async def main():
519
+ terms = ["python", "javascript", "machine learning"]
520
+ all_results = await search_multiple_terms(terms)
521
+
522
+ # Process results
523
+ for i, term_results in enumerate(all_results):
524
+ print(f"Results for '{terms[i]}':\n")
525
+ for result in term_results:
526
+ print(f"- {result['title']}")
527
+ print("\n")
528
+
529
+ # Run the async function
530
+ asyncio.run(main())
531
+ ```
532
+
533
+ </p>
534
+ </details>
535
+
536
+ > [!TIP]
537
+ > Always use these classes with a context manager (`with` statement) to ensure proper resource management and cleanup.
538
+
539
+ <hr/>
540
+
541
+ ## 💻 WEBS API Reference
542
+
543
+ The WEBS class provides comprehensive access to DuckDuckGo's search capabilities through a clean, intuitive API.
544
+
545
+ ### Available Search Methods
546
+
547
+ | Method | Description | Example |
548
+ | --------------- | ------------------- | -------------------------------------------- |
549
+ | `text()` | General web search | `webs.text('python programming')` |
550
+ | `answers()` | Instant answers | `webs.answers('population of france')` |
551
+ | `images()` | Image search | `webs.images('nature photography')` |
552
+ | `videos()` | Video search | `webs.videos('documentary')` |
553
+ | `news()` | News articles | `webs.news('technology')` |
554
+ | `maps()` | Location search | `webs.maps('restaurants', place='new york')` |
555
+ | `translate()` | Text translation | `webs.translate('hello', to='es')` |
556
+ | `suggestions()` | Search suggestions | `webs.suggestions('how to')` |
557
+ | `weather()` | Weather information | `webs.weather('london')` |
558
+
559
+ <details>
560
+ <summary><b>Example: Text Search</b></summary>
561
+ <p>
562
+
563
+ ```python
564
+ from webscout import WEBS
565
+
566
+ with WEBS() as webs:
567
+ results = webs.text(
568
+ 'artificial intelligence',
569
+ region='wt-wt', # Optional: Region for results
570
+ safesearch='off', # Optional: 'on', 'moderate', 'off'
571
+ timelimit='y', # Optional: Time limit ('d'=day, 'w'=week, 'm'=month, 'y'=year)
572
+ max_results=10 # Optional: Limit number of results
573
+ )
574
+
575
+ for result in results:
576
+ print(f"Title: {result['title']}")
577
+ print(f"URL: {result['url']}")
578
+ print(f"Description: {result['body']}\n")
579
+ ```
580
+
581
+ </p>
582
+ </details>
583
+
584
+ <details>
585
+ <summary><b>Example: News Search with Formatting</b></summary>
586
+ <p>
587
+
588
+ ```python
589
+ from webscout import WEBS
590
+ import datetime
591
+
592
+ def fetch_formatted_news(keywords, timelimit='d', max_results=20):
593
+ """Fetch and format news articles"""
594
+ with WEBS() as webs:
595
+ # Get news results
596
+ news_results = webs.news(
597
+ keywords,
598
+ region="wt-wt",
599
+ safesearch="off",
600
+ timelimit=timelimit, # 'd'=day, 'w'=week, 'm'=month
601
+ max_results=max_results
602
+ )
603
+
604
+ # Format the results
605
+ formatted_news = []
606
+ for i, item in enumerate(news_results, 1):
607
+ # Format the date
608
+ date = datetime.datetime.fromisoformat(item['date']).strftime('%B %d, %Y')
609
+
610
+ # Create formatted entry
611
+ entry = f"{i}. {item['title']}\n"
612
+ entry += f" Published: {date}\n"
613
+ entry += f" {item['body']}\n"
614
+ entry += f" URL: {item['url']}\n"
615
+
616
+ formatted_news.append(entry)
617
+
618
+ return formatted_news
619
+
620
+ # Example usage
621
+ news = fetch_formatted_news('artificial intelligence', timelimit='w', max_results=5)
622
+ print('\n'.join(news))
623
+ ```
624
+
625
+ </p>
626
+ </details>
627
+
628
+ <details>
629
+ <summary><b>Example: Weather Information</b></summary>
630
+ <p>
631
+
632
+ ```python
633
+ from webscout import WEBS
634
+
635
+ with WEBS() as webs:
636
+ # Get weather for a location
637
+ weather = webs.weather("New York")
638
+
639
+ # Access weather data
640
+ if weather:
641
+ print(f"Location: {weather.get('location', 'Unknown')}")
642
+ print(f"Temperature: {weather.get('temperature', 'N/A')}")
643
+ print(f"Conditions: {weather.get('condition', 'N/A')}")
644
+ ```
645
+
646
+ </p>
647
+ </details>
648
+
649
+ <hr/>
650
+
651
+ ## 🤖 AI Models and Voices
652
+
653
+ Webscout provides easy access to a wide range of AI models and voice options.
654
+
655
+ <details open>
656
+ <summary><b>LLM Models</b></summary>
657
+ <p>
658
+
659
+ Access and manage Large Language Models with Webscout's model utilities.
660
+
661
+ ```python
662
+ from webscout import model
663
+ from rich import print
664
+
665
+ # List all available LLM models
666
+ all_models = model.llm.list()
667
+ print(f"Total available models: {len(all_models)}")
668
+
669
+ # Get a summary of models by provider
670
+ summary = model.llm.summary()
671
+ print("Models by provider:")
672
+ for provider, count in summary.items():
673
+ print(f" {provider}: {count} models")
674
+
675
+ # Get models for a specific provider
676
+ provider_name = "PerplexityLabs"
677
+ available_models = model.llm.get(provider_name)
678
+ print(f"\n{provider_name} models:")
679
+ if isinstance(available_models, list):
680
+ for i, model_name in enumerate(available_models, 1):
681
+ print(f" {i}. {model_name}")
682
+ else:
683
+ print(f" {available_models}")
684
+ ```
685
+
686
+ </p>
687
+ </details>
688
+
689
+ <details open>
690
+ <summary><b>TTS Voices</b></summary>
691
+ <p>
692
+
693
+ Access and manage Text-to-Speech voices across multiple providers.
694
+
695
+ ```python
696
+ from webscout import model
697
+ from rich import print
698
+
699
+ # List all available TTS voices
700
+ all_voices = model.tts.list()
701
+ print(f"Total available voices: {len(all_voices)}")
702
+
703
+ # Get a summary of voices by provider
704
+ summary = model.tts.summary()
705
+ print("\nVoices by provider:")
706
+ for provider, count in summary.items():
707
+ print(f" {provider}: {count} voices")
708
+
709
+ # Get voices for a specific provider
710
+ provider_name = "ElevenlabsTTS"
711
+ available_voices = model.tts.get(provider_name)
712
+ print(f"\n{provider_name} voices:")
713
+ if isinstance(available_voices, dict):
714
+ for voice_name, voice_id in list(available_voices.items())[:5]: # Show first 5 voices
715
+ print(f" - {voice_name}: {voice_id}")
716
+ if len(available_voices) > 5:
717
+ print(f" ... and {len(available_voices) - 5} more")
718
+ ```
719
+
720
+ </p>
721
+ </details>
722
+
723
+ <hr/>
724
+
725
+ ## 💬 AI Chat Providers
726
+
727
+ Webscout offers a comprehensive collection of AI chat providers, giving you access to various language models through a consistent interface.
728
+
729
+ ### Popular AI Providers
730
+
731
+ <div class="provider-table">
732
+
733
+ | Provider | Description | Key Features |
734
+ | ---------------- | ------------------------ | ---------------------------------- |
735
+ | `OPENAI` | OpenAI's models | GPT-3.5, GPT-4, tool calling |
736
+ | `GEMINI` | Google's Gemini models | Web search capabilities |
737
+ | `Meta` | Meta's AI assistant | Image generation, web search |
738
+ | `GROQ` | Fast inference platform | High-speed inference, tool calling |
739
+ | `LLAMA` | Meta's Llama models | Open weights models |
740
+ | `DeepInfra` | Various open models | Multiple model options |
741
+ | `Cohere` | Cohere's language models | Command models |
742
+ | `PerplexityLabs` | Perplexity AI | Web search integration |
743
+ | `YEPCHAT` | Yep.com's AI | Streaming responses |
744
+ | `ChatGPTClone` | ChatGPT-like interface | Multiple model options |
745
+ | `TypeGPT` | TypeChat models | Multiple model options |
746
+
747
+ </div>
748
+
749
+ <details>
750
+ <summary><b>Example: Using Meta AI</b></summary>
751
+ <p>
752
+
753
+ ```python
754
+ from webscout import Meta
755
+
756
+ # For basic usage (no authentication required)
757
+ meta_ai = Meta()
758
+
759
+ # Simple text prompt
760
+ response = meta_ai.chat("What is the capital of France?")
761
+ print(response)
762
+
763
+ # For authenticated usage with web search and image generation
764
+ meta_ai = Meta(fb_email="your_email@example.com", fb_password="your_password")
765
+
766
+ # Text prompt with web search
767
+ response = meta_ai.ask("What are the latest developments in quantum computing?")
768
+ print(response["message"])
769
+ print("Sources:", response["sources"])
770
+
771
+ # Image generation
772
+ response = meta_ai.ask("Create an image of a futuristic city")
773
+ for media in response.get("media", []):
774
+ print(media["url"])
775
+ ```
776
+
777
+ </p>
778
+ </details>
779
+
780
+ <details>
781
+ <summary><b>Example: GROQ with Tool Calling</b></summary>
782
+ <p>
783
+
784
+ ```python
785
+ from webscout import GROQ, WEBS
786
+ import json
787
+
788
+ # Initialize GROQ client
789
+ client = GROQ(api_key="your_api_key")
790
+
791
+ # Define helper functions
792
+ def calculate(expression):
793
+ """Evaluate a mathematical expression"""
794
+ try:
795
+ result = eval(expression)
796
+ return json.dumps({"result": result})
797
+ except Exception as e:
798
+ return json.dumps({"error": str(e)})
799
+
800
+ def search(query):
801
+ """Perform a web search"""
802
+ try:
803
+ results = WEBS().text(query, max_results=3)
804
+ return json.dumps({"results": results})
805
+ except Exception as e:
806
+ return json.dumps({"error": str(e)})
807
+
808
+ # Register functions with GROQ
809
+ client.add_function("calculate", calculate)
810
+ client.add_function("search", search)
811
+
812
+ # Define tool specifications
813
+ tools = [
814
+ {
815
+ "type": "function",
816
+ "function": {
817
+ "name": "calculate",
818
+ "description": "Evaluate a mathematical expression",
819
+ "parameters": {
820
+ "type": "object",
821
+ "properties": {
822
+ "expression": {
823
+ "type": "string",
824
+ "description": "The mathematical expression to evaluate"
825
+ }
826
+ },
827
+ "required": ["expression"]
828
+ }
829
+ }
830
+ },
831
+ {
832
+ "type": "function",
833
+ "function": {
834
+ "name": "search",
835
+ "description": "Perform a web search",
836
+ "parameters": {
837
+ "type": "object",
838
+ "properties": {
839
+ "query": {
840
+ "type": "string",
841
+ "description": "The search query"
842
+ }
843
+ },
844
+ "required": ["query"]
845
+ }
846
+ }
847
+ }
848
+ ]
849
+
850
+ # Use the tools
851
+ response = client.chat("What is 25 * 4 + 10?", tools=tools)
852
+ print(response)
853
+
854
+ response = client.chat("Find information about quantum computing", tools=tools)
855
+ print(response)
856
+ ```
857
+
858
+ </p>
859
+ </details>
860
+
861
+ <details open>
862
+ <summary><b>GGUF Model Conversion</b></summary>
863
+ <p>
864
+
865
+ Webscout provides tools to convert and quantize Hugging Face models into the GGUF format for offline use.
866
+
867
+ ```python
868
+ from webscout.Extra.gguf import ModelConverter
869
+
870
+ # Create a converter instance
871
+ converter = ModelConverter(
872
+ model_id="mistralai/Mistral-7B-Instruct-v0.2", # Hugging Face model ID
873
+ quantization_methods="q4_k_m" # Quantization method
874
+ )
875
+
876
+ # Run the conversion
877
+ converter.convert()
878
+ ```
879
+
880
+ #### Available Quantization Methods
881
+
882
+ | Method | Description |
883
+ | -------- | ------------------------------------------------------------- |
884
+ | `fp16` | 16-bit floating point - maximum accuracy, largest size |
885
+ | `q2_k` | 2-bit quantization (smallest size, lowest accuracy) |
886
+ | `q3_k_l` | 3-bit quantization (large) - balanced for size/accuracy |
887
+ | `q3_k_m` | 3-bit quantization (medium) - good balance for most use cases |
888
+ | `q3_k_s` | 3-bit quantization (small) - optimized for speed |
889
+ | `q4_0` | 4-bit quantization (version 0) - standard 4-bit compression |
890
+ | `q4_1` | 4-bit quantization (version 1) - improved accuracy over q4_0 |
891
+ | `q4_k_m` | 4-bit quantization (medium) - balanced for most models |
892
+ | `q4_k_s` | 4-bit quantization (small) - optimized for speed |
893
+ | `q5_0` | 5-bit quantization (version 0) - high accuracy, larger size |
894
+ | `q5_1` | 5-bit quantization (version 1) - improved accuracy over q5_0 |
895
+ | `q5_k_m` | 5-bit quantization (medium) - best balance for quality/size |
896
+ | `q5_k_s` | 5-bit quantization (small) - optimized for speed |
897
+ | `q6_k` | 6-bit quantization - highest accuracy, largest size |
898
+ | `q8_0` | 8-bit quantization - maximum accuracy, largest size |
899
+
900
+ #### Command Line Usage
901
+
902
+ ```bash
903
+ python -m webscout.Extra.gguf convert -m "mistralai/Mistral-7B-Instruct-v0.2" -q "q4_k_m"
904
+ ```
905
+
906
+ </p>
907
+ </details>
908
+
909
+ <div align="center">
910
+ <p>
911
+ <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a> |
912
+ <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
913
+ </p>
914
+ </div>
915
+
916
+ <hr/>
917
+
918
+ ## 🤝 Contributing
919
+
920
+ Contributions are welcome! If you'd like to contribute to Webscout, please follow these steps:
921
+
922
+ 1. Fork the repository
923
+ 2. Create a new branch for your feature or bug fix
924
+ 3. Make your changes and commit them with descriptive messages
925
+ 4. Push your branch to your forked repository
926
+ 5. Submit a pull request to the main repository
927
+
928
+ ## 🙏 Acknowledgments
929
+
930
+ - All the amazing developers who have contributed to the project
931
+ - The open-source community for their support and inspiration
932
+
933
+ <hr/>
934
+
935
+ <div align="center">
936
+ <p>Made with ❤️ by the Webscout team</p>
937
+ </div>