webscout 6.9__tar.gz → 7.1__tar.gz

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

Potentially problematic release.


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

Files changed (213) hide show
  1. {webscout-6.9/webscout.egg-info → webscout-7.1}/PKG-INFO +32 -28
  2. {webscout-6.9 → webscout-7.1}/README.md +18 -25
  3. {webscout-6.9 → webscout-7.1}/setup.py +1 -2
  4. {webscout-6.9 → webscout-7.1}/webscout/AIbase.py +12 -2
  5. {webscout-6.9 → webscout-7.1}/webscout/DWEBS.py +38 -22
  6. {webscout-6.9 → webscout-7.1}/webscout/Extra/autocoder/autocoder_utiles.py +68 -7
  7. {webscout-6.9 → webscout-7.1}/webscout/Extra/autollama.py +0 -16
  8. {webscout-6.9 → webscout-7.1}/webscout/Extra/gguf.py +0 -13
  9. {webscout-6.9 → webscout-7.1}/webscout/LLM.py +1 -1
  10. webscout-7.1/webscout/Provider/AISEARCH/DeepFind.py +251 -0
  11. webscout-7.1/webscout/Provider/AISEARCH/__init__.py +2 -0
  12. webscout-7.1/webscout/Provider/AISEARCH/felo_search.py +229 -0
  13. webscout-7.1/webscout/Provider/Blackboxai.py +229 -0
  14. {webscout-6.9 → webscout-7.1}/webscout/Provider/Cloudflare.py +92 -78
  15. {webscout-6.9 → webscout-7.1}/webscout/Provider/Deepinfra.py +59 -35
  16. webscout-7.1/webscout/Provider/Glider.py +222 -0
  17. {webscout-6.9 → webscout-7.1}/webscout/Provider/Groq.py +26 -18
  18. webscout-7.1/webscout/Provider/HF_space/__init__.py +0 -0
  19. webscout-7.1/webscout/Provider/HF_space/qwen_qwen2.py +206 -0
  20. webscout-7.1/webscout/Provider/Jadve.py +265 -0
  21. webscout-7.1/webscout/Provider/Llama3.py +212 -0
  22. {webscout-6.9 → webscout-7.1}/webscout/Provider/Marcus.py +65 -10
  23. {webscout-6.9 → webscout-7.1}/webscout/Provider/Netwrck.py +61 -49
  24. {webscout-6.9 → webscout-7.1}/webscout/Provider/PI.py +77 -122
  25. webscout-7.1/webscout/Provider/PizzaGPT.py +240 -0
  26. webscout-7.1/webscout/Provider/TextPollinationsAI.py +229 -0
  27. {webscout-6.9 → webscout-7.1}/webscout/Provider/Youchat.py +28 -22
  28. {webscout-6.9 → webscout-7.1}/webscout/Provider/__init__.py +12 -4
  29. {webscout-6.9 → webscout-7.1}/webscout/Provider/askmyai.py +2 -2
  30. webscout-7.1/webscout/Provider/chatglm.py +205 -0
  31. webscout-7.1/webscout/Provider/dgaf.py +215 -0
  32. webscout-7.1/webscout/Provider/gaurish.py +247 -0
  33. webscout-7.1/webscout/Provider/hermes.py +219 -0
  34. {webscout-6.9 → webscout-7.1}/webscout/Provider/llamatutor.py +72 -62
  35. {webscout-6.9 → webscout-7.1}/webscout/Provider/llmchat.py +62 -35
  36. {webscout-6.9 → webscout-7.1}/webscout/Provider/meta.py +6 -6
  37. webscout-7.1/webscout/Provider/multichat.py +331 -0
  38. {webscout-6.9 → webscout-7.1}/webscout/Provider/typegpt.py +26 -23
  39. {webscout-6.9 → webscout-7.1}/webscout/Provider/yep.py +3 -3
  40. webscout-7.1/webscout/litagent/__init__.py +29 -0
  41. webscout-6.9/webscout/litagent/__init__.py → webscout-7.1/webscout/litagent/agent.py +120 -172
  42. webscout-7.1/webscout/litagent/constants.py +31 -0
  43. {webscout-6.9 → webscout-7.1}/webscout/tempid.py +0 -4
  44. {webscout-6.9 → webscout-7.1}/webscout/version.py +1 -1
  45. {webscout-6.9 → webscout-7.1}/webscout/webscout_search.py +1141 -1140
  46. {webscout-6.9 → webscout-7.1}/webscout/webscout_search_async.py +635 -635
  47. {webscout-6.9 → webscout-7.1/webscout.egg-info}/PKG-INFO +32 -28
  48. {webscout-6.9 → webscout-7.1}/webscout.egg-info/SOURCES.txt +10 -2
  49. {webscout-6.9 → webscout-7.1}/webscout.egg-info/requires.txt +1 -1
  50. webscout-6.9/webscout/Provider/AISEARCH/__init__.py +0 -2
  51. webscout-6.9/webscout/Provider/AISEARCH/felo_search.py +0 -180
  52. webscout-6.9/webscout/Provider/AISEARCH/ooai.py +0 -155
  53. webscout-6.9/webscout/Provider/Blackboxai.py +0 -230
  54. webscout-6.9/webscout/Provider/Jadve.py +0 -234
  55. webscout-6.9/webscout/Provider/Llama3.py +0 -189
  56. webscout-6.9/webscout/Provider/PizzaGPT.py +0 -193
  57. webscout-6.9/webscout/Provider/RUBIKSAI.py +0 -272
  58. webscout-6.9/webscout/Provider/gaurish.py +0 -207
  59. webscout-6.9/webscout/Provider/multichat.py +0 -230
  60. {webscout-6.9 → webscout-7.1}/LICENSE.md +0 -0
  61. {webscout-6.9 → webscout-7.1}/setup.cfg +0 -0
  62. {webscout-6.9 → webscout-7.1}/webscout/AIauto.py +0 -0
  63. {webscout-6.9 → webscout-7.1}/webscout/AIutel.py +0 -0
  64. {webscout-6.9 → webscout-7.1}/webscout/Bard.py +0 -0
  65. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/YTdownloader.py +0 -0
  66. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/__init__.py +0 -0
  67. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/transcriber.py +0 -0
  68. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
  69. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/channel.py +0 -0
  70. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
  71. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
  72. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
  73. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
  74. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/playlist.py +0 -0
  75. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/pool.py +0 -0
  76. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
  77. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
  78. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/utils.py +0 -0
  79. {webscout-6.9 → webscout-7.1}/webscout/Extra/YTToolkit/ytapi/video.py +0 -0
  80. {webscout-6.9 → webscout-7.1}/webscout/Extra/__init__.py +0 -0
  81. {webscout-6.9 → webscout-7.1}/webscout/Extra/autocoder/__init__.py +0 -0
  82. {webscout-6.9 → webscout-7.1}/webscout/Extra/autocoder/rawdog.py +0 -0
  83. {webscout-6.9 → webscout-7.1}/webscout/Extra/weather.py +0 -0
  84. {webscout-6.9 → webscout-7.1}/webscout/Extra/weather_ascii.py +0 -0
  85. {webscout-6.9 → webscout-7.1}/webscout/Litlogger/__init__.py +0 -0
  86. {webscout-6.9 → webscout-7.1}/webscout/Local/__init__.py +0 -0
  87. {webscout-6.9 → webscout-7.1}/webscout/Local/_version.py +0 -0
  88. {webscout-6.9 → webscout-7.1}/webscout/Local/formats.py +0 -0
  89. {webscout-6.9 → webscout-7.1}/webscout/Local/model.py +0 -0
  90. {webscout-6.9 → webscout-7.1}/webscout/Local/samplers.py +0 -0
  91. {webscout-6.9 → webscout-7.1}/webscout/Local/thread.py +0 -0
  92. {webscout-6.9 → webscout-7.1}/webscout/Local/ui.py +0 -0
  93. {webscout-6.9 → webscout-7.1}/webscout/Local/utils.py +0 -0
  94. {webscout-6.9 → webscout-7.1}/webscout/Provider/AI21.py +0 -0
  95. {webscout-6.9 → webscout-7.1}/webscout/Provider/Amigo.py +0 -0
  96. {webscout-6.9 → webscout-7.1}/webscout/Provider/Andi.py +0 -0
  97. {webscout-6.9 → webscout-7.1}/webscout/Provider/Bing.py +0 -0
  98. {webscout-6.9 → webscout-7.1}/webscout/Provider/ChatGPTES.py +0 -0
  99. {webscout-6.9 → webscout-7.1}/webscout/Provider/Chatify.py +0 -0
  100. {webscout-6.9 → webscout-7.1}/webscout/Provider/Cohere.py +0 -0
  101. {webscout-6.9 → webscout-7.1}/webscout/Provider/DARKAI.py +0 -0
  102. {webscout-6.9 → webscout-7.1}/webscout/Provider/DiscordRocks.py +0 -0
  103. {webscout-6.9 → webscout-7.1}/webscout/Provider/EDITEE.py +0 -0
  104. {webscout-6.9 → webscout-7.1}/webscout/Provider/Free2GPT.py +0 -0
  105. {webscout-6.9 → webscout-7.1}/webscout/Provider/GPTWeb.py +0 -0
  106. {webscout-6.9 → webscout-7.1}/webscout/Provider/Gemini.py +0 -0
  107. {webscout-6.9 → webscout-7.1}/webscout/Provider/Koboldai.py +0 -0
  108. {webscout-6.9 → webscout-7.1}/webscout/Provider/Llama.py +0 -0
  109. {webscout-6.9 → webscout-7.1}/webscout/Provider/OLLAMA.py +0 -0
  110. {webscout-6.9 → webscout-7.1}/webscout/Provider/Openai.py +0 -0
  111. {webscout-6.9 → webscout-7.1}/webscout/Provider/Phind.py +0 -0
  112. {webscout-6.9 → webscout-7.1}/webscout/Provider/Reka.py +0 -0
  113. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/AiForce/__init__.py +0 -0
  114. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/AiForce/async_aiforce.py +0 -0
  115. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/AiForce/sync_aiforce.py +0 -0
  116. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/Nexra/__init__.py +0 -0
  117. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/Nexra/async_nexra.py +0 -0
  118. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/Nexra/sync_nexra.py +0 -0
  119. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/PollinationsAI/__init__.py +0 -0
  120. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/PollinationsAI/async_pollinations.py +0 -0
  121. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +0 -0
  122. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/__init__.py +0 -0
  123. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/artbit/__init__.py +0 -0
  124. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/artbit/async_artbit.py +0 -0
  125. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/artbit/sync_artbit.py +0 -0
  126. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/blackbox/__init__.py +0 -0
  127. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/blackbox/async_blackbox.py +0 -0
  128. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/blackbox/sync_blackbox.py +0 -0
  129. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/deepinfra/__init__.py +0 -0
  130. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/deepinfra/async_deepinfra.py +0 -0
  131. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/deepinfra/sync_deepinfra.py +0 -0
  132. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/huggingface/__init__.py +0 -0
  133. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/huggingface/async_huggingface.py +0 -0
  134. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/huggingface/sync_huggingface.py +0 -0
  135. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/imgninza/__init__.py +0 -0
  136. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/imgninza/async_ninza.py +0 -0
  137. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/imgninza/sync_ninza.py +0 -0
  138. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/talkai/__init__.py +0 -0
  139. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/talkai/async_talkai.py +0 -0
  140. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTI/talkai/sync_talkai.py +0 -0
  141. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/__init__.py +0 -0
  142. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/deepgram.py +0 -0
  143. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/elevenlabs.py +0 -0
  144. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/gesserit.py +0 -0
  145. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/murfai.py +0 -0
  146. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/parler.py +0 -0
  147. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/streamElements.py +0 -0
  148. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/utils.py +0 -0
  149. {webscout-6.9 → webscout-7.1}/webscout/Provider/TTS/voicepod.py +0 -0
  150. {webscout-6.9 → webscout-7.1}/webscout/Provider/TeachAnything.py +0 -0
  151. {webscout-6.9 → webscout-7.1}/webscout/Provider/ai4chat.py +0 -0
  152. {webscout-6.9 → webscout-7.1}/webscout/Provider/aimathgpt.py +0 -0
  153. {webscout-6.9 → webscout-7.1}/webscout/Provider/bagoodex.py +0 -0
  154. {webscout-6.9 → webscout-7.1}/webscout/Provider/cerebras.py +0 -0
  155. {webscout-6.9 → webscout-7.1}/webscout/Provider/cleeai.py +0 -0
  156. {webscout-6.9 → webscout-7.1}/webscout/Provider/elmo.py +0 -0
  157. {webscout-6.9 → webscout-7.1}/webscout/Provider/geminiapi.py +0 -0
  158. {webscout-6.9 → webscout-7.1}/webscout/Provider/geminiprorealtime.py +0 -0
  159. {webscout-6.9 → webscout-7.1}/webscout/Provider/julius.py +0 -0
  160. {webscout-6.9 → webscout-7.1}/webscout/Provider/koala.py +0 -0
  161. {webscout-6.9 → webscout-7.1}/webscout/Provider/learnfastai.py +0 -0
  162. {webscout-6.9 → webscout-7.1}/webscout/Provider/lepton.py +0 -0
  163. {webscout-6.9 → webscout-7.1}/webscout/Provider/llama3mitril.py +0 -0
  164. {webscout-6.9 → webscout-7.1}/webscout/Provider/promptrefine.py +0 -0
  165. {webscout-6.9 → webscout-7.1}/webscout/Provider/talkai.py +0 -0
  166. {webscout-6.9 → webscout-7.1}/webscout/Provider/turboseek.py +0 -0
  167. {webscout-6.9 → webscout-7.1}/webscout/Provider/tutorai.py +0 -0
  168. {webscout-6.9 → webscout-7.1}/webscout/Provider/x0gpt.py +0 -0
  169. {webscout-6.9 → webscout-7.1}/webscout/__init__.py +0 -0
  170. {webscout-6.9 → webscout-7.1}/webscout/__main__.py +0 -0
  171. {webscout-6.9 → webscout-7.1}/webscout/cli.py +0 -0
  172. {webscout-6.9 → webscout-7.1}/webscout/conversation.py +0 -0
  173. {webscout-6.9 → webscout-7.1}/webscout/exceptions.py +0 -0
  174. {webscout-6.9 → webscout-7.1}/webscout/litprinter/__init__.py +0 -0
  175. {webscout-6.9 → webscout-7.1}/webscout/litprinter/colors.py +0 -0
  176. {webscout-6.9 → webscout-7.1}/webscout/optimizers.py +0 -0
  177. {webscout-6.9 → webscout-7.1}/webscout/prompt_manager.py +0 -0
  178. {webscout-6.9 → webscout-7.1}/webscout/scout/__init__.py +0 -0
  179. {webscout-6.9 → webscout-7.1}/webscout/scout/core/__init__.py +0 -0
  180. {webscout-6.9 → webscout-7.1}/webscout/scout/core/crawler.py +0 -0
  181. {webscout-6.9 → webscout-7.1}/webscout/scout/core/scout.py +0 -0
  182. {webscout-6.9 → webscout-7.1}/webscout/scout/core/search_result.py +0 -0
  183. {webscout-6.9 → webscout-7.1}/webscout/scout/core/text_analyzer.py +0 -0
  184. {webscout-6.9 → webscout-7.1}/webscout/scout/core/text_utils.py +0 -0
  185. {webscout-6.9 → webscout-7.1}/webscout/scout/core/web_analyzer.py +0 -0
  186. {webscout-6.9 → webscout-7.1}/webscout/scout/core.py +0 -0
  187. {webscout-6.9 → webscout-7.1}/webscout/scout/element.py +0 -0
  188. {webscout-6.9 → webscout-7.1}/webscout/scout/parsers/__init__.py +0 -0
  189. {webscout-6.9 → webscout-7.1}/webscout/scout/parsers/html5lib_parser.py +0 -0
  190. {webscout-6.9 → webscout-7.1}/webscout/scout/parsers/html_parser.py +0 -0
  191. {webscout-6.9 → webscout-7.1}/webscout/scout/parsers/lxml_parser.py +0 -0
  192. {webscout-6.9 → webscout-7.1}/webscout/scout/utils.py +0 -0
  193. {webscout-6.9 → webscout-7.1}/webscout/swiftcli/__init__.py +0 -0
  194. {webscout-6.9 → webscout-7.1}/webscout/update_checker.py +0 -0
  195. {webscout-6.9 → webscout-7.1}/webscout/utils.py +0 -0
  196. {webscout-6.9 → webscout-7.1}/webscout/zeroart/__init__.py +0 -0
  197. {webscout-6.9 → webscout-7.1}/webscout/zeroart/base.py +0 -0
  198. {webscout-6.9 → webscout-7.1}/webscout/zeroart/effects.py +0 -0
  199. {webscout-6.9 → webscout-7.1}/webscout/zeroart/fonts.py +0 -0
  200. {webscout-6.9 → webscout-7.1}/webscout.egg-info/dependency_links.txt +0 -0
  201. {webscout-6.9 → webscout-7.1}/webscout.egg-info/entry_points.txt +0 -0
  202. {webscout-6.9 → webscout-7.1}/webscout.egg-info/top_level.txt +0 -0
  203. {webscout-6.9 → webscout-7.1}/webstoken/__init__.py +0 -0
  204. {webscout-6.9 → webscout-7.1}/webstoken/classifier.py +0 -0
  205. {webscout-6.9 → webscout-7.1}/webstoken/keywords.py +0 -0
  206. {webscout-6.9 → webscout-7.1}/webstoken/language.py +0 -0
  207. {webscout-6.9 → webscout-7.1}/webstoken/ner.py +0 -0
  208. {webscout-6.9 → webscout-7.1}/webstoken/normalizer.py +0 -0
  209. {webscout-6.9 → webscout-7.1}/webstoken/processor.py +0 -0
  210. {webscout-6.9 → webscout-7.1}/webstoken/sentiment.py +0 -0
  211. {webscout-6.9 → webscout-7.1}/webstoken/stemmer.py +0 -0
  212. {webscout-6.9 → webscout-7.1}/webstoken/tagger.py +0 -0
  213. {webscout-6.9 → webscout-7.1}/webstoken/tokenizer.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: webscout
3
- Version: 6.9
3
+ Version: 7.1
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
@@ -55,7 +55,7 @@ Requires-Dist: primp
55
55
  Requires-Dist: pyreqwest_impersonate
56
56
  Requires-Dist: gradio_client
57
57
  Requires-Dist: psutil
58
- Requires-Dist: yaspin
58
+ Requires-Dist: pygetwindow
59
59
  Provides-Extra: dev
60
60
  Requires-Dist: ruff>=0.1.6; extra == "dev"
61
61
  Requires-Dist: pytest>=7.4.2; extra == "dev"
@@ -65,43 +65,47 @@ Requires-Dist: colorama; extra == "local"
65
65
  Requires-Dist: numpy; extra == "local"
66
66
  Requires-Dist: huggingface_hub[cli]; extra == "local"
67
67
  Requires-Dist: unicorn; extra == "local"
68
+ Dynamic: author
69
+ Dynamic: author-email
70
+ Dynamic: classifier
71
+ Dynamic: description
72
+ Dynamic: description-content-type
73
+ Dynamic: license
74
+ Dynamic: project-url
75
+ Dynamic: provides-extra
76
+ Dynamic: requires-dist
77
+ Dynamic: requires-python
78
+ Dynamic: summary
68
79
 
69
- <div align="center">
70
- <!-- Replace `#` with your actual links -->
71
-
72
- <a href="https://t.me/official_helpingai"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
73
- <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>
74
- <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>
75
- <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>
76
- </div>
77
-
78
- <div align="center">
79
- <!-- Replace `#` with your actual links -->
80
- <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a>
81
- </div>
82
- <div align="center">
83
- <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code's YouTube Channel</a>
84
- </div>
85
- <div align="center">
86
- <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
87
- </div>
88
80
 
81
+ [![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/official_helpingai)
82
+ [![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white)](https://www.instagram.com/oevortex/)
83
+ [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/oe-vortex-29a407265/)
84
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=black)](https://buymeacoffee.com/oevortex)
89
85
 
90
86
 
91
-
92
- # WEBSCOUT 🕵️️
87
+ <div align="center">
88
+ <a href="https://youtube.com/@OEvortex">▶️ Vortex’s YouTube Channel</a> &bull;
89
+ <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code’s YouTube Channel</a> &bull;
90
+ <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder’s Telegram</a>
93
91
  </div>
94
92
 
93
+ ---
94
+
95
95
  <p align="center">
96
- Search for anything using Google, DuckDuckGo, Phind.com, access AI models, transcribe YouTube videos, generate temporary emails and phone numbers, utilize text-to-speech, leverage WebAI (terminal GPT and open interpreter), and explore offline LLMs, and much more!
96
+ <strong>Webscout</strong> is the all-in-one search and AI toolkit you need.
97
+ <br>
98
+ Discover insights with Google, DuckDuckGo, and Phind; access cutting-edge AI models; transcribe YouTube videos; generate temporary emails and phone numbers; perform text-to-speech conversions; run offline language models; and much more!
97
99
  </p>
98
100
 
99
101
  <div align="center">
100
102
  <img src="https://img.shields.io/badge/WebScout-API-blue?style=for-the-badge&logo=WebScout" alt="WebScout API Badge">
101
- <a href="#"><img alt="Python version" src="https://img.shields.io/pypi/pyversions/webscout"/></a>
102
- <a href="https://pepy.tech/project/webscout"><img alt="Downloads" src="https://static.pepy.tech/badge/webscout"></a>
103
+ <a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout" alt="Python Version"></a>
104
+ <a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout" alt="Downloads"></a>
103
105
  </div>
104
106
 
107
+ ---
108
+
105
109
  ## 🚀 Features
106
110
  * **Comprehensive Search:** Leverage Google, DuckDuckGo for diverse search results.
107
111
  * **AI Powerhouse:** Access and interact with various AI models, including OpenAI, Cohere, and more.
@@ -1103,7 +1107,7 @@ print(a.chat("HelpingAI-9B"))
1103
1107
  ```
1104
1108
 
1105
1109
 
1106
- ### 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, OOAi
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
1107
1111
 
1108
1112
  Code is similar to other providers.
1109
1113
 
@@ -1,39 +1,32 @@
1
- <div align="center">
2
- <!-- Replace `#` with your actual links -->
3
-
4
- <a href="https://t.me/official_helpingai"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
5
- <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>
6
- <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>
7
- <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>
8
- </div>
9
-
10
- <div align="center">
11
- <!-- Replace `#` with your actual links -->
12
- <a href="https://youtube.com/@OEvortex">▶️ Vortex's YouTube Channel</a>
13
- </div>
14
- <div align="center">
15
- <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code's YouTube Channel</a>
16
- </div>
17
- <div align="center">
18
- <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder's Telegram</a>
19
- </div>
20
1
 
2
+ [![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/official_helpingai)
3
+ [![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white)](https://www.instagram.com/oevortex/)
4
+ [![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/oe-vortex-29a407265/)
5
+ [![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=for-the-badge&logo=buymeacoffee&logoColor=black)](https://buymeacoffee.com/oevortex)
21
6
 
22
7
 
23
-
24
- # WEBSCOUT 🕵️️
8
+ <div align="center">
9
+ <a href="https://youtube.com/@OEvortex">▶️ Vortex’s YouTube Channel</a> &bull;
10
+ <a href="https://youtube.com/@devsdocode">▶️ Devs Do Code’s YouTube Channel</a> &bull;
11
+ <a href="https://t.me/ANONYMOUS_56788">📢 Anonymous Coder’s Telegram</a>
25
12
  </div>
26
13
 
14
+ ---
15
+
27
16
  <p align="center">
28
- Search for anything using Google, DuckDuckGo, Phind.com, access AI models, transcribe YouTube videos, generate temporary emails and phone numbers, utilize text-to-speech, leverage WebAI (terminal GPT and open interpreter), and explore offline LLMs, and much more!
17
+ <strong>Webscout</strong> is the all-in-one search and AI toolkit you need.
18
+ <br>
19
+ Discover insights with Google, DuckDuckGo, and Phind; access cutting-edge AI models; transcribe YouTube videos; generate temporary emails and phone numbers; perform text-to-speech conversions; run offline language models; and much more!
29
20
  </p>
30
21
 
31
22
  <div align="center">
32
23
  <img src="https://img.shields.io/badge/WebScout-API-blue?style=for-the-badge&logo=WebScout" alt="WebScout API Badge">
33
- <a href="#"><img alt="Python version" src="https://img.shields.io/pypi/pyversions/webscout"/></a>
34
- <a href="https://pepy.tech/project/webscout"><img alt="Downloads" src="https://static.pepy.tech/badge/webscout"></a>
24
+ <a href="#"><img src="https://img.shields.io/pypi/pyversions/webscout" alt="Python Version"></a>
25
+ <a href="https://pepy.tech/project/webscout"><img src="https://static.pepy.tech/badge/webscout" alt="Downloads"></a>
35
26
  </div>
36
27
 
28
+ ---
29
+
37
30
  ## 🚀 Features
38
31
  * **Comprehensive Search:** Leverage Google, DuckDuckGo for diverse search results.
39
32
  * **AI Powerhouse:** Access and interact with various AI models, including OpenAI, Cohere, and more.
@@ -1035,7 +1028,7 @@ print(a.chat("HelpingAI-9B"))
1035
1028
  ```
1036
1029
 
1037
1030
 
1038
- ### 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, OOAi
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
1039
1032
 
1040
1033
  Code is similar to other providers.
1041
1034
 
@@ -61,8 +61,7 @@ setup(
61
61
  "pyreqwest_impersonate",
62
62
  "gradio_client",
63
63
  "psutil",
64
- "yaspin",
65
- # "cerebras_cloud_sdk",
64
+ "pygetwindow",
66
65
  ],
67
66
 
68
67
  entry_points={
@@ -1,5 +1,4 @@
1
- from abc import ABC
2
- from abc import abstractmethod
1
+ from abc import ABC, abstractmethod
3
2
  from pathlib import Path
4
3
  from typing import AsyncGenerator, List, Union, Generator, Optional
5
4
  from typing_extensions import TypeAlias
@@ -110,4 +109,15 @@ class AsyncImageProvider(ABC):
110
109
  name: Optional[str] = None,
111
110
  dir: Optional[Union[str, Path]] = None
112
111
  ) -> List[str]:
112
+ raise NotImplementedError("Method needs to be implemented in subclass")
113
+
114
+ class AISearch(ABC):
115
+
116
+ @abstractmethod
117
+ def search(
118
+ self,
119
+ prompt: str,
120
+ stream: bool = False,
121
+ raw: bool = False,
122
+ ) -> Response:
113
123
  raise NotImplementedError("Method needs to be implemented in subclass")
@@ -109,7 +109,7 @@ class GoogleS:
109
109
  timeout: Optional[int] = 10,
110
110
  max_workers: int = 20,
111
111
  cache_dir: Optional[str] = None,
112
- rate_limit: float = 0.01,
112
+ rate_limit: float = 2.0,
113
113
  use_litlogger: bool = False
114
114
  ):
115
115
  """
@@ -152,7 +152,10 @@ class GoogleS:
152
152
  current_time = time.time()
153
153
  time_since_last = current_time - self.last_request_time
154
154
  if time_since_last < self.rate_limit:
155
- time.sleep(self.rate_limit - time_since_last)
155
+ sleep_time = self.rate_limit - time_since_last
156
+ if self.use_litlogger:
157
+ self.logger.debug(f"Rate limiting: Waiting {sleep_time:.2f} seconds")
158
+ time.sleep(sleep_time)
156
159
  self.last_request_time = time.time()
157
160
 
158
161
  def _get_url(self, method: str, url: str, params: Optional[Dict[str, str]] = None,
@@ -170,31 +173,44 @@ class GoogleS:
170
173
  Returns:
171
174
  bytes: Response content
172
175
  """
173
- self._respect_rate_limit()
176
+ retry_count = 0
177
+ base_delay = 5 # Base delay in seconds
174
178
 
175
- for attempt in range(max_retries):
179
+ while retry_count < max_retries:
176
180
  try:
177
- if self.use_litlogger:
178
- self.logger.debug(f"Making {method} request to {url} (Attempt {attempt + 1})")
181
+ self._respect_rate_limit()
182
+ response = self.client.request(
183
+ method=method,
184
+ url=url,
185
+ params=params,
186
+ data=data,
187
+ timeout=self.timeout
188
+ )
179
189
 
180
- resp = self.client.request(method, url, params=params, data=data, timeout=self.timeout)
181
- resp.raise_for_status()
190
+ if response.status_code == 429:
191
+ retry_delay = base_delay * (2 ** retry_count) # Exponential backoff
192
+ if self.use_litlogger:
193
+ self.logger.warning(f"Rate limited by Google. Waiting {retry_delay} seconds before retry...")
194
+ time.sleep(retry_delay)
195
+ retry_count += 1
196
+ continue
197
+
198
+ response.raise_for_status()
199
+ return response.content
182
200
 
183
- if self.use_litlogger:
184
- self.logger.success(f"Request successful: {resp.status_code}")
201
+ except requests.exceptions.RequestException as e:
202
+ if retry_count == max_retries - 1:
203
+ if self.use_litlogger:
204
+ self.logger.error(f"Max retries reached. Last error: {str(e)}")
205
+ raise
185
206
 
186
- return resp.content
187
-
188
- except requests.exceptions.RequestException as ex:
207
+ retry_delay = base_delay * (2 ** retry_count)
189
208
  if self.use_litlogger:
190
- self.logger.error(f"Request failed: {url} - {str(ex)}")
209
+ self.logger.warning(f"Request failed. Retrying in {retry_delay} seconds... Error: {str(e)}")
210
+ time.sleep(retry_delay)
211
+ retry_count += 1
191
212
 
192
- # Exponential backoff
193
- if attempt < max_retries - 1:
194
- wait_time = (2 ** attempt) + random.random()
195
- time.sleep(wait_time)
196
- else:
197
- raise
213
+ raise Exception("Max retries reached")
198
214
 
199
215
  @lru_cache(maxsize=100)
200
216
  def _cache_key(self, query: str, **kwargs) -> str:
@@ -471,7 +487,7 @@ class GoogleS:
471
487
 
472
488
  if __name__ == "__main__":
473
489
  from rich import print
474
- searcher = GoogleS()
475
- results = searcher.search("HelpingAI-9B", max_results=200, extract_text=False, max_text_length=200)
490
+ searcher = GoogleS(rate_limit=3.0, use_litlogger=True)
491
+ results = searcher.search("HelpingAI-9B", max_results=5, extract_text=False, max_text_length=200)
476
492
  for result in results:
477
493
  print(result)
@@ -8,14 +8,71 @@ import sys
8
8
  from typing import List, Optional
9
9
 
10
10
  from webscout.optimizers import Optimizers
11
-
11
+ import os
12
+ import platform
13
+ import subprocess
12
14
 
13
15
  def get_current_app() -> str:
14
- """Get the current active application name."""
15
- try:
16
- active_window: Optional[gw.Window] = gw.getActiveWindow()
17
- return f"{active_window.title if active_window else 'Unknown'}"
18
- except Exception as e:
16
+ """
17
+ Get the current active application or window title in a cross-platform manner.
18
+
19
+ On Windows, uses the win32gui module from pywin32.
20
+ On macOS, uses AppKit to access the active application info.
21
+ On Linux, uses xprop to get the active window details.
22
+
23
+ Returns:
24
+ A string containing the title of the active application/window, or "Unknown" if it cannot be determined.
25
+ """
26
+ system_name = platform.system()
27
+
28
+ if system_name == "Windows":
29
+ try:
30
+ import win32gui # pywin32 must be installed
31
+ window_handle = win32gui.GetForegroundWindow()
32
+ title = win32gui.GetWindowText(window_handle)
33
+ return title if title else "Unknown"
34
+ except Exception:
35
+ return "Unknown"
36
+
37
+ elif system_name == "Darwin": # macOS
38
+ try:
39
+ from AppKit import NSWorkspace # type: ignore
40
+ active_app = NSWorkspace.sharedWorkspace().activeApplication()
41
+ title = active_app.get('NSApplicationName')
42
+ return title if title else "Unknown"
43
+ except Exception:
44
+ return "Unknown"
45
+
46
+ elif system_name == "Linux":
47
+ try:
48
+ # Get the active window id using xprop
49
+ result = subprocess.run(
50
+ ["xprop", "-root", "_NET_ACTIVE_WINDOW"],
51
+ stdout=subprocess.PIPE,
52
+ stderr=subprocess.PIPE,
53
+ text=True
54
+ )
55
+ if result.returncode == 0 and result.stdout:
56
+ # Expected format: _NET_ACTIVE_WINDOW(WINDOW): window id # 0x1400007
57
+ parts = result.stdout.strip().split()
58
+ window_id = parts[-1]
59
+ if window_id != "0x0":
60
+ title_result = subprocess.run(
61
+ ["xprop", "-id", window_id, "WM_NAME"],
62
+ stdout=subprocess.PIPE,
63
+ stderr=subprocess.PIPE,
64
+ text=True
65
+ )
66
+ if title_result.returncode == 0 and title_result.stdout:
67
+ # Expected format: WM_NAME(STRING) = "Terminal"
68
+ title_parts = title_result.stdout.split(" = ", 1)
69
+ if len(title_parts) == 2:
70
+ title = title_parts[1].strip().strip('"')
71
+ return title if title else "Unknown"
72
+ except Exception:
73
+ pass
74
+ return "Unknown"
75
+ else:
19
76
  return "Unknown"
20
77
 
21
78
 
@@ -136,4 +193,8 @@ EXAMPLES: str = """
136
193
  </rawdog_response>
137
194
  </example>
138
195
  </examples>
139
- """
196
+ """
197
+
198
+ if __name__ == "__main__":
199
+ # Simple test harness to print the current active window title.
200
+ print("Current Active Window/Application: ", get_current_app())
@@ -1,21 +1,5 @@
1
1
  """
2
- Yo fam! 🔥 Welcome to AutoLlama - your go-to tool for downloading and setting up HelpingAI models! 💪
3
-
4
- Created by the legendary Abhay Koul, this script's got your back when it comes to:
5
- - Downloading models straight from HuggingFace Hub 🚀
6
- - Setting up Ollama with zero hassle 💯
7
- - Getting your AI assistant ready to vibe with you! ⚡
8
-
9
- Usage:
10
2
  >>> python -m webscout.Extra.autollama download -m "OEvortex/HelpingAI-Lite-1.5T" -g "HelpingAI-Lite-1.5T.q4_k_m.gguf"
11
-
12
- Features:
13
- - Smart model management 🧠
14
- - Automatic dependency installation 📦
15
- - Progress tracking that keeps it real 📈
16
- - Error handling that's got your back 💪
17
-
18
- Join the squad on Discord and level up your AI game! 🎮
19
3
  """
20
4
 
21
5
  import warnings
@@ -1,22 +1,9 @@
1
1
  """
2
- Yo fam! 🔥 Welcome to GGUF Converter - your ultimate tool for converting models to GGUF format! 💪
3
2
 
4
- - Converting HuggingFace models to GGUF format 🚀
5
- - Multiple quantization methods for different needs 🎯
6
- - Easy upload back to HuggingFace Hub 📤
7
-
8
- Usage:
9
3
  >>> python -m webscout.Extra.gguf convert -m "OEvortex/HelpingAI-Lite-1.5T" -q "q4_k_m,q5_k_m"
10
4
  >>> # With upload options:
11
5
  >>> python -m webscout.Extra.gguf convert -m "your-model" -u "username" -t "token" -q "q4_k_m"
12
6
 
13
- Features:
14
- - Smart dependency checking 🔍
15
- - CUDA support detection ⚡
16
- - Progress tracking that keeps it real 📈
17
- - Multiple quantization options 🎮
18
-
19
- Join the squad on Discord and level up your AI game! 🎮
20
7
  """
21
8
 
22
9
  import subprocess
@@ -418,7 +418,7 @@ if __name__ == "__main__":
418
418
  # Example usage
419
419
  try:
420
420
  # Initialize LLM with Llama 3 model
421
- llm = LLM(model="Qwen/Qwen2.5-Coder-32B-Instruct")
421
+ llm = LLM(model="mistralai/Mistral-Small-24B-Instruct-2501")
422
422
 
423
423
  # Example messages
424
424
  messages = [