webscout 7.1__tar.gz → 7.2__tar.gz

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

Potentially problematic release.


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

Files changed (226) hide show
  1. {webscout-7.1/webscout.egg-info → webscout-7.2}/PKG-INFO +4 -3
  2. {webscout-7.1 → webscout-7.2}/README.md +1 -1
  3. {webscout-7.1 → webscout-7.2}/setup.py +93 -92
  4. {webscout-7.1 → webscout-7.2}/webscout/AIauto.py +191 -191
  5. {webscout-7.1 → webscout-7.2}/webscout/AIbase.py +122 -122
  6. {webscout-7.1 → webscout-7.2}/webscout/AIutel.py +440 -440
  7. webscout-7.2/webscout/Bard.py +547 -0
  8. {webscout-7.1 → webscout-7.2}/webscout/DWEBS.py +489 -492
  9. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/YTdownloader.py +995 -995
  10. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/__init__.py +2 -2
  11. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/transcriber.py +476 -479
  12. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/channel.py +307 -307
  13. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/playlist.py +58 -58
  14. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/pool.py +7 -7
  15. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/utils.py +62 -62
  16. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/video.py +103 -103
  17. {webscout-7.1 → webscout-7.2}/webscout/Extra/autocoder/__init__.py +9 -9
  18. {webscout-7.1 → webscout-7.2}/webscout/Extra/autocoder/autocoder_utiles.py +199 -199
  19. {webscout-7.1 → webscout-7.2}/webscout/Extra/autocoder/rawdog.py +5 -7
  20. {webscout-7.1 → webscout-7.2}/webscout/Extra/autollama.py +230 -230
  21. {webscout-7.1 → webscout-7.2}/webscout/Extra/gguf.py +3 -3
  22. {webscout-7.1 → webscout-7.2}/webscout/Extra/weather.py +171 -171
  23. {webscout-7.1 → webscout-7.2}/webscout/LLM.py +442 -442
  24. webscout-7.2/webscout/Litlogger/__init__.py +67 -0
  25. webscout-7.2/webscout/Litlogger/core/__init__.py +6 -0
  26. webscout-7.2/webscout/Litlogger/core/level.py +20 -0
  27. webscout-7.2/webscout/Litlogger/core/logger.py +123 -0
  28. webscout-7.2/webscout/Litlogger/handlers/__init__.py +12 -0
  29. webscout-7.2/webscout/Litlogger/handlers/console.py +50 -0
  30. webscout-7.2/webscout/Litlogger/handlers/file.py +143 -0
  31. webscout-7.2/webscout/Litlogger/handlers/network.py +174 -0
  32. webscout-7.2/webscout/Litlogger/styles/__init__.py +7 -0
  33. webscout-7.2/webscout/Litlogger/styles/colors.py +231 -0
  34. webscout-7.2/webscout/Litlogger/styles/formats.py +377 -0
  35. webscout-7.2/webscout/Litlogger/styles/text.py +87 -0
  36. webscout-7.2/webscout/Litlogger/utils/__init__.py +6 -0
  37. webscout-7.2/webscout/Litlogger/utils/detectors.py +154 -0
  38. webscout-7.2/webscout/Litlogger/utils/formatters.py +200 -0
  39. {webscout-7.1 → webscout-7.2}/webscout/Provider/AISEARCH/DeepFind.py +250 -250
  40. {webscout-7.1 → webscout-7.2}/webscout/Provider/Blackboxai.py +3 -3
  41. webscout-7.2/webscout/Provider/ChatGPTGratis.py +226 -0
  42. {webscout-7.1 → webscout-7.2}/webscout/Provider/Cloudflare.py +3 -4
  43. webscout-7.2/webscout/Provider/DeepSeek.py +218 -0
  44. {webscout-7.1 → webscout-7.2}/webscout/Provider/Deepinfra.py +3 -3
  45. webscout-7.2/webscout/Provider/Free2GPT.py +241 -0
  46. webscout-7.2/webscout/Provider/Gemini.py +179 -0
  47. {webscout-7.1 → webscout-7.2}/webscout/Provider/Glider.py +3 -3
  48. {webscout-7.1 → webscout-7.2}/webscout/Provider/Groq.py +5 -1
  49. {webscout-7.1 → webscout-7.2}/webscout/Provider/Jadve.py +3 -3
  50. {webscout-7.1 → webscout-7.2}/webscout/Provider/Marcus.py +191 -192
  51. {webscout-7.1 → webscout-7.2}/webscout/Provider/Netwrck.py +3 -3
  52. {webscout-7.1 → webscout-7.2}/webscout/Provider/PI.py +2 -2
  53. {webscout-7.1 → webscout-7.2}/webscout/Provider/PizzaGPT.py +2 -3
  54. webscout-7.2/webscout/Provider/QwenLM.py +311 -0
  55. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/AiForce/__init__.py +22 -22
  56. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/AiForce/async_aiforce.py +257 -257
  57. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/AiForce/sync_aiforce.py +242 -242
  58. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/Nexra/__init__.py +22 -22
  59. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/Nexra/async_nexra.py +286 -286
  60. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/Nexra/sync_nexra.py +258 -258
  61. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/PollinationsAI/__init__.py +23 -23
  62. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/PollinationsAI/async_pollinations.py +330 -330
  63. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +285 -285
  64. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/artbit/__init__.py +22 -22
  65. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/artbit/async_artbit.py +184 -184
  66. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/artbit/sync_artbit.py +176 -176
  67. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/blackbox/__init__.py +4 -4
  68. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/blackbox/async_blackbox.py +212 -212
  69. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/blackbox/sync_blackbox.py +199 -199
  70. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/deepinfra/__init__.py +4 -4
  71. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/deepinfra/async_deepinfra.py +227 -227
  72. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/deepinfra/sync_deepinfra.py +199 -199
  73. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/huggingface/__init__.py +22 -22
  74. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/huggingface/async_huggingface.py +199 -199
  75. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/huggingface/sync_huggingface.py +195 -195
  76. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/imgninza/__init__.py +4 -4
  77. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/imgninza/async_ninza.py +214 -214
  78. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/imgninza/sync_ninza.py +209 -209
  79. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/talkai/__init__.py +4 -4
  80. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/talkai/async_talkai.py +229 -229
  81. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/talkai/sync_talkai.py +207 -207
  82. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/deepgram.py +182 -182
  83. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/elevenlabs.py +136 -136
  84. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/gesserit.py +150 -150
  85. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/murfai.py +138 -138
  86. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/parler.py +133 -134
  87. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/streamElements.py +360 -360
  88. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/utils.py +280 -280
  89. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/voicepod.py +116 -116
  90. {webscout-7.1 → webscout-7.2}/webscout/Provider/TextPollinationsAI.py +2 -3
  91. webscout-7.2/webscout/Provider/WiseCat.py +193 -0
  92. {webscout-7.1 → webscout-7.2}/webscout/Provider/__init__.py +144 -134
  93. {webscout-7.1 → webscout-7.2}/webscout/Provider/cerebras.py +242 -227
  94. {webscout-7.1 → webscout-7.2}/webscout/Provider/chatglm.py +204 -204
  95. {webscout-7.1 → webscout-7.2}/webscout/Provider/dgaf.py +2 -3
  96. {webscout-7.1 → webscout-7.2}/webscout/Provider/gaurish.py +2 -3
  97. {webscout-7.1 → webscout-7.2}/webscout/Provider/geminiapi.py +208 -208
  98. webscout-7.2/webscout/Provider/granite.py +223 -0
  99. {webscout-7.1 → webscout-7.2}/webscout/Provider/hermes.py +218 -218
  100. {webscout-7.1 → webscout-7.2}/webscout/Provider/llama3mitril.py +179 -179
  101. {webscout-7.1 → webscout-7.2}/webscout/Provider/llamatutor.py +3 -3
  102. {webscout-7.1 → webscout-7.2}/webscout/Provider/llmchat.py +2 -3
  103. {webscout-7.1 → webscout-7.2}/webscout/Provider/meta.py +794 -794
  104. {webscout-7.1 → webscout-7.2}/webscout/Provider/multichat.py +331 -331
  105. {webscout-7.1 → webscout-7.2}/webscout/Provider/typegpt.py +359 -359
  106. {webscout-7.1 → webscout-7.2}/webscout/Provider/yep.py +2 -2
  107. {webscout-7.1 → webscout-7.2}/webscout/__main__.py +5 -5
  108. {webscout-7.1 → webscout-7.2}/webscout/cli.py +319 -319
  109. {webscout-7.1 → webscout-7.2}/webscout/conversation.py +241 -242
  110. {webscout-7.1 → webscout-7.2}/webscout/exceptions.py +328 -328
  111. {webscout-7.1 → webscout-7.2}/webscout/litagent/__init__.py +28 -28
  112. {webscout-7.1 → webscout-7.2}/webscout/litagent/agent.py +2 -3
  113. {webscout-7.1 → webscout-7.2}/webscout/litprinter/__init__.py +0 -58
  114. {webscout-7.1 → webscout-7.2}/webscout/scout/__init__.py +8 -8
  115. {webscout-7.1 → webscout-7.2}/webscout/scout/core.py +884 -884
  116. {webscout-7.1 → webscout-7.2}/webscout/scout/element.py +459 -459
  117. {webscout-7.1 → webscout-7.2}/webscout/scout/parsers/__init__.py +69 -69
  118. {webscout-7.1 → webscout-7.2}/webscout/scout/parsers/html5lib_parser.py +172 -172
  119. {webscout-7.1 → webscout-7.2}/webscout/scout/parsers/html_parser.py +236 -236
  120. {webscout-7.1 → webscout-7.2}/webscout/scout/parsers/lxml_parser.py +178 -178
  121. {webscout-7.1 → webscout-7.2}/webscout/scout/utils.py +38 -38
  122. {webscout-7.1 → webscout-7.2}/webscout/swiftcli/__init__.py +811 -811
  123. {webscout-7.1 → webscout-7.2}/webscout/update_checker.py +2 -12
  124. {webscout-7.1 → webscout-7.2}/webscout/version.py +1 -1
  125. {webscout-7.1 → webscout-7.2}/webscout/webscout_search.py +5 -4
  126. {webscout-7.1 → webscout-7.2}/webscout/zeroart/__init__.py +54 -54
  127. {webscout-7.1 → webscout-7.2}/webscout/zeroart/base.py +60 -60
  128. {webscout-7.1 → webscout-7.2}/webscout/zeroart/effects.py +99 -99
  129. {webscout-7.1 → webscout-7.2}/webscout/zeroart/fonts.py +816 -816
  130. {webscout-7.1 → webscout-7.2/webscout.egg-info}/PKG-INFO +4 -3
  131. {webscout-7.1 → webscout-7.2}/webscout.egg-info/SOURCES.txt +19 -0
  132. {webscout-7.1 → webscout-7.2}/webscout.egg-info/requires.txt +2 -1
  133. {webscout-7.1 → webscout-7.2}/webstoken/__init__.py +30 -30
  134. {webscout-7.1 → webscout-7.2}/webstoken/classifier.py +189 -189
  135. {webscout-7.1 → webscout-7.2}/webstoken/keywords.py +216 -216
  136. {webscout-7.1 → webscout-7.2}/webstoken/language.py +128 -128
  137. {webscout-7.1 → webscout-7.2}/webstoken/ner.py +164 -164
  138. {webscout-7.1 → webscout-7.2}/webstoken/normalizer.py +35 -35
  139. {webscout-7.1 → webscout-7.2}/webstoken/processor.py +77 -77
  140. {webscout-7.1 → webscout-7.2}/webstoken/sentiment.py +206 -206
  141. {webscout-7.1 → webscout-7.2}/webstoken/stemmer.py +73 -73
  142. {webscout-7.1 → webscout-7.2}/webstoken/tagger.py +60 -60
  143. {webscout-7.1 → webscout-7.2}/webstoken/tokenizer.py +158 -158
  144. webscout-7.1/webscout/Bard.py +0 -365
  145. webscout-7.1/webscout/Litlogger/__init__.py +0 -681
  146. webscout-7.1/webscout/Provider/Free2GPT.py +0 -234
  147. webscout-7.1/webscout/Provider/Gemini.py +0 -194
  148. {webscout-7.1 → webscout-7.2}/LICENSE.md +0 -0
  149. {webscout-7.1 → webscout-7.2}/setup.cfg +0 -0
  150. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
  151. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
  152. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
  153. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
  154. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
  155. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
  156. {webscout-7.1 → webscout-7.2}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
  157. {webscout-7.1 → webscout-7.2}/webscout/Extra/__init__.py +0 -0
  158. {webscout-7.1 → webscout-7.2}/webscout/Extra/weather_ascii.py +0 -0
  159. {webscout-7.1 → webscout-7.2}/webscout/Local/__init__.py +0 -0
  160. {webscout-7.1 → webscout-7.2}/webscout/Local/_version.py +0 -0
  161. {webscout-7.1 → webscout-7.2}/webscout/Local/formats.py +0 -0
  162. {webscout-7.1 → webscout-7.2}/webscout/Local/model.py +0 -0
  163. {webscout-7.1 → webscout-7.2}/webscout/Local/samplers.py +0 -0
  164. {webscout-7.1 → webscout-7.2}/webscout/Local/thread.py +0 -0
  165. {webscout-7.1 → webscout-7.2}/webscout/Local/ui.py +0 -0
  166. {webscout-7.1 → webscout-7.2}/webscout/Local/utils.py +0 -0
  167. {webscout-7.1 → webscout-7.2}/webscout/Provider/AI21.py +0 -0
  168. {webscout-7.1 → webscout-7.2}/webscout/Provider/AISEARCH/__init__.py +0 -0
  169. {webscout-7.1 → webscout-7.2}/webscout/Provider/AISEARCH/felo_search.py +0 -0
  170. {webscout-7.1 → webscout-7.2}/webscout/Provider/Amigo.py +0 -0
  171. {webscout-7.1 → webscout-7.2}/webscout/Provider/Andi.py +0 -0
  172. {webscout-7.1 → webscout-7.2}/webscout/Provider/Bing.py +0 -0
  173. {webscout-7.1 → webscout-7.2}/webscout/Provider/ChatGPTES.py +0 -0
  174. {webscout-7.1 → webscout-7.2}/webscout/Provider/Chatify.py +0 -0
  175. {webscout-7.1 → webscout-7.2}/webscout/Provider/Cohere.py +0 -0
  176. {webscout-7.1 → webscout-7.2}/webscout/Provider/DARKAI.py +0 -0
  177. {webscout-7.1 → webscout-7.2}/webscout/Provider/DiscordRocks.py +0 -0
  178. {webscout-7.1 → webscout-7.2}/webscout/Provider/EDITEE.py +0 -0
  179. {webscout-7.1 → webscout-7.2}/webscout/Provider/GPTWeb.py +0 -0
  180. {webscout-7.1 → webscout-7.2}/webscout/Provider/HF_space/__init__.py +0 -0
  181. {webscout-7.1 → webscout-7.2}/webscout/Provider/HF_space/qwen_qwen2.py +0 -0
  182. {webscout-7.1 → webscout-7.2}/webscout/Provider/Koboldai.py +0 -0
  183. {webscout-7.1 → webscout-7.2}/webscout/Provider/Llama.py +0 -0
  184. {webscout-7.1 → webscout-7.2}/webscout/Provider/Llama3.py +0 -0
  185. {webscout-7.1 → webscout-7.2}/webscout/Provider/OLLAMA.py +0 -0
  186. {webscout-7.1 → webscout-7.2}/webscout/Provider/Openai.py +0 -0
  187. {webscout-7.1 → webscout-7.2}/webscout/Provider/Phind.py +0 -0
  188. {webscout-7.1 → webscout-7.2}/webscout/Provider/Reka.py +0 -0
  189. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTI/__init__.py +0 -0
  190. {webscout-7.1 → webscout-7.2}/webscout/Provider/TTS/__init__.py +0 -0
  191. {webscout-7.1 → webscout-7.2}/webscout/Provider/TeachAnything.py +0 -0
  192. {webscout-7.1 → webscout-7.2}/webscout/Provider/Youchat.py +0 -0
  193. {webscout-7.1 → webscout-7.2}/webscout/Provider/ai4chat.py +0 -0
  194. {webscout-7.1 → webscout-7.2}/webscout/Provider/aimathgpt.py +0 -0
  195. {webscout-7.1 → webscout-7.2}/webscout/Provider/askmyai.py +0 -0
  196. {webscout-7.1 → webscout-7.2}/webscout/Provider/bagoodex.py +0 -0
  197. {webscout-7.1 → webscout-7.2}/webscout/Provider/cleeai.py +0 -0
  198. {webscout-7.1 → webscout-7.2}/webscout/Provider/elmo.py +0 -0
  199. {webscout-7.1 → webscout-7.2}/webscout/Provider/geminiprorealtime.py +0 -0
  200. {webscout-7.1 → webscout-7.2}/webscout/Provider/julius.py +0 -0
  201. {webscout-7.1 → webscout-7.2}/webscout/Provider/koala.py +0 -0
  202. {webscout-7.1 → webscout-7.2}/webscout/Provider/learnfastai.py +0 -0
  203. {webscout-7.1 → webscout-7.2}/webscout/Provider/lepton.py +0 -0
  204. {webscout-7.1 → webscout-7.2}/webscout/Provider/promptrefine.py +0 -0
  205. {webscout-7.1 → webscout-7.2}/webscout/Provider/talkai.py +0 -0
  206. {webscout-7.1 → webscout-7.2}/webscout/Provider/turboseek.py +0 -0
  207. {webscout-7.1 → webscout-7.2}/webscout/Provider/tutorai.py +0 -0
  208. {webscout-7.1 → webscout-7.2}/webscout/Provider/x0gpt.py +0 -0
  209. {webscout-7.1 → webscout-7.2}/webscout/__init__.py +0 -0
  210. {webscout-7.1 → webscout-7.2}/webscout/litagent/constants.py +0 -0
  211. {webscout-7.1 → webscout-7.2}/webscout/litprinter/colors.py +0 -0
  212. {webscout-7.1 → webscout-7.2}/webscout/optimizers.py +0 -0
  213. {webscout-7.1 → webscout-7.2}/webscout/prompt_manager.py +0 -0
  214. {webscout-7.1 → webscout-7.2}/webscout/scout/core/__init__.py +0 -0
  215. {webscout-7.1 → webscout-7.2}/webscout/scout/core/crawler.py +0 -0
  216. {webscout-7.1 → webscout-7.2}/webscout/scout/core/scout.py +0 -0
  217. {webscout-7.1 → webscout-7.2}/webscout/scout/core/search_result.py +0 -0
  218. {webscout-7.1 → webscout-7.2}/webscout/scout/core/text_analyzer.py +0 -0
  219. {webscout-7.1 → webscout-7.2}/webscout/scout/core/text_utils.py +0 -0
  220. {webscout-7.1 → webscout-7.2}/webscout/scout/core/web_analyzer.py +0 -0
  221. {webscout-7.1 → webscout-7.2}/webscout/tempid.py +0 -0
  222. {webscout-7.1 → webscout-7.2}/webscout/utils.py +0 -0
  223. {webscout-7.1 → webscout-7.2}/webscout/webscout_search_async.py +0 -0
  224. {webscout-7.1 → webscout-7.2}/webscout.egg-info/dependency_links.txt +0 -0
  225. {webscout-7.1 → webscout-7.2}/webscout.egg-info/entry_points.txt +0 -0
  226. {webscout-7.1 → webscout-7.2}/webscout.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: webscout
3
- Version: 7.1
3
+ Version: 7.2
4
4
  Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
5
5
  Author: OEvortex
6
6
  Author-email: helpingai5@gmail.com
@@ -41,7 +41,7 @@ Requires-Dist: orjson
41
41
  Requires-Dist: PyYAML
42
42
  Requires-Dist: tls_client
43
43
  Requires-Dist: clipman
44
- Requires-Dist: playsound
44
+ Requires-Dist: playsound==1.2.2
45
45
  Requires-Dist: ollama
46
46
  Requires-Dist: pillow
47
47
  Requires-Dist: bson
@@ -56,6 +56,7 @@ Requires-Dist: pyreqwest_impersonate
56
56
  Requires-Dist: gradio_client
57
57
  Requires-Dist: psutil
58
58
  Requires-Dist: pygetwindow
59
+ Requires-Dist: aiohttp
59
60
  Provides-Extra: dev
60
61
  Requires-Dist: ruff>=0.1.6; extra == "dev"
61
62
  Requires-Dist: pytest>=7.4.2; extra == "dev"
@@ -1107,7 +1108,7 @@ print(a.chat("HelpingAI-9B"))
1107
1108
  ```
1108
1109
 
1109
1110
 
1110
- ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus, TypeGPT, Mhystical, Netwrck, MultiChatAI, JadveOpenAI, ChatGLM, Deepfind, NousHermes, TextPollinationsAI, GliderAI, DGAFAI
1111
+ ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus, TypeGPT, Mhystical, Netwrck, MultiChatAI, JadveOpenAI, ChatGLM, Deepfind, NousHermes, TextPollinationsAI, GliderAI, DGAFAI, ChatGPTGratis, QwenLM, IBMGranite, WiseCat, DeepSeek
1111
1112
 
1112
1113
  Code is similar to other providers.
1113
1114
 
@@ -1028,7 +1028,7 @@ print(a.chat("HelpingAI-9B"))
1028
1028
  ```
1029
1029
 
1030
1030
 
1031
- ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus, TypeGPT, Mhystical, Netwrck, MultiChatAI, JadveOpenAI, ChatGLM, Deepfind, NousHermes, TextPollinationsAI, GliderAI, DGAFAI
1031
+ ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus, TypeGPT, Mhystical, Netwrck, MultiChatAI, JadveOpenAI, ChatGLM, Deepfind, NousHermes, TextPollinationsAI, GliderAI, DGAFAI, ChatGPTGratis, QwenLM, IBMGranite, WiseCat, DeepSeek
1032
1032
 
1033
1033
  Code is similar to other providers.
1034
1034
 
@@ -1,92 +1,93 @@
1
- from setuptools import setup, find_packages
2
- from webscout.version import __prog__, __version__
3
-
4
- with open("README.md", encoding="utf-8") as f:
5
- README = f.read()
6
-
7
- setup(
8
- name="webscout",
9
- version=__version__,
10
- description="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",
11
- long_description=README,
12
- long_description_content_type="text/markdown",
13
- author="OEvortex",
14
- author_email="helpingai5@gmail.com",
15
- packages=find_packages(),
16
- python_requires=">=3.7",
17
- classifiers=[
18
- "Development Status :: 5 - Production/Stable",
19
- "Intended Audience :: Developers",
20
- "License :: Other/Proprietary License",
21
- "Operating System :: OS Independent",
22
- "Programming Language :: Python :: 3",
23
- "Programming Language :: Python :: 3.8",
24
- "Programming Language :: Python :: 3.9",
25
- "Programming Language :: Python :: 3.10",
26
- "Programming Language :: Python :: 3.11",
27
- "Programming Language :: Python :: 3.12",
28
- "Programming Language :: Python :: Implementation :: CPython",
29
- "Topic :: Internet :: WWW/HTTP :: Indexing/Search",
30
- "Topic :: Software Development :: Libraries :: Python Modules",
31
- ],
32
- install_requires=[
33
- "setuptools",
34
- "wheel",
35
- "pip",
36
- "mistune",
37
- "tenacity",
38
- "curl_cffi",
39
- "nest-asyncio",
40
- "rich",
41
- "markdownify",
42
- "requests",
43
- "google-generativeai",
44
- "lxml>=5.2.2",
45
- "termcolor",
46
- "orjson",
47
- "PyYAML",
48
- "tls_client",
49
- "clipman",
50
- "playsound",
51
- "ollama",
52
- "pillow",
53
- "bson",
54
- "cloudscraper",
55
- "html5lib",
56
- "aiofiles",
57
- "emoji",
58
- "openai",
59
- "prompt-toolkit",
60
- "primp",
61
- "pyreqwest_impersonate",
62
- "gradio_client",
63
- "psutil",
64
- "pygetwindow",
65
- ],
66
-
67
- entry_points={
68
- "console_scripts": [
69
- "WEBS = webscout.cli:cli",
70
- "webscout = webscout.cli:cli",
71
- ],
72
- },
73
- extras_require={
74
- "dev": [
75
- "ruff>=0.1.6",
76
- "pytest>=7.4.2",
77
- ],
78
- "local": [
79
- 'llama-cpp-python',
80
- 'colorama',
81
- 'numpy',
82
- 'huggingface_hub[cli]',
83
- 'unicorn',
84
- ],
85
- },
86
- license="HelpingAI",
87
- project_urls={
88
- "Source": "https://github.com/HelpingAI/Webscout",
89
- "Tracker": "https://github.com/HelpingAI/Webscout/issues",
90
- "YouTube": "https://youtube.com/@OEvortex",
91
- },
92
- )
1
+ from setuptools import setup, find_packages
2
+ from webscout.version import __prog__, __version__
3
+
4
+ with open("README.md", encoding="utf-8") as f:
5
+ README = f.read()
6
+
7
+ setup(
8
+ name="webscout",
9
+ version=__version__,
10
+ description="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",
11
+ long_description=README,
12
+ long_description_content_type="text/markdown",
13
+ author="OEvortex",
14
+ author_email="helpingai5@gmail.com",
15
+ packages=find_packages(),
16
+ python_requires=">=3.7",
17
+ classifiers=[
18
+ "Development Status :: 5 - Production/Stable",
19
+ "Intended Audience :: Developers",
20
+ "License :: Other/Proprietary License",
21
+ "Operating System :: OS Independent",
22
+ "Programming Language :: Python :: 3",
23
+ "Programming Language :: Python :: 3.8",
24
+ "Programming Language :: Python :: 3.9",
25
+ "Programming Language :: Python :: 3.10",
26
+ "Programming Language :: Python :: 3.11",
27
+ "Programming Language :: Python :: 3.12",
28
+ "Programming Language :: Python :: Implementation :: CPython",
29
+ "Topic :: Internet :: WWW/HTTP :: Indexing/Search",
30
+ "Topic :: Software Development :: Libraries :: Python Modules",
31
+ ],
32
+ install_requires=[
33
+ "setuptools",
34
+ "wheel",
35
+ "pip",
36
+ "mistune",
37
+ "tenacity",
38
+ "curl_cffi",
39
+ "nest-asyncio",
40
+ "rich",
41
+ "markdownify",
42
+ "requests",
43
+ "google-generativeai",
44
+ "lxml>=5.2.2",
45
+ "termcolor",
46
+ "orjson",
47
+ "PyYAML",
48
+ "tls_client",
49
+ "clipman",
50
+ "playsound==1.2.2",
51
+ "ollama",
52
+ "pillow",
53
+ "bson",
54
+ "cloudscraper",
55
+ "html5lib",
56
+ "aiofiles",
57
+ "emoji",
58
+ "openai",
59
+ "prompt-toolkit",
60
+ "primp",
61
+ "pyreqwest_impersonate",
62
+ "gradio_client",
63
+ "psutil",
64
+ "pygetwindow",
65
+ "aiohttp",
66
+ ],
67
+
68
+ entry_points={
69
+ "console_scripts": [
70
+ "WEBS = webscout.cli:cli",
71
+ "webscout = webscout.cli:cli",
72
+ ],
73
+ },
74
+ extras_require={
75
+ "dev": [
76
+ "ruff>=0.1.6",
77
+ "pytest>=7.4.2",
78
+ ],
79
+ "local": [
80
+ 'llama-cpp-python',
81
+ 'colorama',
82
+ 'numpy',
83
+ 'huggingface_hub[cli]',
84
+ 'unicorn',
85
+ ],
86
+ },
87
+ license="HelpingAI",
88
+ project_urls={
89
+ "Source": "https://github.com/HelpingAI/Webscout",
90
+ "Tracker": "https://github.com/HelpingAI/Webscout/issues",
91
+ "YouTube": "https://youtube.com/@OEvortex",
92
+ },
93
+ )
@@ -1,191 +1,191 @@
1
- from webscout.AIbase import Provider
2
- from webscout.g4f import GPT4FREE, TestProviders
3
- from webscout.exceptions import AllProvidersFailure
4
- from webscout.Litlogger import Litlogger, LogFormat, ColorScheme
5
- from typing import Union, Any, Dict, Generator
6
- import importlib
7
- import pkgutil
8
- import random
9
- import inspect
10
-
11
- # Initialize LitLogger with cyberpunk theme
12
- logger = Litlogger(
13
- name="AIauto",
14
- format=LogFormat.DETAILED,
15
- color_scheme=ColorScheme.CYBERPUNK
16
- )
17
-
18
- def load_providers():
19
- provider_map = {}
20
- api_key_providers = set()
21
- provider_package = importlib.import_module("webscout.Provider")
22
-
23
- for _, module_name, _ in pkgutil.iter_modules(provider_package.__path__):
24
- try:
25
- module = importlib.import_module(f"webscout.Provider.{module_name}")
26
- for attr_name in dir(module):
27
- attr = getattr(module, attr_name)
28
- if isinstance(attr, type) and issubclass(attr, Provider) and attr != Provider:
29
- provider_map[attr_name.upper()] = attr
30
- # Check if the provider needs an API key
31
- if 'api_key' in inspect.signature(attr.__init__).parameters:
32
- api_key_providers.add(attr_name.upper())
33
- logger.debug(f"Provider {attr_name} requires API key")
34
- logger.success(f"Loaded provider module: {module_name}")
35
- except Exception as e:
36
- logger.error(f"Failed to load provider {module_name}: {str(e)}")
37
-
38
- logger.info(f"Total providers loaded: {len(provider_map)}")
39
- logger.info(f"API key providers: {len(api_key_providers)}")
40
- return provider_map, api_key_providers
41
-
42
- provider_map, api_key_providers = load_providers()
43
-
44
- class AUTO(Provider):
45
- def __init__(
46
- self,
47
- is_conversation: bool = True,
48
- max_tokens: int = 600,
49
- timeout: int = 30,
50
- intro: str = None,
51
- filepath: str = None,
52
- update_file: bool = True,
53
- proxies: dict = {},
54
- history_offset: int = 10250,
55
- act: str = None,
56
- exclude: list[str] = [],
57
- ):
58
- self.provider = None
59
- self.provider_name = None
60
- self.is_conversation = is_conversation
61
- self.max_tokens = max_tokens
62
- self.timeout = timeout
63
- self.intro = intro
64
- self.filepath = filepath
65
- self.update_file = update_file
66
- self.proxies = proxies
67
- self.history_offset = history_offset
68
- self.act = act
69
- self.exclude = [e.upper() for e in exclude]
70
-
71
- @property
72
- def last_response(self) -> dict[str, Any]:
73
- return self.provider.last_response if self.provider else {}
74
-
75
- @property
76
- def conversation(self) -> object:
77
- return self.provider.conversation if self.provider else None
78
-
79
- def ask(
80
- self,
81
- prompt: str,
82
- stream: bool = False,
83
- raw: bool = False,
84
- optimizer: str = None,
85
- conversationally: bool = False,
86
- run_new_test: bool = False,
87
- ) -> Union[Dict, Generator]:
88
- ask_kwargs = {
89
- "prompt": prompt,
90
- "stream": stream,
91
- "raw": raw,
92
- "optimizer": optimizer,
93
- "conversationally": conversationally,
94
- }
95
-
96
- # Filter out API key required providers and excluded providers
97
- available_providers = [
98
- (name, cls) for name, cls in provider_map.items()
99
- if name not in api_key_providers and name not in self.exclude
100
- ]
101
-
102
- # Shuffle the list of available providers
103
- random.shuffle(available_providers)
104
-
105
- # Try webscout-based providers
106
- for provider_name, provider_class in available_providers:
107
- try:
108
- self.provider_name = f"webscout-{provider_name}"
109
- logger.info(f"Trying provider: {self.provider_name}")
110
-
111
- self.provider = provider_class(
112
- is_conversation=self.is_conversation,
113
- max_tokens=self.max_tokens,
114
- timeout=self.timeout,
115
- intro=self.intro,
116
- filepath=self.filepath,
117
- update_file=self.update_file,
118
- proxies=self.proxies,
119
- history_offset=self.history_offset,
120
- act=self.act,
121
- )
122
- response = self.provider.ask(**ask_kwargs)
123
- logger.success(f"Successfully used provider: {self.provider_name}")
124
- return response
125
- except Exception as e:
126
- logger.warning(f"Provider {self.provider_name} failed: {str(e)}")
127
- continue
128
-
129
- # Try GPT4FREE providers
130
- gpt4free_providers = TestProviders(timeout=self.timeout).get_results(run=run_new_test)
131
- random.shuffle(gpt4free_providers)
132
-
133
- for provider_info in gpt4free_providers:
134
- if provider_info["name"].upper() in self.exclude:
135
- continue
136
- try:
137
- self.provider_name = f"g4f-{provider_info['name']}"
138
- logger.info(f"Trying provider: {self.provider_name}")
139
-
140
- self.provider = GPT4FREE(
141
- provider=provider_info["name"],
142
- is_conversation=self.is_conversation,
143
- max_tokens=self.max_tokens,
144
- intro=self.intro,
145
- filepath=self.filepath,
146
- update_file=self.update_file,
147
- proxies=self.proxies,
148
- history_offset=self.history_offset,
149
- act=self.act,
150
- )
151
-
152
- response = self.provider.ask(**ask_kwargs)
153
- logger.success(f"Successfully used provider: {self.provider_name}")
154
- return response
155
- except Exception as e:
156
- logger.warning(f"Provider {self.provider_name} failed: {str(e)}")
157
- continue
158
-
159
- # If we get here, all providers failed
160
- logger.error("All providers failed to process the request")
161
- raise AllProvidersFailure("All providers failed to process the request")
162
-
163
- def chat(
164
- self,
165
- prompt: str,
166
- stream: bool = False,
167
- optimizer: str = None,
168
- conversationally: bool = False,
169
- run_new_test: bool = False,
170
- ) -> Union[str, Generator[str, None, None]]:
171
- response = self.ask(
172
- prompt,
173
- stream,
174
- optimizer=optimizer,
175
- conversationally=conversationally,
176
- run_new_test=run_new_test,
177
- )
178
-
179
- if stream:
180
- return (self.get_message(chunk) for chunk in response)
181
- else:
182
- return self.get_message(response)
183
-
184
- def get_message(self, response: dict) -> str:
185
- assert self.provider is not None, "Chat with AI first"
186
- return self.provider.get_message(response)
187
- if __name__ == "__main__":
188
- auto = AUTO()
189
-
190
- response = auto.chat("Hello, how are you?")
191
- print(response)
1
+ from webscout.AIbase import Provider
2
+ from webscout.g4f import GPT4FREE, TestProviders
3
+ from webscout.exceptions import AllProvidersFailure
4
+ from webscout.Litlogger import Litlogger, LogFormat, ColorScheme
5
+ from typing import Union, Any, Dict, Generator
6
+ import importlib
7
+ import pkgutil
8
+ import random
9
+ import inspect
10
+
11
+ # Initialize LitLogger with cyberpunk theme
12
+ logger = Litlogger(
13
+ name="AIauto",
14
+ format=LogFormat.DETAILED,
15
+ color_scheme=ColorScheme.CYBERPUNK
16
+ )
17
+
18
+ def load_providers():
19
+ provider_map = {}
20
+ api_key_providers = set()
21
+ provider_package = importlib.import_module("webscout.Provider")
22
+
23
+ for _, module_name, _ in pkgutil.iter_modules(provider_package.__path__):
24
+ try:
25
+ module = importlib.import_module(f"webscout.Provider.{module_name}")
26
+ for attr_name in dir(module):
27
+ attr = getattr(module, attr_name)
28
+ if isinstance(attr, type) and issubclass(attr, Provider) and attr != Provider:
29
+ provider_map[attr_name.upper()] = attr
30
+ # Check if the provider needs an API key
31
+ if 'api_key' in inspect.signature(attr.__init__).parameters:
32
+ api_key_providers.add(attr_name.upper())
33
+ logger.debug(f"Provider {attr_name} requires API key")
34
+ logger.success(f"Loaded provider module: {module_name}")
35
+ except Exception as e:
36
+ logger.error(f"Failed to load provider {module_name}: {str(e)}")
37
+
38
+ logger.info(f"Total providers loaded: {len(provider_map)}")
39
+ logger.info(f"API key providers: {len(api_key_providers)}")
40
+ return provider_map, api_key_providers
41
+
42
+ provider_map, api_key_providers = load_providers()
43
+
44
+ class AUTO(Provider):
45
+ def __init__(
46
+ self,
47
+ is_conversation: bool = True,
48
+ max_tokens: int = 600,
49
+ timeout: int = 30,
50
+ intro: str = None,
51
+ filepath: str = None,
52
+ update_file: bool = True,
53
+ proxies: dict = {},
54
+ history_offset: int = 10250,
55
+ act: str = None,
56
+ exclude: list[str] = [],
57
+ ):
58
+ self.provider = None
59
+ self.provider_name = None
60
+ self.is_conversation = is_conversation
61
+ self.max_tokens = max_tokens
62
+ self.timeout = timeout
63
+ self.intro = intro
64
+ self.filepath = filepath
65
+ self.update_file = update_file
66
+ self.proxies = proxies
67
+ self.history_offset = history_offset
68
+ self.act = act
69
+ self.exclude = [e.upper() for e in exclude]
70
+
71
+ @property
72
+ def last_response(self) -> dict[str, Any]:
73
+ return self.provider.last_response if self.provider else {}
74
+
75
+ @property
76
+ def conversation(self) -> object:
77
+ return self.provider.conversation if self.provider else None
78
+
79
+ def ask(
80
+ self,
81
+ prompt: str,
82
+ stream: bool = False,
83
+ raw: bool = False,
84
+ optimizer: str = None,
85
+ conversationally: bool = False,
86
+ run_new_test: bool = False,
87
+ ) -> Union[Dict, Generator]:
88
+ ask_kwargs = {
89
+ "prompt": prompt,
90
+ "stream": stream,
91
+ "raw": raw,
92
+ "optimizer": optimizer,
93
+ "conversationally": conversationally,
94
+ }
95
+
96
+ # Filter out API key required providers and excluded providers
97
+ available_providers = [
98
+ (name, cls) for name, cls in provider_map.items()
99
+ if name not in api_key_providers and name not in self.exclude
100
+ ]
101
+
102
+ # Shuffle the list of available providers
103
+ random.shuffle(available_providers)
104
+
105
+ # Try webscout-based providers
106
+ for provider_name, provider_class in available_providers:
107
+ try:
108
+ self.provider_name = f"webscout-{provider_name}"
109
+ logger.info(f"Trying provider: {self.provider_name}")
110
+
111
+ self.provider = provider_class(
112
+ is_conversation=self.is_conversation,
113
+ max_tokens=self.max_tokens,
114
+ timeout=self.timeout,
115
+ intro=self.intro,
116
+ filepath=self.filepath,
117
+ update_file=self.update_file,
118
+ proxies=self.proxies,
119
+ history_offset=self.history_offset,
120
+ act=self.act,
121
+ )
122
+ response = self.provider.ask(**ask_kwargs)
123
+ logger.success(f"Successfully used provider: {self.provider_name}")
124
+ return response
125
+ except Exception as e:
126
+ logger.warning(f"Provider {self.provider_name} failed: {str(e)}")
127
+ continue
128
+
129
+ # Try GPT4FREE providers
130
+ gpt4free_providers = TestProviders(timeout=self.timeout).get_results(run=run_new_test)
131
+ random.shuffle(gpt4free_providers)
132
+
133
+ for provider_info in gpt4free_providers:
134
+ if provider_info["name"].upper() in self.exclude:
135
+ continue
136
+ try:
137
+ self.provider_name = f"g4f-{provider_info['name']}"
138
+ logger.info(f"Trying provider: {self.provider_name}")
139
+
140
+ self.provider = GPT4FREE(
141
+ provider=provider_info["name"],
142
+ is_conversation=self.is_conversation,
143
+ max_tokens=self.max_tokens,
144
+ intro=self.intro,
145
+ filepath=self.filepath,
146
+ update_file=self.update_file,
147
+ proxies=self.proxies,
148
+ history_offset=self.history_offset,
149
+ act=self.act,
150
+ )
151
+
152
+ response = self.provider.ask(**ask_kwargs)
153
+ logger.success(f"Successfully used provider: {self.provider_name}")
154
+ return response
155
+ except Exception as e:
156
+ logger.warning(f"Provider {self.provider_name} failed: {str(e)}")
157
+ continue
158
+
159
+ # If we get here, all providers failed
160
+ logger.error("All providers failed to process the request")
161
+ raise AllProvidersFailure("All providers failed to process the request")
162
+
163
+ def chat(
164
+ self,
165
+ prompt: str,
166
+ stream: bool = False,
167
+ optimizer: str = None,
168
+ conversationally: bool = False,
169
+ run_new_test: bool = False,
170
+ ) -> Union[str, Generator[str, None, None]]:
171
+ response = self.ask(
172
+ prompt,
173
+ stream,
174
+ optimizer=optimizer,
175
+ conversationally=conversationally,
176
+ run_new_test=run_new_test,
177
+ )
178
+
179
+ if stream:
180
+ return (self.get_message(chunk) for chunk in response)
181
+ else:
182
+ return self.get_message(response)
183
+
184
+ def get_message(self, response: dict) -> str:
185
+ assert self.provider is not None, "Chat with AI first"
186
+ return self.provider.get_message(response)
187
+ if __name__ == "__main__":
188
+ auto = AUTO()
189
+
190
+ response = auto.chat("Hello, how are you?")
191
+ print(response)