webscout 8.3__py3-none-any.whl → 8.3.2__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (120) hide show
  1. webscout/AIauto.py +4 -4
  2. webscout/AIbase.py +61 -1
  3. webscout/AIutel.py +46 -53
  4. webscout/Bing_search.py +418 -0
  5. webscout/Extra/YTToolkit/ytapi/patterns.py +45 -45
  6. webscout/Extra/YTToolkit/ytapi/stream.py +1 -1
  7. webscout/Extra/YTToolkit/ytapi/video.py +10 -10
  8. webscout/Extra/autocoder/autocoder_utiles.py +1 -1
  9. webscout/Extra/gguf.py +706 -177
  10. webscout/Litlogger/formats.py +9 -0
  11. webscout/Litlogger/handlers.py +18 -0
  12. webscout/Litlogger/logger.py +43 -1
  13. webscout/Provider/AISEARCH/genspark_search.py +7 -7
  14. webscout/Provider/AISEARCH/scira_search.py +3 -2
  15. webscout/Provider/GeminiProxy.py +140 -0
  16. webscout/Provider/LambdaChat.py +7 -1
  17. webscout/Provider/MCPCore.py +78 -75
  18. webscout/Provider/OPENAI/BLACKBOXAI.py +1046 -1017
  19. webscout/Provider/OPENAI/GeminiProxy.py +328 -0
  20. webscout/Provider/OPENAI/Qwen3.py +303 -303
  21. webscout/Provider/OPENAI/README.md +5 -0
  22. webscout/Provider/OPENAI/README_AUTOPROXY.md +238 -0
  23. webscout/Provider/OPENAI/TogetherAI.py +355 -0
  24. webscout/Provider/OPENAI/__init__.py +16 -1
  25. webscout/Provider/OPENAI/autoproxy.py +332 -0
  26. webscout/Provider/OPENAI/base.py +101 -14
  27. webscout/Provider/OPENAI/chatgpt.py +15 -2
  28. webscout/Provider/OPENAI/chatgptclone.py +14 -3
  29. webscout/Provider/OPENAI/deepinfra.py +339 -328
  30. webscout/Provider/OPENAI/e2b.py +295 -74
  31. webscout/Provider/OPENAI/mcpcore.py +109 -70
  32. webscout/Provider/OPENAI/opkfc.py +18 -6
  33. webscout/Provider/OPENAI/scirachat.py +59 -50
  34. webscout/Provider/OPENAI/toolbaz.py +2 -10
  35. webscout/Provider/OPENAI/writecream.py +166 -166
  36. webscout/Provider/OPENAI/x0gpt.py +367 -367
  37. webscout/Provider/OPENAI/xenai.py +514 -0
  38. webscout/Provider/OPENAI/yep.py +389 -383
  39. webscout/Provider/STT/__init__.py +3 -0
  40. webscout/Provider/STT/base.py +281 -0
  41. webscout/Provider/STT/elevenlabs.py +265 -0
  42. webscout/Provider/TTI/__init__.py +4 -1
  43. webscout/Provider/TTI/aiarta.py +399 -365
  44. webscout/Provider/TTI/base.py +74 -2
  45. webscout/Provider/TTI/bing.py +231 -0
  46. webscout/Provider/TTI/fastflux.py +63 -30
  47. webscout/Provider/TTI/gpt1image.py +149 -0
  48. webscout/Provider/TTI/imagen.py +196 -0
  49. webscout/Provider/TTI/magicstudio.py +60 -29
  50. webscout/Provider/TTI/piclumen.py +43 -32
  51. webscout/Provider/TTI/pixelmuse.py +232 -225
  52. webscout/Provider/TTI/pollinations.py +43 -32
  53. webscout/Provider/TTI/together.py +287 -0
  54. webscout/Provider/TTI/utils.py +2 -1
  55. webscout/Provider/TTS/README.md +1 -0
  56. webscout/Provider/TTS/__init__.py +2 -1
  57. webscout/Provider/TTS/freetts.py +140 -0
  58. webscout/Provider/TTS/speechma.py +45 -39
  59. webscout/Provider/TogetherAI.py +366 -0
  60. webscout/Provider/UNFINISHED/ChutesAI.py +314 -0
  61. webscout/Provider/UNFINISHED/fetch_together_models.py +95 -0
  62. webscout/Provider/XenAI.py +324 -0
  63. webscout/Provider/__init__.py +8 -0
  64. webscout/Provider/deepseek_assistant.py +378 -0
  65. webscout/Provider/scira_chat.py +3 -2
  66. webscout/Provider/toolbaz.py +0 -1
  67. webscout/auth/__init__.py +44 -0
  68. webscout/auth/api_key_manager.py +189 -0
  69. webscout/auth/auth_system.py +100 -0
  70. webscout/auth/config.py +76 -0
  71. webscout/auth/database.py +400 -0
  72. webscout/auth/exceptions.py +67 -0
  73. webscout/auth/middleware.py +248 -0
  74. webscout/auth/models.py +130 -0
  75. webscout/auth/providers.py +257 -0
  76. webscout/auth/rate_limiter.py +254 -0
  77. webscout/auth/request_models.py +127 -0
  78. webscout/auth/request_processing.py +226 -0
  79. webscout/auth/routes.py +526 -0
  80. webscout/auth/schemas.py +103 -0
  81. webscout/auth/server.py +312 -0
  82. webscout/auth/static/favicon.svg +11 -0
  83. webscout/auth/swagger_ui.py +203 -0
  84. webscout/auth/templates/components/authentication.html +237 -0
  85. webscout/auth/templates/components/base.html +103 -0
  86. webscout/auth/templates/components/endpoints.html +750 -0
  87. webscout/auth/templates/components/examples.html +491 -0
  88. webscout/auth/templates/components/footer.html +75 -0
  89. webscout/auth/templates/components/header.html +27 -0
  90. webscout/auth/templates/components/models.html +286 -0
  91. webscout/auth/templates/components/navigation.html +70 -0
  92. webscout/auth/templates/static/api.js +455 -0
  93. webscout/auth/templates/static/icons.js +168 -0
  94. webscout/auth/templates/static/main.js +784 -0
  95. webscout/auth/templates/static/particles.js +201 -0
  96. webscout/auth/templates/static/styles.css +3353 -0
  97. webscout/auth/templates/static/ui.js +374 -0
  98. webscout/auth/templates/swagger_ui.html +170 -0
  99. webscout/client.py +49 -3
  100. webscout/litagent/Readme.md +12 -3
  101. webscout/litagent/agent.py +99 -62
  102. webscout/scout/core/scout.py +104 -26
  103. webscout/scout/element.py +139 -18
  104. webscout/swiftcli/core/cli.py +14 -3
  105. webscout/swiftcli/decorators/output.py +59 -9
  106. webscout/update_checker.py +31 -49
  107. webscout/version.py +1 -1
  108. webscout/webscout_search.py +4 -12
  109. webscout/webscout_search_async.py +3 -10
  110. webscout/yep_search.py +2 -11
  111. {webscout-8.3.dist-info → webscout-8.3.2.dist-info}/METADATA +41 -11
  112. {webscout-8.3.dist-info → webscout-8.3.2.dist-info}/RECORD +116 -68
  113. {webscout-8.3.dist-info → webscout-8.3.2.dist-info}/entry_points.txt +1 -1
  114. webscout/Provider/HF_space/__init__.py +0 -0
  115. webscout/Provider/HF_space/qwen_qwen2.py +0 -206
  116. webscout/Provider/OPENAI/api.py +0 -1035
  117. webscout/Provider/TTI/artbit.py +0 -0
  118. {webscout-8.3.dist-info → webscout-8.3.2.dist-info}/WHEEL +0 -0
  119. {webscout-8.3.dist-info → webscout-8.3.2.dist-info}/licenses/LICENSE.md +0 -0
  120. {webscout-8.3.dist-info → webscout-8.3.2.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Modern Particle Background System for WebScout
3
+ * Creates an interactive particle network background
4
+ */
5
+
6
+ class ParticleSystem {
7
+ constructor(canvas) {
8
+ this.canvas = canvas;
9
+ this.ctx = canvas.getContext('2d');
10
+ this.particles = [];
11
+ this.mouse = { x: 0, y: 0 };
12
+ this.animationId = null;
13
+
14
+ this.config = {
15
+ particleCount: 50,
16
+ particleSize: 2,
17
+ connectionDistance: 150,
18
+ mouseRadius: 200,
19
+ speed: 0.5,
20
+ colors: {
21
+ particle: 'rgba(99, 102, 241, 0.6)',
22
+ connection: 'rgba(99, 102, 241, 0.2)',
23
+ mouseConnection: 'rgba(139, 92, 246, 0.4)'
24
+ }
25
+ };
26
+
27
+ this.init();
28
+ }
29
+
30
+ init() {
31
+ this.resize();
32
+ this.createParticles();
33
+ this.bindEvents();
34
+ this.animate();
35
+ }
36
+
37
+ resize() {
38
+ this.canvas.width = window.innerWidth;
39
+ this.canvas.height = window.innerHeight;
40
+ }
41
+
42
+ createParticles() {
43
+ this.particles = [];
44
+ for (let i = 0; i < this.config.particleCount; i++) {
45
+ this.particles.push({
46
+ x: Math.random() * this.canvas.width,
47
+ y: Math.random() * this.canvas.height,
48
+ vx: (Math.random() - 0.5) * this.config.speed,
49
+ vy: (Math.random() - 0.5) * this.config.speed,
50
+ size: Math.random() * this.config.particleSize + 1
51
+ });
52
+ }
53
+ }
54
+
55
+ bindEvents() {
56
+ window.addEventListener('resize', () => this.resize());
57
+
58
+ this.canvas.addEventListener('mousemove', (e) => {
59
+ this.mouse.x = e.clientX;
60
+ this.mouse.y = e.clientY;
61
+ });
62
+
63
+ this.canvas.addEventListener('mouseleave', () => {
64
+ this.mouse.x = -1000;
65
+ this.mouse.y = -1000;
66
+ });
67
+ }
68
+
69
+ updateParticles() {
70
+ this.particles.forEach(particle => {
71
+ // Update position
72
+ particle.x += particle.vx;
73
+ particle.y += particle.vy;
74
+
75
+ // Bounce off edges
76
+ if (particle.x < 0 || particle.x > this.canvas.width) {
77
+ particle.vx *= -1;
78
+ }
79
+ if (particle.y < 0 || particle.y > this.canvas.height) {
80
+ particle.vy *= -1;
81
+ }
82
+
83
+ // Keep particles in bounds
84
+ particle.x = Math.max(0, Math.min(this.canvas.width, particle.x));
85
+ particle.y = Math.max(0, Math.min(this.canvas.height, particle.y));
86
+
87
+ // Mouse interaction
88
+ const dx = this.mouse.x - particle.x;
89
+ const dy = this.mouse.y - particle.y;
90
+ const distance = Math.sqrt(dx * dx + dy * dy);
91
+
92
+ if (distance < this.config.mouseRadius) {
93
+ const force = (this.config.mouseRadius - distance) / this.config.mouseRadius;
94
+ particle.x -= dx * force * 0.01;
95
+ particle.y -= dy * force * 0.01;
96
+ }
97
+ });
98
+ }
99
+
100
+ drawParticles() {
101
+ this.particles.forEach(particle => {
102
+ this.ctx.beginPath();
103
+ this.ctx.arc(particle.x, particle.y, particle.size, 0, Math.PI * 2);
104
+ this.ctx.fillStyle = this.config.colors.particle;
105
+ this.ctx.fill();
106
+
107
+ // Add glow effect
108
+ this.ctx.shadowBlur = 10;
109
+ this.ctx.shadowColor = this.config.colors.particle;
110
+ this.ctx.fill();
111
+ this.ctx.shadowBlur = 0;
112
+ });
113
+ }
114
+
115
+ drawConnections() {
116
+ for (let i = 0; i < this.particles.length; i++) {
117
+ for (let j = i + 1; j < this.particles.length; j++) {
118
+ const dx = this.particles[i].x - this.particles[j].x;
119
+ const dy = this.particles[i].y - this.particles[j].y;
120
+ const distance = Math.sqrt(dx * dx + dy * dy);
121
+
122
+ if (distance < this.config.connectionDistance) {
123
+ const opacity = 1 - (distance / this.config.connectionDistance);
124
+ this.ctx.beginPath();
125
+ this.ctx.moveTo(this.particles[i].x, this.particles[i].y);
126
+ this.ctx.lineTo(this.particles[j].x, this.particles[j].y);
127
+ this.ctx.strokeStyle = this.config.colors.connection.replace('0.2', opacity * 0.2);
128
+ this.ctx.lineWidth = 1;
129
+ this.ctx.stroke();
130
+ }
131
+ }
132
+ }
133
+ }
134
+
135
+ drawMouseConnections() {
136
+ this.particles.forEach(particle => {
137
+ const dx = this.mouse.x - particle.x;
138
+ const dy = this.mouse.y - particle.y;
139
+ const distance = Math.sqrt(dx * dx + dy * dy);
140
+
141
+ if (distance < this.config.mouseRadius) {
142
+ const opacity = 1 - (distance / this.config.mouseRadius);
143
+ this.ctx.beginPath();
144
+ this.ctx.moveTo(particle.x, particle.y);
145
+ this.ctx.lineTo(this.mouse.x, this.mouse.y);
146
+ this.ctx.strokeStyle = this.config.colors.mouseConnection.replace('0.4', opacity * 0.4);
147
+ this.ctx.lineWidth = 2;
148
+ this.ctx.stroke();
149
+ }
150
+ });
151
+ }
152
+
153
+ animate() {
154
+ this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
155
+
156
+ this.updateParticles();
157
+ this.drawConnections();
158
+ this.drawParticles();
159
+ this.drawMouseConnections();
160
+
161
+ this.animationId = requestAnimationFrame(() => this.animate());
162
+ }
163
+
164
+ destroy() {
165
+ if (this.animationId) {
166
+ cancelAnimationFrame(this.animationId);
167
+ }
168
+ window.removeEventListener('resize', this.resize);
169
+ }
170
+ }
171
+
172
+ // Initialize particle system when DOM is loaded
173
+ document.addEventListener('DOMContentLoaded', function() {
174
+ // Create canvas element
175
+ const canvas = document.createElement('canvas');
176
+ canvas.id = 'particle-canvas';
177
+ canvas.style.position = 'fixed';
178
+ canvas.style.top = '0';
179
+ canvas.style.left = '0';
180
+ canvas.style.width = '100%';
181
+ canvas.style.height = '100%';
182
+ canvas.style.pointerEvents = 'none';
183
+ canvas.style.zIndex = '1';
184
+ canvas.style.opacity = '0.7';
185
+
186
+ // Insert canvas as first child of body
187
+ document.body.insertBefore(canvas, document.body.firstChild);
188
+
189
+ // Initialize particle system
190
+ const particleSystem = new ParticleSystem(canvas);
191
+
192
+ // Store reference for cleanup
193
+ window.particleSystem = particleSystem;
194
+ });
195
+
196
+ // Cleanup on page unload
197
+ window.addEventListener('beforeunload', function() {
198
+ if (window.particleSystem) {
199
+ window.particleSystem.destroy();
200
+ }
201
+ });