webscout 2025.10.19.2__tar.gz → 2025.10.19.3__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 (349) hide show
  1. {webscout-2025.10.19.2/webscout.egg-info → webscout-2025.10.19.3}/PKG-INFO +1 -1
  2. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/DeepAI.py +145 -57
  3. webscout-2025.10.19.3/webscout/version.py +2 -0
  4. {webscout-2025.10.19.2 → webscout-2025.10.19.3/webscout.egg-info}/PKG-INFO +1 -1
  5. webscout-2025.10.19.2/webscout/version.py.bak +0 -2
  6. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/LEGAL_NOTICE.md +0 -0
  7. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/LICENSE.md +0 -0
  8. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/MANIFEST.in +0 -0
  9. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/README.md +0 -0
  10. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/changelog.md +0 -0
  11. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/pyproject.toml +0 -0
  12. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/setup.cfg +0 -0
  13. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/AIauto.py +0 -0
  14. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/AIbase.py +0 -0
  15. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/AIutel.py +0 -0
  16. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Bard.py +0 -0
  17. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/Act.md +0 -0
  18. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/GitToolkit/__init__.py +0 -0
  19. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/GitToolkit/gitapi/README.md +0 -0
  20. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/GitToolkit/gitapi/__init__.py +0 -0
  21. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/GitToolkit/gitapi/repository.py +0 -0
  22. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/GitToolkit/gitapi/user.py +0 -0
  23. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/GitToolkit/gitapi/utils.py +0 -0
  24. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/README.md +0 -0
  25. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/YTdownloader.py +0 -0
  26. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/__init__.py +0 -0
  27. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/transcriber.py +0 -0
  28. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/README.md +0 -0
  29. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/__init__.py +0 -0
  30. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/channel.py +0 -0
  31. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/errors.py +0 -0
  32. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/extras.py +0 -0
  33. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/https.py +0 -0
  34. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/patterns.py +0 -0
  35. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/playlist.py +0 -0
  36. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/pool.py +0 -0
  37. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/query.py +0 -0
  38. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/stream.py +0 -0
  39. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/utils.py +0 -0
  40. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/YTToolkit/ytapi/video.py +0 -0
  41. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/__init__.py +0 -0
  42. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/autocoder/__init__.py +0 -0
  43. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/autocoder/autocoder.py +0 -0
  44. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/autocoder/autocoder_utiles.py +0 -0
  45. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/gguf.md +0 -0
  46. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/gguf.py +0 -0
  47. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/README.md +0 -0
  48. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/__init__.py +0 -0
  49. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/async_utils.py +0 -0
  50. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/base.py +0 -0
  51. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/cli.py +0 -0
  52. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/emailnator.py +0 -0
  53. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/mail_tm.py +0 -0
  54. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/tempmail/temp_mail_io.py +0 -0
  55. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/weather.py +0 -0
  56. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Extra/weather_ascii.py +0 -0
  57. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Litlogger/README.md +0 -0
  58. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Litlogger/__init__.py +0 -0
  59. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Litlogger/formats.py +0 -0
  60. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Litlogger/handlers.py +0 -0
  61. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Litlogger/levels.py +0 -0
  62. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Litlogger/logger.py +0 -0
  63. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/PERPLEXED_search.py +0 -0
  64. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/Perplexity.py +0 -0
  65. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/README.md +0 -0
  66. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/__init__.py +0 -0
  67. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/felo_search.py +0 -0
  68. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/genspark_search.py +0 -0
  69. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/hika_search.py +0 -0
  70. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/iask_search.py +0 -0
  71. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/monica_search.py +0 -0
  72. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/scira_search.py +0 -0
  73. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/stellar_search.py +0 -0
  74. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/AISEARCH/webpilotai_search.py +0 -0
  75. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Aitopia.py +0 -0
  76. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Andi.py +0 -0
  77. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Apriel.py +0 -0
  78. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/ChatGPTClone.py +0 -0
  79. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/ChatSandbox.py +0 -0
  80. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/ClaudeOnline.py +0 -0
  81. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Cloudflare.py +0 -0
  82. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Cohere.py +0 -0
  83. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/DeepAI.py +0 -0
  84. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Deepinfra.py +0 -0
  85. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/ExaAI.py +0 -0
  86. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/ExaChat.py +0 -0
  87. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Flowith.py +0 -0
  88. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/GMI.py +0 -0
  89. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Gemini.py +0 -0
  90. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/GeminiProxy.py +0 -0
  91. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/GithubChat.py +0 -0
  92. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Gradient.py +0 -0
  93. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Groq.py +0 -0
  94. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/HeckAI.py +0 -0
  95. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Jadve.py +0 -0
  96. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/K2Think.py +0 -0
  97. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Koboldai.py +0 -0
  98. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/LambdaChat.py +0 -0
  99. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Nemotron.py +0 -0
  100. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Netwrck.py +0 -0
  101. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OLLAMA.py +0 -0
  102. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/Cloudflare.py +0 -0
  103. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/FalconH1.py +0 -0
  104. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/FreeGemini.py +0 -0
  105. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/GeminiProxy.py +0 -0
  106. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/K2Think.py +0 -0
  107. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/NEMOTRON.py +0 -0
  108. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/PI.py +0 -0
  109. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/README.md +0 -0
  110. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/TogetherAI.py +0 -0
  111. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/TwoAI.py +0 -0
  112. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/__init__.py +0 -0
  113. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/ai4chat.py +0 -0
  114. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/base.py +0 -0
  115. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/chatglm.py +0 -0
  116. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/chatgpt.py +0 -0
  117. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/chatgptclone.py +0 -0
  118. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/chatsandbox.py +0 -0
  119. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/deepinfra.py +0 -0
  120. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/e2b.py +0 -0
  121. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/exaai.py +0 -0
  122. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/exachat.py +0 -0
  123. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/flowith.py +0 -0
  124. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/friendli.py +0 -0
  125. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/generate_api_key.py +0 -0
  126. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/gmi.py +0 -0
  127. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/groq.py +0 -0
  128. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/heckai.py +0 -0
  129. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/llmchatco.py +0 -0
  130. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/netwrck.py +0 -0
  131. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/oivscode.py +0 -0
  132. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/opkfc.py +0 -0
  133. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/pydantic_imports.py +0 -0
  134. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/scirachat.py +0 -0
  135. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/sonus.py +0 -0
  136. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/standardinput.py +0 -0
  137. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/textpollinations.py +0 -0
  138. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/toolbaz.py +0 -0
  139. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/typefully.py +0 -0
  140. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/utils.py +0 -0
  141. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/venice.py +0 -0
  142. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/wisecat.py +0 -0
  143. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/writecream.py +0 -0
  144. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/x0gpt.py +0 -0
  145. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OPENAI/yep.py +0 -0
  146. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/OpenGPT.py +0 -0
  147. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Openai.py +0 -0
  148. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/PI.py +0 -0
  149. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Perplexitylabs.py +0 -0
  150. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/QwenLM.py +0 -0
  151. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/STT/__init__.py +0 -0
  152. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/STT/base.py +0 -0
  153. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/STT/elevenlabs.py +0 -0
  154. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Sambanova.py +0 -0
  155. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/StandardInput.py +0 -0
  156. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/README.md +0 -0
  157. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/__init__.py +0 -0
  158. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/aiarta.py +0 -0
  159. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/base.py +0 -0
  160. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/bing.py +0 -0
  161. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/claudeonline.py +0 -0
  162. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/gpt1image.py +0 -0
  163. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/imagen.py +0 -0
  164. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/infip.py +0 -0
  165. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/magicstudio.py +0 -0
  166. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/monochat.py +0 -0
  167. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/piclumen.py +0 -0
  168. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/pixelmuse.py +0 -0
  169. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/pollinations.py +0 -0
  170. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/together.py +0 -0
  171. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/utils.py +0 -0
  172. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTI/venice.py +0 -0
  173. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/README.md +0 -0
  174. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/__init__.py +0 -0
  175. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/base.py +0 -0
  176. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/deepgram.py +0 -0
  177. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/elevenlabs.py +0 -0
  178. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/freetts.py +0 -0
  179. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/gesserit.py +0 -0
  180. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/murfai.py +0 -0
  181. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/openai_fm.py +0 -0
  182. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/parler.py +0 -0
  183. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/speechma.py +0 -0
  184. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/streamElements.py +0 -0
  185. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TTS/utils.py +0 -0
  186. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TeachAnything.py +0 -0
  187. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TextPollinationsAI.py +0 -0
  188. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TogetherAI.py +0 -0
  189. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TwoAI.py +0 -0
  190. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/TypliAI.py +0 -0
  191. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/ChatHub.py +0 -0
  192. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/ChutesAI.py +0 -0
  193. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/GizAI.py +0 -0
  194. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/Marcus.py +0 -0
  195. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/Qodo.py +0 -0
  196. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/VercelAIGateway.py +0 -0
  197. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/XenAI.py +0 -0
  198. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/Youchat.py +0 -0
  199. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/liner.py +0 -0
  200. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/liner_api_request.py +0 -0
  201. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/puterjs.py +0 -0
  202. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/samurai.py +0 -0
  203. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/UNFINISHED/test_lmarena.py +0 -0
  204. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/Venice.py +0 -0
  205. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/VercelAI.py +0 -0
  206. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/WiseCat.py +0 -0
  207. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/WrDoChat.py +0 -0
  208. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/__init__.py +0 -0
  209. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/ai4chat.py +0 -0
  210. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/akashgpt.py +0 -0
  211. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/cerebras.py +0 -0
  212. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/chatglm.py +0 -0
  213. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/cleeai.py +0 -0
  214. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/deepseek_assistant.py +0 -0
  215. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/elmo.py +0 -0
  216. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/geminiapi.py +0 -0
  217. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/granite.py +0 -0
  218. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/hermes.py +0 -0
  219. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/julius.py +0 -0
  220. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/learnfastai.py +0 -0
  221. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/llama3mitril.py +0 -0
  222. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/llmchat.py +0 -0
  223. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/llmchatco.py +0 -0
  224. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/meta.py +0 -0
  225. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/oivscode.py +0 -0
  226. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/scira_chat.py +0 -0
  227. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/searchchat.py +0 -0
  228. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/sonus.py +0 -0
  229. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/toolbaz.py +0 -0
  230. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/turboseek.py +0 -0
  231. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/typefully.py +0 -0
  232. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/x0gpt.py +0 -0
  233. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/Provider/yep.py +0 -0
  234. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/__init__.py +0 -0
  235. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/__main__.py +0 -0
  236. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/cli.py +0 -0
  237. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/client.py +0 -0
  238. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/conversation.py +0 -0
  239. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/exceptions.py +0 -0
  240. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/litagent/Readme.md +0 -0
  241. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/litagent/__init__.py +0 -0
  242. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/litagent/agent.py +0 -0
  243. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/litagent/constants.py +0 -0
  244. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/litprinter/__init__.py +0 -0
  245. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/models.py +0 -0
  246. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/optimizers.py +0 -0
  247. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/prompt_manager.py +0 -0
  248. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/sanitize.py +0 -0
  249. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/README.md +0 -0
  250. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/__init__.py +0 -0
  251. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/core/__init__.py +0 -0
  252. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/core/crawler.py +0 -0
  253. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/core/scout.py +0 -0
  254. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/core/search_result.py +0 -0
  255. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/core/text_analyzer.py +0 -0
  256. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/core/text_utils.py +0 -0
  257. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/core/web_analyzer.py +0 -0
  258. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/element.py +0 -0
  259. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/parsers/__init__.py +0 -0
  260. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/parsers/html5lib_parser.py +0 -0
  261. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/parsers/html_parser.py +0 -0
  262. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/parsers/lxml_parser.py +0 -0
  263. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/scout/utils.py +0 -0
  264. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/__init__.py +0 -0
  265. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/base.py +0 -0
  266. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/bing_main.py +0 -0
  267. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/duckduckgo_main.py +0 -0
  268. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/__init__.py +0 -0
  269. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/bing/__init__.py +0 -0
  270. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/bing/base.py +0 -0
  271. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/bing/images.py +0 -0
  272. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/bing/news.py +0 -0
  273. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/bing/suggestions.py +0 -0
  274. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/bing/text.py +0 -0
  275. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/brave.py +0 -0
  276. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/__init__.py +0 -0
  277. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/answers.py +0 -0
  278. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/base.py +0 -0
  279. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/images.py +0 -0
  280. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/maps.py +0 -0
  281. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/news.py +0 -0
  282. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/suggestions.py +0 -0
  283. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/text.py +0 -0
  284. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/translate.py +0 -0
  285. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/videos.py +0 -0
  286. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/duckduckgo/weather.py +0 -0
  287. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/mojeek.py +0 -0
  288. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/wikipedia.py +0 -0
  289. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/__init__.py +0 -0
  290. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/answers.py +0 -0
  291. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/base.py +0 -0
  292. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/images.py +0 -0
  293. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/maps.py +0 -0
  294. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/news.py +0 -0
  295. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/suggestions.py +0 -0
  296. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/text.py +0 -0
  297. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/translate.py +0 -0
  298. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/videos.py +0 -0
  299. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yahoo/weather.py +0 -0
  300. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yandex.py +0 -0
  301. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yep/__init__.py +0 -0
  302. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yep/base.py +0 -0
  303. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yep/images.py +0 -0
  304. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yep/suggestions.py +0 -0
  305. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/engines/yep/text.py +0 -0
  306. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/http_client.py +0 -0
  307. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/results.py +0 -0
  308. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/yahoo_main.py +0 -0
  309. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/search/yep_main.py +0 -0
  310. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/__init__.py +0 -0
  311. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/config.py +0 -0
  312. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/exceptions.py +0 -0
  313. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/providers.py +0 -0
  314. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/request_models.py +0 -0
  315. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/request_processing.py +0 -0
  316. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/routes.py +0 -0
  317. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/schemas.py +0 -0
  318. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/server.py +0 -0
  319. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/server/simple_logger.py +0 -0
  320. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/Readme.md +0 -0
  321. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/__init__.py +0 -0
  322. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/core/__init__.py +0 -0
  323. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/core/cli.py +0 -0
  324. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/core/context.py +0 -0
  325. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/core/group.py +0 -0
  326. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/decorators/__init__.py +0 -0
  327. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/decorators/command.py +0 -0
  328. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/decorators/options.py +0 -0
  329. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/decorators/output.py +0 -0
  330. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/exceptions.py +0 -0
  331. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/plugins/__init__.py +0 -0
  332. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/plugins/base.py +0 -0
  333. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/plugins/manager.py +0 -0
  334. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/utils/__init__.py +0 -0
  335. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/utils/formatting.py +0 -0
  336. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/swiftcli/utils/parsing.py +0 -0
  337. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/update_checker.py +0 -0
  338. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/utils.py +0 -0
  339. /webscout-2025.10.19.2/webscout/version.py → /webscout-2025.10.19.3/webscout/version.py.bak +0 -0
  340. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/zeroart/README.md +0 -0
  341. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/zeroart/__init__.py +0 -0
  342. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/zeroart/base.py +0 -0
  343. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/zeroart/effects.py +0 -0
  344. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout/zeroart/fonts.py +0 -0
  345. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout.egg-info/SOURCES.txt +0 -0
  346. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout.egg-info/dependency_links.txt +0 -0
  347. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout.egg-info/entry_points.txt +0 -0
  348. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout.egg-info/requires.txt +0 -0
  349. {webscout-2025.10.19.2 → webscout-2025.10.19.3}/webscout.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webscout
3
- Version: 2025.10.19.2
3
+ Version: 2025.10.19.3
4
4
  Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
5
5
  Author-email: OEvortex <helpingai5@gmail.com>
6
6
  License: HelpingAI
@@ -1,45 +1,36 @@
1
- """
2
- DeepAI Chat Provider for webscout
3
-
4
- This provider implements the DeepAI chat API discovered through reverse engineering.
5
- The API uses a POST endpoint with multipart/form-data containing chat history and parameters.
6
-
7
- API Details:
8
- - Endpoint: https://api.deepai.org/hacking_is_a_serious_crime
9
- - Method: POST
10
- - Authentication: api-key header (trial key provided)
11
- - Content-Type: multipart/form-data
12
- - Response: Plain text AI response
13
-
14
- Features:
15
- - Streaming and non-streaming support
16
- - Conversation history management
17
- - Error handling and retries
18
- - Configurable model and chat style
19
- """
20
1
 
2
+ from curl_cffi.requests import Session, RequestsError
21
3
  from typing import List, Dict, Optional, Union, Generator, Any
22
4
 
23
- # Import requests for HTTP requests
24
- import requests
5
+ # Import base classes and utility structures
6
+ from webscout.Provider.OPENAI.base import OpenAICompatibleProvider, BaseChat, BaseCompletions
7
+ from webscout.Provider.OPENAI.utils import (
8
+ ChatCompletionChunk, ChatCompletion, Choice, ChoiceDelta,
9
+ ChatCompletionMessage, CompletionUsage, format_prompt, count_tokens
10
+ )
25
11
 
26
12
  # Standard library imports
27
13
  import json
28
14
  import time
29
15
  import uuid
30
16
 
31
- # Import base classes and utility structures
32
- from .base import OpenAICompatibleProvider, BaseChat, BaseCompletions
33
- from .utils import (
34
- ChatCompletionChunk, ChatCompletion, Choice, ChoiceDelta,
35
- ChatCompletionMessage, CompletionUsage
36
- )
37
-
38
17
  # Attempt to import LitAgent, fallback if not available
39
18
  try:
40
19
  from webscout.litagent import LitAgent
41
20
  except ImportError:
42
- LitAgent = None
21
+ # Define a dummy LitAgent if webscout is not installed or accessible
22
+ class LitAgent:
23
+ def generate_fingerprint(self, browser: str = "chrome") -> Dict[str, Any]:
24
+ # Return minimal default headers if LitAgent is unavailable
25
+ print("Warning: LitAgent not found. Using default minimal headers.")
26
+ return {
27
+ "accept": "*/*",
28
+ "accept_language": "en-US,en;q=0.9",
29
+ "platform": "Windows",
30
+ "sec_ch_ua": '"Not/A)Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
31
+ "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
32
+ "browser_type": browser,
33
+ }
43
34
 
44
35
  # --- DeepAI Client ---
45
36
 
@@ -91,20 +82,27 @@ class Completions(BaseCompletions):
91
82
  created_time = int(time.time())
92
83
 
93
84
  if stream:
94
- return self._create_stream(request_id, created_time, model, payload)
85
+ return self._create_stream(request_id, created_time, model, payload, timeout=timeout, proxies=proxies)
95
86
  else:
96
- return self._create_non_stream(request_id, created_time, model, payload)
87
+ return self._create_non_stream(request_id, created_time, model, payload, timeout=timeout, proxies=proxies)
97
88
 
98
89
  def _create_stream(
99
- self, request_id: str, created_time: int, model: str, payload: Dict[str, Any]
90
+ self, request_id: str, created_time: int, model: str, payload: Dict[str, Any],
91
+ timeout: Optional[int] = None, proxies: Optional[Dict[str, str]] = None
100
92
  ) -> Generator[ChatCompletionChunk, None, None]:
101
93
  # DeepAI doesn't actually support streaming, but we'll implement it for compatibility
102
94
  # For now, just yield the non-stream response as a single chunk
95
+ original_proxies = self._client.session.proxies
96
+ if proxies is not None:
97
+ self._client.session.proxies = proxies
98
+ else:
99
+ self._client.session.proxies = {}
103
100
  try:
101
+ timeout_val = timeout if timeout is not None else self._client.timeout
104
102
  response = self._client.session.post(
105
103
  "https://api.deepai.org/hacking_is_a_serious_crime",
106
104
  data=payload,
107
- timeout=self._client.timeout
105
+ timeout=timeout_val
108
106
  )
109
107
 
110
108
  if response.status_code != 200:
@@ -113,6 +111,11 @@ class Completions(BaseCompletions):
113
111
  # Get response text
114
112
  content = response.text.strip()
115
113
 
114
+ # Estimate token usage
115
+ prompt_tokens = count_tokens(payload.get("chatHistory", ""))
116
+ completion_tokens = count_tokens(content)
117
+ total_tokens = prompt_tokens + completion_tokens
118
+
116
119
  # Create the delta object
117
120
  delta = ChoiceDelta(
118
121
  content=content,
@@ -137,28 +140,40 @@ class Completions(BaseCompletions):
137
140
  system_fingerprint=None
138
141
  )
139
142
 
140
- # Set usage directly on the chunk object (estimated)
143
+ # Set usage directly on the chunk object
141
144
  chunk.usage = {
142
- "prompt_tokens": len(json.dumps(payload.get("chatHistory", []))),
143
- "completion_tokens": len(content),
144
- "total_tokens": len(json.dumps(payload.get("chatHistory", []))) + len(content),
145
+ "prompt_tokens": prompt_tokens,
146
+ "completion_tokens": completion_tokens,
147
+ "total_tokens": total_tokens,
145
148
  "estimated_cost": None
146
149
  }
147
150
 
148
151
  yield chunk
149
152
 
150
- except Exception as e:
153
+ except RequestsError as e:
151
154
  print(f"Error during DeepAI stream request: {e}")
152
155
  raise IOError(f"DeepAI request failed: {e}") from e
156
+ except Exception as e:
157
+ print(f"Unexpected error during DeepAI stream request: {e}")
158
+ raise IOError(f"DeepAI request failed: {e}") from e
159
+ finally:
160
+ self._client.session.proxies = original_proxies
153
161
 
154
162
  def _create_non_stream(
155
- self, request_id: str, created_time: int, model: str, payload: Dict[str, Any]
163
+ self, request_id: str, created_time: int, model: str, payload: Dict[str, Any],
164
+ timeout: Optional[int] = None, proxies: Optional[Dict[str, str]] = None
156
165
  ) -> ChatCompletion:
166
+ original_proxies = self._client.session.proxies
167
+ if proxies is not None:
168
+ self._client.session.proxies = proxies
169
+ else:
170
+ self._client.session.proxies = {}
157
171
  try:
172
+ timeout_val = timeout if timeout is not None else self._client.timeout
158
173
  response = self._client.session.post(
159
174
  "https://api.deepai.org/hacking_is_a_serious_crime",
160
175
  data=payload,
161
- timeout=self._client.timeout
176
+ timeout=timeout_val
162
177
  )
163
178
 
164
179
  if response.status_code != 200:
@@ -167,6 +182,11 @@ class Completions(BaseCompletions):
167
182
  # Get response text
168
183
  content = response.text.strip()
169
184
 
185
+ # Estimate token usage
186
+ prompt_tokens = count_tokens(payload.get("chatHistory", ""))
187
+ completion_tokens = count_tokens(content)
188
+ total_tokens = prompt_tokens + completion_tokens
189
+
170
190
  # Create the message object
171
191
  message = ChatCompletionMessage(
172
192
  role="assistant",
@@ -180,11 +200,11 @@ class Completions(BaseCompletions):
180
200
  finish_reason="stop"
181
201
  )
182
202
 
183
- # Create the usage object (estimated)
203
+ # Create the usage object
184
204
  usage = CompletionUsage(
185
- prompt_tokens=len(json.dumps(payload.get("chatHistory", []))),
186
- completion_tokens=len(content),
187
- total_tokens=len(json.dumps(payload.get("chatHistory", []))) + len(content)
205
+ prompt_tokens=prompt_tokens,
206
+ completion_tokens=completion_tokens,
207
+ total_tokens=total_tokens
188
208
  )
189
209
 
190
210
  # Create the completion object
@@ -197,15 +217,31 @@ class Completions(BaseCompletions):
197
217
  )
198
218
  return completion
199
219
 
200
- except Exception as e:
220
+ except RequestsError as e:
201
221
  print(f"Error during DeepAI non-stream request: {e}")
202
222
  raise IOError(f"DeepAI request failed: {e}") from e
223
+ except Exception as e:
224
+ print(f"Unexpected error during DeepAI non-stream request: {e}")
225
+ raise IOError(f"DeepAI request failed: {e}") from e
226
+ finally:
227
+ self._client.session.proxies = original_proxies
203
228
 
204
229
  class Chat(BaseChat):
205
230
  def __init__(self, client: 'DeepAI'):
206
231
  self.completions = Completions(client)
207
232
 
208
233
  class DeepAI(OpenAICompatibleProvider):
234
+ """
235
+ OpenAI-compatible client for DeepAI API.
236
+
237
+ Usage:
238
+ client = DeepAI()
239
+ response = client.chat.completions.create(
240
+ model="standard",
241
+ messages=[{"role": "user", "content": "Hello!"}]
242
+ )
243
+ """
244
+
209
245
  AVAILABLE_MODELS = [
210
246
  "standard",
211
247
  "genius",
@@ -233,7 +269,6 @@ class DeepAI(OpenAICompatibleProvider):
233
269
  "gemini-2.5-pro",
234
270
  "grok-code-fast-1",
235
271
  "gpt-4.1",
236
-
237
272
  ]
238
273
 
239
274
  def __init__(
@@ -244,31 +279,84 @@ class DeepAI(OpenAICompatibleProvider):
244
279
  model: str = "standard",
245
280
  chat_style: str = "chat",
246
281
  enabled_tools: Optional[List[str]] = None,
282
+ proxies: Optional[Dict[str, str]] = None,
247
283
  **kwargs
248
284
  ):
285
+ """
286
+ Initialize the DeepAI client.
287
+
288
+ Args:
289
+ api_key: DeepAI API key
290
+ timeout: Request timeout in seconds
291
+ browser: Browser type for fingerprinting
292
+ model: Default model to use
293
+ chat_style: Chat style parameter
294
+ enabled_tools: List of enabled tools
295
+ proxies: Optional proxy configuration
296
+ """
297
+ super().__init__(proxies=proxies)
249
298
  self.timeout = timeout
250
299
  self.api_key = api_key
251
300
  self.model = model
252
301
  self.chat_style = chat_style
253
302
  self.enabled_tools = enabled_tools or ["image_generator"]
254
303
 
255
- # Initialize requests Session
256
- self.session = requests.Session()
257
-
258
- # Set up headers with API key
304
+ # Use LitAgent for fingerprint if available, else fallback
305
+ agent = LitAgent()
306
+ self.fingerprint = agent.generate_fingerprint(browser)
307
+
308
+ # Use the fingerprint for headers
259
309
  self.headers = {
260
310
  "Content-Type": "application/x-www-form-urlencoded",
261
311
  "api-key": self.api_key,
262
- "Accept": "text/plain, */*",
263
- "Accept-Encoding": "gzip, deflate, br",
264
- "Accept-Language": "en-US,en;q=0.9",
265
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
312
+ "Accept": self.fingerprint["accept"],
313
+ "Accept-Encoding": "gzip, deflate, br, zstd",
314
+ "Accept-Language": self.fingerprint["accept_language"],
315
+ "User-Agent": self.fingerprint["user_agent"],
316
+ "DNT": "1",
317
+ "Sec-CH-UA": self.fingerprint["sec_ch_ua"] or '"Not/A)Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
318
+ "Sec-CH-UA-Mobile": "?0",
319
+ "Sec-CH-UA-Platform": f'"{self.fingerprint["platform"]}"',
266
320
  }
267
-
268
- # Update session headers
269
- self.session.headers.update(self.headers) # Initialize chat interface
321
+
322
+ # Create session cookies with unique identifiers
323
+ self.cookies = {"__Host-session": uuid.uuid4().hex, '__cf_bm': uuid.uuid4().hex}
324
+
325
+ # Set consistent headers for the scraper session
326
+ self.session = Session()
327
+ for header, value in self.headers.items():
328
+ self.session.headers.update({header: value})
329
+
330
+ # Set cookies
331
+ self.session.cookies.update(self.cookies)
332
+
333
+ # Initialize the chat interface
270
334
  self.chat = Chat(self)
271
335
 
336
+ def refresh_identity(self, browser: str = None, impersonate: str = "chrome120"):
337
+ """Refreshes the browser identity fingerprint and curl_cffi session."""
338
+ browser = browser or self.fingerprint.get("browser_type", "chrome")
339
+ self.fingerprint = LitAgent().generate_fingerprint(browser)
340
+ self.session = Session(impersonate=impersonate)
341
+ # Update headers with new fingerprint
342
+ self.headers.update({
343
+ "Accept": self.fingerprint["accept"],
344
+ "Accept-Language": self.fingerprint["accept_language"],
345
+ "Sec-CH-UA": self.fingerprint["sec_ch_ua"] or self.headers["Sec-CH-UA"],
346
+ "Sec-CH-UA-Platform": f'"{self.fingerprint["platform"]}"',
347
+ "User-Agent": self.fingerprint["user_agent"],
348
+ })
349
+
350
+ # Update session headers
351
+ for header, value in self.headers.items():
352
+ self.session.headers.update({header: value})
353
+
354
+ # Generate new cookies
355
+ self.cookies = {"__Host-session": uuid.uuid4().hex, '__cf_bm': uuid.uuid4().hex}
356
+ self.session.cookies.update(self.cookies)
357
+
358
+ return self.fingerprint
359
+
272
360
  @classmethod
273
361
  def get_models(cls, api_key: str = None):
274
362
  """Fetch available models from DeepAI API.
@@ -0,0 +1,2 @@
1
+ __version__ = "2025.10.19.3"
2
+ __prog__ = "webscout"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webscout
3
- Version: 2025.10.19.2
3
+ Version: 2025.10.19.3
4
4
  Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
5
5
  Author-email: OEvortex <helpingai5@gmail.com>
6
6
  License: HelpingAI
@@ -1,2 +0,0 @@
1
- __version__ = "2025.10.19.1"
2
- __prog__ = "webscout"