webscout 6.2b0__tar.gz → 6.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 (138) hide show
  1. webscout-6.3/LICENSE.md +211 -0
  2. {webscout-6.2b0/webscout.egg-info → webscout-6.3}/PKG-INFO +11 -13
  3. {webscout-6.2b0 → webscout-6.3}/README.md +8 -8
  4. {webscout-6.2b0 → webscout-6.3}/setup.py +3 -4
  5. webscout-6.3/webscout/AIbase.py +310 -0
  6. webscout-6.3/webscout/Agents/functioncall.py +248 -0
  7. webscout-6.3/webscout/DWEBS.py +323 -0
  8. webscout-6.3/webscout/Extra/gguf.py +416 -0
  9. webscout-6.3/webscout/Extra/weather.py +172 -0
  10. webscout-6.3/webscout/LLM.py +279 -0
  11. {webscout-6.2b0 → webscout-6.3}/webscout/Local/formats.py +4 -2
  12. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Amigo.py +19 -10
  13. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Andi.py +0 -33
  14. webscout-6.3/webscout/Provider/Blackboxai.py +230 -0
  15. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Llama3.py +1 -1
  16. webscout-6.3/webscout/Provider/Marcus.py +137 -0
  17. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/__init__.py +2 -1
  18. webscout-6.3/webscout/Provider/TTI/talkai.py +116 -0
  19. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/__init__.py +10 -3
  20. webscout-6.3/webscout/Provider/askmyai.py +158 -0
  21. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/cerebras.py +71 -58
  22. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/geminiapi.py +208 -198
  23. webscout-6.3/webscout/Provider/llama3mitril.py +181 -0
  24. webscout-6.3/webscout/Provider/llmchat.py +203 -0
  25. webscout-6.3/webscout/Provider/talkai.py +196 -0
  26. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/twitterclone.py +7 -6
  27. {webscout-6.2b0 → webscout-6.3}/webscout/cli.py +354 -346
  28. webscout-6.3/webscout/version.py +2 -0
  29. {webscout-6.2b0 → webscout-6.3/webscout.egg-info}/PKG-INFO +11 -13
  30. {webscout-6.2b0 → webscout-6.3}/webscout.egg-info/SOURCES.txt +7 -1
  31. {webscout-6.2b0 → webscout-6.3}/webscout.egg-info/requires.txt +0 -1
  32. webscout-6.2b0/LICENSE.md +0 -50
  33. webscout-6.2b0/webscout/AIbase.py +0 -240
  34. webscout-6.2b0/webscout/Agents/functioncall.py +0 -198
  35. webscout-6.2b0/webscout/DWEBS.py +0 -179
  36. webscout-6.2b0/webscout/Extra/gguf.py +0 -226
  37. webscout-6.2b0/webscout/Extra/weather.py +0 -67
  38. webscout-6.2b0/webscout/LLM.py +0 -100
  39. webscout-6.2b0/webscout/Provider/Blackboxai.py +0 -430
  40. webscout-6.2b0/webscout/version.py +0 -2
  41. {webscout-6.2b0 → webscout-6.3}/setup.cfg +0 -0
  42. {webscout-6.2b0 → webscout-6.3}/webscout/AIauto.py +0 -0
  43. {webscout-6.2b0 → webscout-6.3}/webscout/AIutel.py +0 -0
  44. {webscout-6.2b0 → webscout-6.3}/webscout/Agents/Onlinesearcher.py +0 -0
  45. {webscout-6.2b0 → webscout-6.3}/webscout/Agents/__init__.py +0 -0
  46. {webscout-6.2b0 → webscout-6.3}/webscout/Bard.py +0 -0
  47. {webscout-6.2b0 → webscout-6.3}/webscout/Bing_search.py +0 -0
  48. {webscout-6.2b0 → webscout-6.3}/webscout/Extra/__init__.py +0 -0
  49. {webscout-6.2b0 → webscout-6.3}/webscout/Extra/autollama.py +0 -0
  50. {webscout-6.2b0 → webscout-6.3}/webscout/Extra/weather_ascii.py +0 -0
  51. {webscout-6.2b0 → webscout-6.3}/webscout/Local/__init__.py +0 -0
  52. {webscout-6.2b0 → webscout-6.3}/webscout/Local/_version.py +0 -0
  53. {webscout-6.2b0 → webscout-6.3}/webscout/Local/model.py +0 -0
  54. {webscout-6.2b0 → webscout-6.3}/webscout/Local/samplers.py +0 -0
  55. {webscout-6.2b0 → webscout-6.3}/webscout/Local/thread.py +0 -0
  56. {webscout-6.2b0 → webscout-6.3}/webscout/Local/ui.py +0 -0
  57. {webscout-6.2b0 → webscout-6.3}/webscout/Local/utils.py +0 -0
  58. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/AI21.py +0 -0
  59. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Bing.py +0 -0
  60. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/ChatGPTES.py +0 -0
  61. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Chatify.py +0 -0
  62. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Cloudflare.py +0 -0
  63. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Cohere.py +0 -0
  64. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/DARKAI.py +0 -0
  65. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Deepinfra.py +0 -0
  66. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Deepseek.py +0 -0
  67. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/DiscordRocks.py +0 -0
  68. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/EDITEE.py +0 -0
  69. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Farfalle.py +0 -0
  70. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Free2GPT.py +0 -0
  71. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/GPTWeb.py +0 -0
  72. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Gemini.py +0 -0
  73. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Groq.py +0 -0
  74. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Koboldai.py +0 -0
  75. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Llama.py +0 -0
  76. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/NinjaChat.py +0 -0
  77. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/OLLAMA.py +0 -0
  78. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Openai.py +0 -0
  79. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/PI.py +0 -0
  80. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Perplexity.py +0 -0
  81. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Phind.py +0 -0
  82. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/PizzaGPT.py +0 -0
  83. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/RUBIKSAI.py +0 -0
  84. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Reka.py +0 -0
  85. /webscout-6.2b0/webscout/Provider/TTI/AIuncensored.py → /webscout-6.3/webscout/Provider/TTI/AIuncensoredimage.py +0 -0
  86. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/Nexra.py +0 -0
  87. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/PollinationsAI.py +0 -0
  88. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/WebSimAI.py +0 -0
  89. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/aiforce.py +0 -0
  90. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/artbit.py +0 -0
  91. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/blackboximage.py +0 -0
  92. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/deepinfra.py +0 -0
  93. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/huggingface.py +0 -0
  94. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTI/imgninza.py +0 -0
  95. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTS/__init__.py +0 -0
  96. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTS/parler.py +0 -0
  97. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTS/streamElements.py +0 -0
  98. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TTS/voicepod.py +0 -0
  99. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/TeachAnything.py +0 -0
  100. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/Youchat.py +0 -0
  101. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/ai4chat.py +0 -0
  102. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/aimathgpt.py +0 -0
  103. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/bagoodex.py +0 -0
  104. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/cleeai.py +0 -0
  105. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/elmo.py +0 -0
  106. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/felo_search.py +0 -0
  107. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/gaurish.py +0 -0
  108. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/geminiprorealtime.py +0 -0
  109. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/genspark.py +0 -0
  110. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/julius.py +0 -0
  111. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/koala.py +0 -0
  112. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/learnfastai.py +0 -0
  113. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/lepton.py +0 -0
  114. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/llamatutor.py +0 -0
  115. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/meta.py +0 -0
  116. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/prefind.py +0 -0
  117. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/promptrefine.py +0 -0
  118. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/turboseek.py +0 -0
  119. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/tutorai.py +0 -0
  120. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/upstage.py +0 -0
  121. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/x0gpt.py +0 -0
  122. {webscout-6.2b0 → webscout-6.3}/webscout/Provider/yep.py +0 -0
  123. {webscout-6.2b0 → webscout-6.3}/webscout/YTdownloader.py +0 -0
  124. {webscout-6.2b0 → webscout-6.3}/webscout/__init__.py +0 -0
  125. {webscout-6.2b0 → webscout-6.3}/webscout/__main__.py +0 -0
  126. {webscout-6.2b0 → webscout-6.3}/webscout/exceptions.py +0 -0
  127. {webscout-6.2b0 → webscout-6.3}/webscout/g4f.py +0 -0
  128. {webscout-6.2b0 → webscout-6.3}/webscout/models.py +0 -0
  129. {webscout-6.2b0 → webscout-6.3}/webscout/requestsHTMLfix.py +0 -0
  130. {webscout-6.2b0 → webscout-6.3}/webscout/tempid.py +0 -0
  131. {webscout-6.2b0 → webscout-6.3}/webscout/transcriber.py +0 -0
  132. {webscout-6.2b0 → webscout-6.3}/webscout/utils.py +0 -0
  133. {webscout-6.2b0 → webscout-6.3}/webscout/webai.py +0 -0
  134. {webscout-6.2b0 → webscout-6.3}/webscout/webscout_search.py +0 -0
  135. {webscout-6.2b0 → webscout-6.3}/webscout/webscout_search_async.py +0 -0
  136. {webscout-6.2b0 → webscout-6.3}/webscout.egg-info/dependency_links.txt +0 -0
  137. {webscout-6.2b0 → webscout-6.3}/webscout.egg-info/entry_points.txt +0 -0
  138. {webscout-6.2b0 → webscout-6.3}/webscout.egg-info/top_level.txt +0 -0
@@ -0,0 +1,211 @@
1
+ # HelpingAI License
2
+ Version 3.0
3
+ Copyright (c) 2024 HelpingAI
4
+ All Rights Reserved.
5
+
6
+ ## PREAMBLE
7
+ The HelpingAI License (the "License") is designed to govern the use, modification, and distribution of HelpingAI's proprietary assets, including but not limited to artificial intelligence models, software, algorithms, weights, documentation, datasets, and associated materials (collectively, the "Content"). This License aims to balance open innovation with the protection of HelpingAI's intellectual property rights while ensuring responsible and ethical use of AI technology.
8
+
9
+ ## 1. DEFINITIONS
10
+ 1.1. "Model" means any machine learning model, artificial intelligence system, neural network architecture, or AI-powered solution developed by HelpingAI.
11
+
12
+ 1.2. "Weights" refers to the trained parameters, embeddings, model checkpoints, and other numerical values that define the behavior and capabilities of the Model.
13
+
14
+ 1.3. "Source Code" means the human-readable form of software, documentation, configuration files, and associated resources.
15
+
16
+ 1.4. "Derivative Work" means any work that is based upon or derived from the Content, including but not limited to:
17
+ a) Fine-tuned or adapted versions of the Model
18
+ b) Modified or enhanced versions of the Source Code
19
+ c) Products, services, or applications that incorporate the Content
20
+ d) Adaptations, transformations, or improvements of the Content
21
+ e) Any output generated using the Model or Content
22
+
23
+ 1.5. "Commercial Use" means any use of the Content intended for or directed toward:
24
+ a) Commercial advantage or monetary compensation
25
+ b) Revenue generation, either directly or indirectly
26
+ c) Business operations or commercial services
27
+ d) Integration into commercial products or offerings
28
+
29
+ 1.6. "End User" means any individual or entity that uses the Content or Derivative Works.
30
+
31
+ ## 2. GRANT OF RIGHTS
32
+ Subject to the terms and conditions of this License, HelpingAI hereby grants you a limited, non-exclusive, non-transferable, revocable license to:
33
+
34
+ 2.1. Access and use the Content for:
35
+ a) Research and evaluation purposes
36
+ b) Educational and academic use
37
+ c) Personal, non-commercial projects
38
+ d) Open-source contributions (subject to Section 3)
39
+
40
+ 2.2. Create and use Derivative Works for non-commercial purposes, provided that:
41
+ a) You comply with all restrictions in Section 3
42
+ b) You maintain appropriate attribution
43
+ c) You ensure responsible and ethical use
44
+
45
+ 2.3. Distribute the Content or Derivative Works to third parties, provided that:
46
+ a) You maintain all copyright notices and attributions
47
+ b) You include a complete, unmodified copy of this License
48
+ c) You clearly document any modifications made
49
+ d) You comply with all restrictions in Section 3
50
+ e) You ensure recipients agree to this License
51
+
52
+ ## 3. RESTRICTIONS AND LIMITATIONS
53
+ 3.1. **Commercial Use Restrictions**
54
+ You may not use the Content or any Derivative Works for Commercial Use without:
55
+ a) Obtaining a separate commercial license from HelpingAI
56
+ b) Paying applicable fees and royalties
57
+ c) Receiving written authorization
58
+
59
+ 3.2. **Model Usage Restrictions**
60
+ You may not:
61
+ a) Use the Model to train or develop competing AI models or services
62
+ b) Extract, reverse engineer, or decompile the Model's architecture or weights
63
+ c) Remove, disable, or circumvent any access controls or security measures
64
+ d) Use the Model for military purposes, weapons development, or harmful applications
65
+ e) Use the Model to generate harmful, discriminatory, or illegal content
66
+ f) Use the Model in safety-critical applications without explicit written permission
67
+ g) Use the Model in ways that violate privacy or data protection laws
68
+ h) Create autonomous systems that could cause harm to individuals or society
69
+
70
+ 3.3. **Distribution Restrictions**
71
+ You may not:
72
+ a) Redistribute the Model's weights or checkpoints without explicit permission
73
+ b) Create hosted APIs or services that provide direct access to the Model
74
+ c) Bundle or integrate the Content with commercial products or services
75
+ d) Sublicense or transfer rights to the Content to third parties
76
+ e) Distribute the Content in ways that could harm HelpingAI's interests
77
+
78
+ 3.4. **Branding and Attribution**
79
+ You must:
80
+ a) Maintain all HelpingAI branding, logos, notices, and watermarks
81
+ b) Include the following attribution in all Derivative Works:
82
+ "Powered by HelpingAI technology, licensed under the HelpingAI License v3.0"
83
+ c) Not use HelpingAI's name, logos, or trademarks to endorse or promote products
84
+ d) Not suggest any official association with HelpingAI without permission
85
+
86
+ ## 4. INTELLECTUAL PROPERTY
87
+ 4.1. HelpingAI retains all rights, title, and interest in and to the Content, including:
88
+ a) All intellectual property rights
89
+ b) Patents, trademarks, and trade secrets
90
+ c) Proprietary methods and algorithms
91
+ d) Future improvements and modifications
92
+
93
+ 4.2. This License does not grant you any rights to HelpingAI's:
94
+ a) Patents or patent applications
95
+ b) Trademarks or service marks
96
+ c) Trade secrets or proprietary information
97
+ d) Other intellectual property except as expressly stated
98
+
99
+ 4.3. Derivative Works:
100
+ a) You retain ownership of original portions of Derivative Works you create
101
+ b) HelpingAI retains all rights to the underlying Content
102
+ c) You grant HelpingAI a perpetual license to any improvements or feedback
103
+
104
+ ## 5. DATA COLLECTION AND PRIVACY
105
+ 5.1. Data Collection:
106
+ a) HelpingAI may collect usage data and performance metrics
107
+ b) Analytics may be used to improve the Content
108
+ c) Collection will comply with applicable privacy laws
109
+
110
+ 5.2. Privacy Requirements:
111
+ a) You must comply with all applicable privacy laws and regulations
112
+ b) You must provide appropriate privacy notices to End Users
113
+ c) You must obtain necessary consents for data collection
114
+ d) You must implement appropriate data security measures
115
+
116
+ ## 6. WARRANTY DISCLAIMER
117
+ THE CONTENT IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO:
118
+ a) WARRANTIES OF MERCHANTABILITY
119
+ b) FITNESS FOR A PARTICULAR PURPOSE
120
+ c) NON-INFRINGEMENT
121
+ d) ACCURACY OR COMPLETENESS
122
+ e) ABSENCE OF ERRORS OR DEFECTS
123
+ f) COMPATIBILITY WITH OTHER SOFTWARE
124
+ g) SECURITY OR PERFORMANCE
125
+
126
+ ## 7. LIMITATION OF LIABILITY
127
+ 7.1. IN NO EVENT SHALL HELPINGAI BE LIABLE FOR ANY:
128
+ a) DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
129
+ b) LOSS OF PROFITS OR BUSINESS OPPORTUNITIES
130
+ c) BUSINESS INTERRUPTION OR LOST DATA
131
+ d) PERSONAL INJURY OR PROPERTY DAMAGE
132
+ e) ANY OTHER DAMAGES OR LOSSES
133
+
134
+ 7.2. THIS LIMITATION APPLIES TO:
135
+ a) CONTRACT OR TORT CLAIMS
136
+ b) BREACH OF WARRANTY
137
+ c) ANY OTHER LEGAL THEORY
138
+ d) ALL USES OF THE CONTENT
139
+
140
+ ## 8. TERMINATION
141
+ 8.1. Automatic Termination:
142
+ a) This License terminates automatically upon any breach
143
+ b) No notice is required for termination
144
+ c) All rights granted immediately cease
145
+
146
+ 8.2. Upon Termination:
147
+ a) Cease all use of the Content
148
+ b) Destroy all copies and installations
149
+ c) Stop distribution of Derivative Works
150
+ d) Certify compliance with termination terms
151
+
152
+ 8.3. Survival:
153
+ a) Sections 4, 6, 7, 9, and 10 survive termination
154
+ b) Obligations to protect intellectual property continue
155
+ c) Liability limitations remain in effect
156
+
157
+ ## 9. GOVERNING LAW AND JURISDICTION
158
+ 9.1. This License shall be governed by and construed in accordance with:
159
+ a) The laws of the United States of America
160
+ b) The State of California
161
+ c) Without regard to conflicts of law principles
162
+
163
+ 9.2. Dispute Resolution:
164
+ a) Exclusive jurisdiction in Santa Clara County, California
165
+ b) Agreement to personal jurisdiction
166
+ c) Waiver of jury trial
167
+ d) Prevailing party entitled to attorney fees
168
+
169
+ ## 10. EXPORT COMPLIANCE
170
+ 10.1. You must comply with all applicable:
171
+ a) Export control laws and regulations
172
+ b) Trade sanctions and embargoes
173
+ c) International trade restrictions
174
+ d) Anti-boycott regulations
175
+
176
+ 10.2. You may not export the Content to:
177
+ a) Prohibited countries or regions
178
+ b) Restricted end users
179
+ c) Prohibited end uses
180
+
181
+ ## 11. MODIFICATIONS TO LICENSE
182
+ 11.1. License Updates:
183
+ a) HelpingAI may modify this License at any time
184
+ b) Changes effective upon posting
185
+ c) Continued use constitutes acceptance
186
+
187
+ 11.2. Notification:
188
+ a) Material changes will be announced
189
+ b) Users should regularly review terms
190
+ c) Opt-out requires discontinuing use
191
+
192
+ ## 12. SUPPORT AND UPDATES
193
+ 12.1. No Obligation:
194
+ a) HelpingAI has no obligation to provide support
195
+ b) Updates and maintenance are discretionary
196
+ c) Services may be modified or discontinued
197
+
198
+ 12.2. Available Support:
199
+ a) Documentation and resources provided "as is"
200
+ b) Community forums may be available
201
+ c) Commercial support requires separate agreement
202
+
203
+ <!-- ## 13. CONTACT INFORMATION
204
+ For licensing inquiries, permissions, or compliance:
205
+ - Website: https://helpingai.co
206
+ - Email: license@helpingai.co
207
+ - Address: [Company Address] -->
208
+
209
+ ---
210
+ Last Updated: NOVEMBER 2024
211
+ END OF LICENSE
@@ -1,13 +1,12 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webscout
3
- Version: 6.2b0
3
+ Version: 6.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: OEvortex
6
6
  Author-email: helpingai5@gmail.com
7
7
  License: HelpingAI
8
- Project-URL: Documentation, https://github.com/OE-LUCIFER/Webscout/wiki
9
- Project-URL: Source, https://github.com/OE-LUCIFER/Webscout
10
- Project-URL: Tracker, https://github.com/OE-LUCIFER/Webscout/issues
8
+ Project-URL: Source, https://github.com/HelpingAI/Webscout
9
+ Project-URL: Tracker, https://github.com/HelpingAI/Webscout/issues
11
10
  Project-URL: YouTube, https://youtube.com/@OEvortex
12
11
  Classifier: Development Status :: 5 - Production/Stable
13
12
  Classifier: Intended Audience :: Developers
@@ -25,7 +24,6 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
25
24
  Requires-Python: >=3.7
26
25
  Description-Content-Type: text/markdown
27
26
  License-File: LICENSE.md
28
- Requires-Dist: docstring_inheritance
29
27
  Requires-Dist: click
30
28
  Requires-Dist: curl_cffi
31
29
  Requires-Dist: nest-asyncio
@@ -74,9 +72,9 @@ Requires-Dist: unicorn; extra == "local"
74
72
 
75
73
  <div align="center">
76
74
  <!-- Replace `#` with your actual links -->
77
- <a href="https://t.me/devsdocode"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
78
- <a href="https://www.instagram.com/sree.shades_/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
79
- <a href="https://www.linkedin.com/in/developer-sreejan/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
75
+ <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>
76
+ <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>
77
+ <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>
80
78
  <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>
81
79
  </div>
82
80
 
@@ -819,7 +817,7 @@ with WEBS() as WEBS:
819
817
  ___
820
818
  </details>
821
819
 
822
- ### 🖼️ Text to Images - DeepInfraImager, PollinationsAI, BlackboxAIImager, AiForceimager, NexraImager, HFimager, ArtbitImager, NinjaImager, WebSimAI, AIUncensoredImager
820
+ ### 🖼️ Text to Images - DeepInfraImager, PollinationsAI, BlackboxAIImager, AiForceimager, NexraImager, HFimager, ArtbitImager, NinjaImager, WebSimAI, AIUncensoredImager, TalkaiImager
823
821
 
824
822
  **Every TTI provider has the same usage code, you just need to change the import.**
825
823
 
@@ -1357,7 +1355,7 @@ if __name__ == "__main__":
1357
1355
  main()
1358
1356
  ```
1359
1357
 
1360
- ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Genspark, Upstage, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, AIUncensored, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro
1358
+ ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Genspark, Upstage, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, AIUncensored, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus
1361
1359
 
1362
1360
  Code is similar to other providers.
1363
1361
 
@@ -1563,9 +1561,9 @@ python -m webscout.webai webai --provider "phind" --rawdog
1563
1561
 
1564
1562
  <div align="center">
1565
1563
  <!-- Replace `#` with your actual links -->
1566
- <a href="https://t.me/devsdocode"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
1567
- <a href="https://www.instagram.com/sree.shades_/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
1568
- <a href="https://www.linkedin.com/in/developer-sreejan/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
1564
+ <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>
1565
+ <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>
1566
+ <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>
1569
1567
  <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>
1570
1568
  </div>
1571
1569
 
@@ -1,8 +1,8 @@
1
1
  <div align="center">
2
2
  <!-- Replace `#` with your actual links -->
3
- <a href="https://t.me/devsdocode"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
4
- <a href="https://www.instagram.com/sree.shades_/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
5
- <a href="https://www.linkedin.com/in/developer-sreejan/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
3
+ <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>
4
+ <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>
5
+ <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>
6
6
  <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>
7
7
  </div>
8
8
 
@@ -745,7 +745,7 @@ with WEBS() as WEBS:
745
745
  ___
746
746
  </details>
747
747
 
748
- ### 🖼️ Text to Images - DeepInfraImager, PollinationsAI, BlackboxAIImager, AiForceimager, NexraImager, HFimager, ArtbitImager, NinjaImager, WebSimAI, AIUncensoredImager
748
+ ### 🖼️ Text to Images - DeepInfraImager, PollinationsAI, BlackboxAIImager, AiForceimager, NexraImager, HFimager, ArtbitImager, NinjaImager, WebSimAI, AIUncensoredImager, TalkaiImager
749
749
 
750
750
  **Every TTI provider has the same usage code, you just need to change the import.**
751
751
 
@@ -1283,7 +1283,7 @@ if __name__ == "__main__":
1283
1283
  main()
1284
1284
  ```
1285
1285
 
1286
- ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Genspark, Upstage, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, AIUncensored, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro
1286
+ ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Genspark, Upstage, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, AIUncensored, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus
1287
1287
 
1288
1288
  Code is similar to other providers.
1289
1289
 
@@ -1489,9 +1489,9 @@ python -m webscout.webai webai --provider "phind" --rawdog
1489
1489
 
1490
1490
  <div align="center">
1491
1491
  <!-- Replace `#` with your actual links -->
1492
- <a href="https://t.me/devsdocode"><img alt="Telegram" src="https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge&logo=telegram&logoColor=white"></a>
1493
- <a href="https://www.instagram.com/sree.shades_/"><img alt="Instagram" src="https://img.shields.io/badge/Instagram-E4405F?style=for-the-badge&logo=instagram&logoColor=white"></a>
1494
- <a href="https://www.linkedin.com/in/developer-sreejan/"><img alt="LinkedIn" src="https://img.shields.io/badge/LinkedIn-0077B5?style=for-the-badge&logo=linkedin&logoColor=white"></a>
1492
+ <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>
1493
+ <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>
1494
+ <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>
1495
1495
  <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>
1496
1496
  </div>
1497
1497
 
@@ -30,7 +30,6 @@ setup(
30
30
  "Topic :: Software Development :: Libraries :: Python Modules",
31
31
  ],
32
32
  install_requires=[
33
- "docstring_inheritance",
34
33
  "click",
35
34
  "curl_cffi",
36
35
  "nest-asyncio",
@@ -67,6 +66,7 @@ setup(
67
66
  "colorlog",
68
67
  "yaspin",
69
68
  "cerebras-cloud-sdk",
69
+
70
70
  ],
71
71
  entry_points={
72
72
  "console_scripts": [
@@ -89,9 +89,8 @@ setup(
89
89
  },
90
90
  license="HelpingAI",
91
91
  project_urls={
92
- "Documentation": "https://github.com/OE-LUCIFER/Webscout/wiki",
93
- "Source": "https://github.com/OE-LUCIFER/Webscout",
94
- "Tracker": "https://github.com/OE-LUCIFER/Webscout/issues",
92
+ "Source": "https://github.com/HelpingAI/Webscout",
93
+ "Tracker": "https://github.com/HelpingAI/Webscout/issues",
95
94
  "YouTube": "https://youtube.com/@OEvortex",
96
95
  },
97
96
  )
@@ -0,0 +1,310 @@
1
+ from abc import ABC
2
+ from abc import abstractmethod
3
+ from pathlib import Path
4
+ from typing import AsyncGenerator, List, Union, Generator, Optional
5
+ from typing_extensions import TypeAlias
6
+
7
+ # Type aliases for better readability
8
+ Response: TypeAlias = dict[str, Union[str, bool, None]]
9
+ ImageData: TypeAlias = Union[bytes, str, Generator[bytes, None, None]]
10
+ AsyncImageData: TypeAlias = Union[bytes, str, AsyncGenerator[bytes, None]]
11
+
12
+ class AIProviderError(Exception):
13
+ """Base exception for AI provider errors"""
14
+ pass
15
+
16
+ class Provider(ABC):
17
+ """Base class for text-based AI providers.
18
+
19
+ This class defines the interface for synchronous AI text generation providers.
20
+ All text-based AI providers should inherit from this class and implement
21
+ its abstract methods.
22
+ """
23
+
24
+ @abstractmethod
25
+ def ask(
26
+ self,
27
+ prompt: str,
28
+ stream: bool = False,
29
+ raw: bool = False,
30
+ optimizer: Optional[str] = None,
31
+ conversationally: bool = False,
32
+ ) -> Response:
33
+ """Chat with AI and get detailed response.
34
+
35
+ Args:
36
+ prompt: The input text to send to the AI
37
+ stream: Whether to stream the response. Defaults to False
38
+ raw: Whether to return raw response as received. Defaults to False
39
+ optimizer: Optional prompt optimizer - choices: ['code', 'shell_command']
40
+ conversationally: Whether to maintain conversation context. Defaults to False
41
+
42
+ Returns:
43
+ A dictionary containing response details:
44
+ {
45
+ "completion": str, # The AI's response
46
+ "stop_reason": str|None, # Reason for response termination
47
+ "truncated": bool, # Whether response was truncated
48
+ "stop": str|None, # Stop token if any
49
+ "model": str, # Model used for generation
50
+ "log_id": str, # Unique log identifier
51
+ "exception": str|None # Error message if any
52
+ }
53
+
54
+ Raises:
55
+ AIProviderError: If there's an error communicating with the AI provider
56
+ """
57
+ raise NotImplementedError("Method needs to be implemented in subclass")
58
+
59
+ @abstractmethod
60
+ def chat(
61
+ self,
62
+ prompt: str,
63
+ stream: bool = False,
64
+ optimizer: Optional[str] = None,
65
+ conversationally: bool = False,
66
+ ) -> str:
67
+ """Generate a simple text response from the AI.
68
+
69
+ Args:
70
+ prompt: The input text to send to the AI
71
+ stream: Whether to stream the response. Defaults to False
72
+ optimizer: Optional prompt optimizer - choices: ['code', 'shell_command']
73
+ conversationally: Whether to maintain conversation context. Defaults to False
74
+
75
+ Returns:
76
+ The AI's text response
77
+
78
+ Raises:
79
+ AIProviderError: If there's an error communicating with the AI provider
80
+ """
81
+ raise NotImplementedError("Method needs to be implemented in subclass")
82
+
83
+ @abstractmethod
84
+ def get_message(self, response: Response) -> str:
85
+ """Extract the message content from a response dictionary.
86
+
87
+ Args:
88
+ response: Response dictionary from ask() method
89
+
90
+ Returns:
91
+ The extracted message text
92
+
93
+ Raises:
94
+ AIProviderError: If message cannot be extracted from response
95
+ """
96
+ raise NotImplementedError("Method needs to be implemented in subclass")
97
+
98
+ class AsyncProvider(ABC):
99
+ """Asynchronous base class for text-based AI providers"""
100
+
101
+ @abstractmethod
102
+ async def ask(
103
+ self,
104
+ prompt: str,
105
+ stream: bool = False,
106
+ raw: bool = False,
107
+ optimizer: Optional[str] = None,
108
+ conversationally: bool = False,
109
+ ) -> Response:
110
+ """Asynchronously chat with AI and get detailed response.
111
+
112
+ Args:
113
+ prompt: The input text to send to the AI
114
+ stream: Whether to stream the response. Defaults to False
115
+ raw: Whether to return raw response as received. Defaults to False
116
+ optimizer: Optional prompt optimizer - choices: ['code', 'shell_command']
117
+ conversationally: Whether to maintain conversation context. Defaults to False
118
+
119
+ Returns:
120
+ A dictionary containing response details:
121
+ {
122
+ "completion": str, # The AI's response
123
+ "stop_reason": str|None, # Reason for response termination
124
+ "truncated": bool, # Whether response was truncated
125
+ "stop": str|None, # Stop token if any
126
+ "model": str, # Model used for generation
127
+ "log_id": str, # Unique log identifier
128
+ "exception": str|None # Error message if any
129
+ }
130
+
131
+ Raises:
132
+ AIProviderError: If there's an error communicating with the AI provider
133
+ """
134
+ raise NotImplementedError("Method needs to be implemented in subclass")
135
+
136
+ @abstractmethod
137
+ async def chat(
138
+ self,
139
+ prompt: str,
140
+ stream: bool = False,
141
+ optimizer: Optional[str] = None,
142
+ conversationally: bool = False,
143
+ ) -> str:
144
+ """Asynchronously generate a simple text response from the AI.
145
+
146
+ Args:
147
+ prompt: The input text to send to the AI
148
+ stream: Whether to stream the response. Defaults to False
149
+ optimizer: Optional prompt optimizer - choices: ['code', 'shell_command']
150
+ conversationally: Whether to maintain conversation context. Defaults to False
151
+
152
+ Returns:
153
+ The AI's text response
154
+
155
+ Raises:
156
+ AIProviderError: If there's an error communicating with the AI provider
157
+ """
158
+ raise NotImplementedError("Method needs to be implemented in subclass")
159
+
160
+ @abstractmethod
161
+ async def get_message(self, response: Response) -> str:
162
+ """Asynchronously extract the message content from a response dictionary.
163
+
164
+ Args:
165
+ response: Response dictionary from ask() method
166
+
167
+ Returns:
168
+ The extracted message text
169
+
170
+ Raises:
171
+ AIProviderError: If message cannot be extracted from response
172
+ """
173
+ raise NotImplementedError("Method needs to be implemented in subclass")
174
+
175
+ class TTSProvider(ABC):
176
+ """Base class for text-to-speech providers.
177
+
178
+ This class defines the interface for synchronous text-to-speech providers.
179
+ """
180
+
181
+ @abstractmethod
182
+ def tts(self, text: str) -> ImageData:
183
+ """Convert text to speech.
184
+
185
+ Args:
186
+ text: The text to convert to speech
187
+
188
+ Returns:
189
+ One of:
190
+ - Raw audio bytes
191
+ - Path to saved audio file
192
+ - Generator yielding audio chunks
193
+
194
+ Raises:
195
+ AIProviderError: If text-to-speech conversion fails
196
+ """
197
+ raise NotImplementedError("Method needs to be implemented in subclass")
198
+
199
+ class AsyncTTSProvider(ABC):
200
+ """Base class for asynchronous text-to-speech providers."""
201
+
202
+ @abstractmethod
203
+ async def tts(self, text: str) -> AsyncImageData:
204
+ """Asynchronously convert text to speech.
205
+
206
+ Args:
207
+ text: The text to convert to speech
208
+
209
+ Returns:
210
+ One of:
211
+ - Raw audio bytes
212
+ - Path to saved audio file
213
+ - AsyncGenerator yielding audio chunks
214
+
215
+ Raises:
216
+ AIProviderError: If text-to-speech conversion fails
217
+ """
218
+ raise NotImplementedError("Method needs to be implemented in subclass")
219
+
220
+ class ImageProvider(ABC):
221
+ """Base class for text-to-image generation providers."""
222
+
223
+ @abstractmethod
224
+ def generate(self, prompt: str, amount: int = 1) -> List[bytes]:
225
+ """Generate images from a text description.
226
+
227
+ Args:
228
+ prompt: Text description of desired image
229
+ amount: Number of images to generate (default: 1)
230
+
231
+ Returns:
232
+ List of generated images as bytes
233
+
234
+ Raises:
235
+ AIProviderError: If image generation fails
236
+ ValueError: If amount is less than 1
237
+ """
238
+ raise NotImplementedError("Method needs to be implemented in subclass")
239
+
240
+ @abstractmethod
241
+ def save(
242
+ self,
243
+ response: List[bytes],
244
+ name: Optional[str] = None,
245
+ dir: Optional[Union[str, Path]] = None
246
+ ) -> List[str]:
247
+ """Save generated images to disk.
248
+
249
+ Args:
250
+ response: List of image data in bytes
251
+ name: Base filename for saved images (default: auto-generated)
252
+ dir: Directory to save images (default: current directory)
253
+
254
+ Returns:
255
+ List of paths to saved image files
256
+
257
+ Raises:
258
+ AIProviderError: If saving images fails
259
+ ValueError: If response is empty
260
+ """
261
+ raise NotImplementedError("Method needs to be implemented in subclass")
262
+
263
+ class AsyncImageProvider(ABC):
264
+ """Base class for asynchronous text-to-image generation providers."""
265
+
266
+ @abstractmethod
267
+ async def generate(
268
+ self,
269
+ prompt: str,
270
+ amount: int = 1
271
+ ) -> Union[AsyncGenerator[bytes, None], List[bytes]]:
272
+ """Asynchronously generate images from text.
273
+
274
+ Args:
275
+ prompt: Text description of desired image
276
+ amount: Number of images to generate (default: 1)
277
+
278
+ Returns:
279
+ Either:
280
+ - AsyncGenerator yielding image bytes for streaming
281
+ - List of image bytes if not streaming
282
+
283
+ Raises:
284
+ AIProviderError: If image generation fails
285
+ ValueError: If amount is less than 1
286
+ """
287
+ raise NotImplementedError("Method needs to be implemented in subclass")
288
+
289
+ @abstractmethod
290
+ async def save(
291
+ self,
292
+ response: Union[AsyncGenerator[bytes, None], List[bytes]],
293
+ name: Optional[str] = None,
294
+ dir: Optional[Union[str, Path]] = None
295
+ ) -> List[str]:
296
+ """Asynchronously save generated images.
297
+
298
+ Args:
299
+ response: Either AsyncGenerator yielding images or List of image bytes
300
+ name: Base filename for saved images (default: auto-generated)
301
+ dir: Directory to save images (default: current directory)
302
+
303
+ Returns:
304
+ List of paths to saved image files
305
+
306
+ Raises:
307
+ AIProviderError: If saving images fails
308
+ ValueError: If response is empty
309
+ """
310
+ raise NotImplementedError("Method needs to be implemented in subclass")