webscout 8.3.7__py3-none-any.whl → 2025.10.13__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 (306) hide show
  1. webscout/AIauto.py +250 -250
  2. webscout/AIbase.py +379 -379
  3. webscout/AIutel.py +60 -60
  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 +16 -1
  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 -316
  61. webscout/Provider/AISEARCH/stellar_search.py +177 -177
  62. webscout/Provider/AISEARCH/webpilotai_search.py +255 -255
  63. webscout/Provider/Aitopia.py +314 -314
  64. webscout/Provider/Andi.py +1 -1
  65. webscout/Provider/Apriel.py +306 -0
  66. webscout/Provider/ChatGPTClone.py +237 -236
  67. webscout/Provider/ChatSandbox.py +343 -343
  68. webscout/Provider/Cloudflare.py +324 -324
  69. webscout/Provider/Cohere.py +208 -208
  70. webscout/Provider/Deepinfra.py +370 -366
  71. webscout/Provider/ExaAI.py +260 -260
  72. webscout/Provider/ExaChat.py +308 -308
  73. webscout/Provider/Flowith.py +221 -221
  74. webscout/Provider/GMI.py +293 -0
  75. webscout/Provider/Gemini.py +164 -164
  76. webscout/Provider/GeminiProxy.py +167 -167
  77. webscout/Provider/GithubChat.py +371 -372
  78. webscout/Provider/Groq.py +800 -800
  79. webscout/Provider/HeckAI.py +383 -383
  80. webscout/Provider/Jadve.py +282 -282
  81. webscout/Provider/K2Think.py +307 -307
  82. webscout/Provider/Koboldai.py +205 -205
  83. webscout/Provider/LambdaChat.py +423 -423
  84. webscout/Provider/Nemotron.py +244 -244
  85. webscout/Provider/Netwrck.py +248 -248
  86. webscout/Provider/OLLAMA.py +395 -395
  87. webscout/Provider/OPENAI/Cloudflare.py +393 -393
  88. webscout/Provider/OPENAI/FalconH1.py +451 -451
  89. webscout/Provider/OPENAI/FreeGemini.py +296 -296
  90. webscout/Provider/OPENAI/K2Think.py +431 -431
  91. webscout/Provider/OPENAI/NEMOTRON.py +240 -240
  92. webscout/Provider/OPENAI/PI.py +427 -427
  93. webscout/Provider/OPENAI/README.md +959 -959
  94. webscout/Provider/OPENAI/TogetherAI.py +345 -345
  95. webscout/Provider/OPENAI/TwoAI.py +465 -465
  96. webscout/Provider/OPENAI/__init__.py +33 -18
  97. webscout/Provider/OPENAI/base.py +248 -248
  98. webscout/Provider/OPENAI/chatglm.py +528 -0
  99. webscout/Provider/OPENAI/chatgpt.py +592 -592
  100. webscout/Provider/OPENAI/chatgptclone.py +521 -521
  101. webscout/Provider/OPENAI/chatsandbox.py +202 -202
  102. webscout/Provider/OPENAI/deepinfra.py +318 -314
  103. webscout/Provider/OPENAI/e2b.py +1665 -1665
  104. webscout/Provider/OPENAI/exaai.py +420 -420
  105. webscout/Provider/OPENAI/exachat.py +452 -452
  106. webscout/Provider/OPENAI/friendli.py +232 -232
  107. webscout/Provider/OPENAI/{refact.py → gmi.py} +324 -274
  108. webscout/Provider/OPENAI/groq.py +364 -364
  109. webscout/Provider/OPENAI/heckai.py +314 -314
  110. webscout/Provider/OPENAI/llmchatco.py +337 -337
  111. webscout/Provider/OPENAI/netwrck.py +355 -355
  112. webscout/Provider/OPENAI/oivscode.py +290 -290
  113. webscout/Provider/OPENAI/opkfc.py +518 -518
  114. webscout/Provider/OPENAI/pydantic_imports.py +1 -1
  115. webscout/Provider/OPENAI/scirachat.py +535 -535
  116. webscout/Provider/OPENAI/sonus.py +308 -308
  117. webscout/Provider/OPENAI/standardinput.py +442 -442
  118. webscout/Provider/OPENAI/textpollinations.py +340 -340
  119. webscout/Provider/OPENAI/toolbaz.py +419 -416
  120. webscout/Provider/OPENAI/typefully.py +362 -362
  121. webscout/Provider/OPENAI/utils.py +295 -295
  122. webscout/Provider/OPENAI/venice.py +436 -436
  123. webscout/Provider/OPENAI/wisecat.py +387 -387
  124. webscout/Provider/OPENAI/writecream.py +166 -166
  125. webscout/Provider/OPENAI/x0gpt.py +378 -378
  126. webscout/Provider/OPENAI/yep.py +389 -389
  127. webscout/Provider/OpenGPT.py +230 -230
  128. webscout/Provider/Openai.py +243 -243
  129. webscout/Provider/PI.py +405 -405
  130. webscout/Provider/Perplexitylabs.py +430 -430
  131. webscout/Provider/QwenLM.py +272 -272
  132. webscout/Provider/STT/__init__.py +16 -1
  133. webscout/Provider/Sambanova.py +257 -257
  134. webscout/Provider/StandardInput.py +309 -309
  135. webscout/Provider/TTI/README.md +82 -82
  136. webscout/Provider/TTI/__init__.py +33 -18
  137. webscout/Provider/TTI/aiarta.py +413 -413
  138. webscout/Provider/TTI/base.py +136 -136
  139. webscout/Provider/TTI/bing.py +243 -243
  140. webscout/Provider/TTI/gpt1image.py +149 -149
  141. webscout/Provider/TTI/imagen.py +196 -196
  142. webscout/Provider/TTI/infip.py +211 -211
  143. webscout/Provider/TTI/magicstudio.py +232 -232
  144. webscout/Provider/TTI/monochat.py +219 -219
  145. webscout/Provider/TTI/piclumen.py +214 -214
  146. webscout/Provider/TTI/pixelmuse.py +232 -232
  147. webscout/Provider/TTI/pollinations.py +232 -232
  148. webscout/Provider/TTI/together.py +288 -288
  149. webscout/Provider/TTI/utils.py +12 -12
  150. webscout/Provider/TTI/venice.py +367 -367
  151. webscout/Provider/TTS/README.md +192 -192
  152. webscout/Provider/TTS/__init__.py +33 -18
  153. webscout/Provider/TTS/parler.py +110 -110
  154. webscout/Provider/TTS/streamElements.py +333 -333
  155. webscout/Provider/TTS/utils.py +280 -280
  156. webscout/Provider/TeachAnything.py +237 -237
  157. webscout/Provider/TextPollinationsAI.py +310 -310
  158. webscout/Provider/TogetherAI.py +356 -356
  159. webscout/Provider/TwoAI.py +312 -312
  160. webscout/Provider/TypliAI.py +311 -311
  161. webscout/Provider/UNFINISHED/ChatHub.py +208 -208
  162. webscout/Provider/UNFINISHED/ChutesAI.py +313 -313
  163. webscout/Provider/UNFINISHED/GizAI.py +294 -294
  164. webscout/Provider/UNFINISHED/Marcus.py +198 -198
  165. webscout/Provider/UNFINISHED/Qodo.py +477 -477
  166. webscout/Provider/UNFINISHED/VercelAIGateway.py +338 -338
  167. webscout/Provider/UNFINISHED/XenAI.py +324 -324
  168. webscout/Provider/UNFINISHED/Youchat.py +330 -330
  169. webscout/Provider/UNFINISHED/liner.py +334 -0
  170. webscout/Provider/UNFINISHED/liner_api_request.py +262 -262
  171. webscout/Provider/UNFINISHED/puterjs.py +634 -634
  172. webscout/Provider/UNFINISHED/samurai.py +223 -223
  173. webscout/Provider/UNFINISHED/test_lmarena.py +119 -119
  174. webscout/Provider/Venice.py +250 -250
  175. webscout/Provider/VercelAI.py +256 -256
  176. webscout/Provider/WiseCat.py +231 -231
  177. webscout/Provider/WrDoChat.py +366 -366
  178. webscout/Provider/__init__.py +33 -18
  179. webscout/Provider/ai4chat.py +174 -174
  180. webscout/Provider/akashgpt.py +331 -331
  181. webscout/Provider/cerebras.py +446 -446
  182. webscout/Provider/chatglm.py +394 -301
  183. webscout/Provider/cleeai.py +211 -211
  184. webscout/Provider/elmo.py +282 -282
  185. webscout/Provider/geminiapi.py +208 -208
  186. webscout/Provider/granite.py +261 -261
  187. webscout/Provider/hermes.py +263 -263
  188. webscout/Provider/julius.py +223 -223
  189. webscout/Provider/learnfastai.py +309 -309
  190. webscout/Provider/llama3mitril.py +214 -214
  191. webscout/Provider/llmchat.py +243 -243
  192. webscout/Provider/llmchatco.py +290 -290
  193. webscout/Provider/meta.py +801 -801
  194. webscout/Provider/oivscode.py +309 -309
  195. webscout/Provider/scira_chat.py +383 -383
  196. webscout/Provider/searchchat.py +292 -292
  197. webscout/Provider/sonus.py +258 -258
  198. webscout/Provider/toolbaz.py +370 -367
  199. webscout/Provider/turboseek.py +273 -273
  200. webscout/Provider/typefully.py +207 -207
  201. webscout/Provider/yep.py +372 -372
  202. webscout/__init__.py +27 -31
  203. webscout/__main__.py +5 -5
  204. webscout/auth/api_key_manager.py +189 -189
  205. webscout/auth/config.py +175 -175
  206. webscout/auth/models.py +185 -185
  207. webscout/auth/routes.py +663 -664
  208. webscout/auth/simple_logger.py +236 -236
  209. webscout/cli.py +523 -523
  210. webscout/conversation.py +438 -438
  211. webscout/exceptions.py +361 -361
  212. webscout/litagent/Readme.md +298 -298
  213. webscout/litagent/__init__.py +28 -28
  214. webscout/litagent/agent.py +581 -581
  215. webscout/litagent/constants.py +59 -59
  216. webscout/litprinter/__init__.py +58 -58
  217. webscout/models.py +181 -181
  218. webscout/optimizers.py +419 -419
  219. webscout/prompt_manager.py +288 -288
  220. webscout/sanitize.py +1078 -1078
  221. webscout/scout/README.md +401 -401
  222. webscout/scout/__init__.py +8 -8
  223. webscout/scout/core/__init__.py +6 -6
  224. webscout/scout/core/crawler.py +297 -297
  225. webscout/scout/core/scout.py +706 -706
  226. webscout/scout/core/search_result.py +95 -95
  227. webscout/scout/core/text_analyzer.py +62 -62
  228. webscout/scout/core/text_utils.py +277 -277
  229. webscout/scout/core/web_analyzer.py +51 -51
  230. webscout/scout/element.py +599 -599
  231. webscout/scout/parsers/__init__.py +69 -69
  232. webscout/scout/parsers/html5lib_parser.py +172 -172
  233. webscout/scout/parsers/html_parser.py +236 -236
  234. webscout/scout/parsers/lxml_parser.py +178 -178
  235. webscout/scout/utils.py +37 -37
  236. webscout/search/__init__.py +51 -0
  237. webscout/search/base.py +195 -0
  238. webscout/search/duckduckgo_main.py +54 -0
  239. webscout/search/engines/__init__.py +48 -0
  240. webscout/search/engines/bing.py +84 -0
  241. webscout/search/engines/bing_news.py +52 -0
  242. webscout/search/engines/brave.py +43 -0
  243. webscout/search/engines/duckduckgo/__init__.py +25 -0
  244. webscout/search/engines/duckduckgo/answers.py +78 -0
  245. webscout/search/engines/duckduckgo/base.py +187 -0
  246. webscout/search/engines/duckduckgo/images.py +97 -0
  247. webscout/search/engines/duckduckgo/maps.py +168 -0
  248. webscout/search/engines/duckduckgo/news.py +68 -0
  249. webscout/search/engines/duckduckgo/suggestions.py +21 -0
  250. webscout/search/engines/duckduckgo/text.py +211 -0
  251. webscout/search/engines/duckduckgo/translate.py +47 -0
  252. webscout/search/engines/duckduckgo/videos.py +63 -0
  253. webscout/search/engines/duckduckgo/weather.py +74 -0
  254. webscout/search/engines/mojeek.py +37 -0
  255. webscout/search/engines/wikipedia.py +56 -0
  256. webscout/search/engines/yahoo.py +65 -0
  257. webscout/search/engines/yahoo_news.py +64 -0
  258. webscout/search/engines/yandex.py +43 -0
  259. webscout/search/engines/yep/__init__.py +13 -0
  260. webscout/search/engines/yep/base.py +32 -0
  261. webscout/search/engines/yep/images.py +99 -0
  262. webscout/search/engines/yep/suggestions.py +35 -0
  263. webscout/search/engines/yep/text.py +114 -0
  264. webscout/search/http_client.py +156 -0
  265. webscout/search/results.py +137 -0
  266. webscout/search/yep_main.py +44 -0
  267. webscout/swiftcli/Readme.md +323 -323
  268. webscout/swiftcli/__init__.py +95 -95
  269. webscout/swiftcli/core/__init__.py +7 -7
  270. webscout/swiftcli/core/cli.py +308 -308
  271. webscout/swiftcli/core/context.py +104 -104
  272. webscout/swiftcli/core/group.py +241 -241
  273. webscout/swiftcli/decorators/__init__.py +28 -28
  274. webscout/swiftcli/decorators/command.py +221 -221
  275. webscout/swiftcli/decorators/options.py +220 -220
  276. webscout/swiftcli/decorators/output.py +302 -302
  277. webscout/swiftcli/exceptions.py +21 -21
  278. webscout/swiftcli/plugins/__init__.py +9 -9
  279. webscout/swiftcli/plugins/base.py +135 -135
  280. webscout/swiftcli/plugins/manager.py +269 -269
  281. webscout/swiftcli/utils/__init__.py +59 -59
  282. webscout/swiftcli/utils/formatting.py +252 -252
  283. webscout/swiftcli/utils/parsing.py +267 -267
  284. webscout/update_checker.py +117 -117
  285. webscout/version.py +1 -1
  286. webscout/version.py.bak +2 -0
  287. webscout/zeroart/README.md +89 -89
  288. webscout/zeroart/__init__.py +134 -134
  289. webscout/zeroart/base.py +66 -66
  290. webscout/zeroart/effects.py +100 -100
  291. webscout/zeroart/fonts.py +1238 -1238
  292. {webscout-8.3.7.dist-info → webscout-2025.10.13.dist-info}/METADATA +936 -937
  293. webscout-2025.10.13.dist-info/RECORD +329 -0
  294. webscout/Provider/AISEARCH/DeepFind.py +0 -254
  295. webscout/Provider/OPENAI/Qwen3.py +0 -303
  296. webscout/Provider/OPENAI/qodo.py +0 -630
  297. webscout/Provider/OPENAI/xenai.py +0 -514
  298. webscout/tempid.py +0 -134
  299. webscout/webscout_search.py +0 -1183
  300. webscout/webscout_search_async.py +0 -649
  301. webscout/yep_search.py +0 -346
  302. webscout-8.3.7.dist-info/RECORD +0 -301
  303. {webscout-8.3.7.dist-info → webscout-2025.10.13.dist-info}/WHEEL +0 -0
  304. {webscout-8.3.7.dist-info → webscout-2025.10.13.dist-info}/entry_points.txt +0 -0
  305. {webscout-8.3.7.dist-info → webscout-2025.10.13.dist-info}/licenses/LICENSE.md +0 -0
  306. {webscout-8.3.7.dist-info → webscout-2025.10.13.dist-info}/top_level.txt +0 -0
@@ -1,937 +1,936 @@
1
- Metadata-Version: 2.4
2
- Name: webscout
3
- Version: 8.3.7
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>
1
+ Metadata-Version: 2.4
2
+ Name: webscout
3
+ Version: 2025.10.13
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
481
+
482
+ Webscout provides powerful interfaces to DuckDuckGo's search capabilities through the `WEBS` and `AsyncWEBS` classes.
483
+
484
+ <details open>
485
+ <summary><b>Synchronous Usage with WEBS</b></summary>
486
+ <p>
487
+
488
+ ```python
489
+ from webscout import WEBS
490
+
491
+ # Use as a context manager for proper resource management
492
+ with WEBS() as webs:
493
+ # Simple text search
494
+ results = webs.text("python programming", max_results=5)
495
+ for result in results:
496
+ print(f"Title: {result['title']}\nURL: {result['url']}")
497
+ ```
498
+
499
+ </p>
500
+ </details>
501
+
502
+ <details open>
503
+ <summary><b>Asynchronous Usage with AsyncWEBS</b></summary>
504
+ <p>
505
+
506
+ ```python
507
+ import asyncio
508
+ from webscout import AsyncWEBS
509
+
510
+ async def search_multiple_terms(search_terms):
511
+ async with AsyncWEBS() as webs:
512
+ # Create tasks for each search term
513
+ tasks = [webs.text(term, max_results=5) for term in search_terms]
514
+ # Run all searches concurrently
515
+ results = await asyncio.gather(*tasks)
516
+ return results
517
+
518
+ async def main():
519
+ terms = ["python", "javascript", "machine learning"]
520
+ all_results = await search_multiple_terms(terms)
521
+
522
+ # Process results
523
+ for i, term_results in enumerate(all_results):
524
+ print(f"Results for '{terms[i]}':\n")
525
+ for result in term_results:
526
+ print(f"- {result['title']}")
527
+ print("\n")
528
+
529
+ # Run the async function
530
+ asyncio.run(main())
531
+ ```
532
+
533
+ </p>
534
+ </details>
535
+
536
+ > [!TIP]
537
+ > Always use these classes with a context manager (`with` statement) to ensure proper resource management and cleanup.
538
+
539
+ <hr/>
540
+
541
+ ## 💻 WEBS API Reference
542
+
543
+ The WEBS class provides comprehensive access to DuckDuckGo's search capabilities through a clean, intuitive API.
544
+
545
+ ### Available Search Methods
546
+
547
+ | Method | Description | Example |
548
+ | --------------- | ------------------- | -------------------------------------------- |
549
+ | `text()` | General web search | `webs.text('python programming')` |
550
+ | `answers()` | Instant answers | `webs.answers('population of france')` |
551
+ | `images()` | Image search | `webs.images('nature photography')` |
552
+ | `videos()` | Video search | `webs.videos('documentary')` |
553
+ | `news()` | News articles | `webs.news('technology')` |
554
+ | `maps()` | Location search | `webs.maps('restaurants', place='new york')` |
555
+ | `translate()` | Text translation | `webs.translate('hello', to='es')` |
556
+ | `suggestions()` | Search suggestions | `webs.suggestions('how to')` |
557
+ | `weather()` | Weather information | `webs.weather('london')` |
558
+
559
+ <details>
560
+ <summary><b>Example: Text Search</b></summary>
561
+ <p>
562
+
563
+ ```python
564
+ from webscout import WEBS
565
+
566
+ with WEBS() as webs:
567
+ results = webs.text(
568
+ 'artificial intelligence',
569
+ region='wt-wt', # Optional: Region for results
570
+ safesearch='off', # Optional: 'on', 'moderate', 'off'
571
+ timelimit='y', # Optional: Time limit ('d'=day, 'w'=week, 'm'=month, 'y'=year)
572
+ max_results=10 # Optional: Limit number of results
573
+ )
574
+
575
+ for result in results:
576
+ print(f"Title: {result['title']}")
577
+ print(f"URL: {result['url']}")
578
+ print(f"Description: {result['body']}\n")
579
+ ```
580
+
581
+ </p>
582
+ </details>
583
+
584
+ <details>
585
+ <summary><b>Example: News Search with Formatting</b></summary>
586
+ <p>
587
+
588
+ ```python
589
+ from webscout.search import DuckDuckGoSearch
590
+
591
+ def fetch_formatted_news(keywords, timelimit='d', max_results=20):
592
+ """Fetch and format news articles"""
593
+ with WEBS() as webs:
594
+ # Get news results
595
+ news_results = webs.news(
596
+ keywords,
597
+ region="wt-wt",
598
+ safesearch="off",
599
+ timelimit=timelimit, # 'd'=day, 'w'=week, 'm'=month
600
+ max_results=max_results
601
+ )
602
+
603
+ # Format the results
604
+ formatted_news = []
605
+ for i, item in enumerate(news_results, 1):
606
+ # Format the date
607
+ date = datetime.datetime.fromisoformat(item['date']).strftime('%B %d, %Y')
608
+
609
+ # Create formatted entry
610
+ entry = f"{i}. {item['title']}\n"
611
+ entry += f" Published: {date}\n"
612
+ entry += f" {item['body']}\n"
613
+ entry += f" URL: {item['url']}\n"
614
+
615
+ formatted_news.append(entry)
616
+
617
+ return formatted_news
618
+
619
+ # Example usage
620
+ news = fetch_formatted_news('artificial intelligence', timelimit='w', max_results=5)
621
+ print('\n'.join(news))
622
+ ```
623
+
624
+ </p>
625
+ </details>
626
+
627
+ <details>
628
+ <summary><b>Example: Weather Information</b></summary>
629
+ <p>
630
+
631
+ ```python
632
+ from webscout import WEBS
633
+
634
+ with WEBS() as webs:
635
+ # Get weather for a location
636
+ weather = webs.weather("New York")
637
+
638
+ # Access weather data
639
+ if weather:
640
+ print(f"Location: {weather.get('location', 'Unknown')}")
641
+ print(f"Temperature: {weather.get('temperature', 'N/A')}")
642
+ print(f"Conditions: {weather.get('condition', 'N/A')}")
643
+ ```
644
+
645
+ </p>
646
+ </details>
647
+
648
+ <hr/>
649
+
650
+ ## 🤖 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>