webscout 8.3.1__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.
- webscout/AIutel.py +46 -53
- webscout/Bing_search.py +418 -0
- webscout/Extra/gguf.py +706 -177
- webscout/Provider/AISEARCH/genspark_search.py +7 -7
- webscout/Provider/GeminiProxy.py +140 -0
- webscout/Provider/MCPCore.py +78 -75
- webscout/Provider/OPENAI/BLACKBOXAI.py +1 -4
- webscout/Provider/OPENAI/GeminiProxy.py +328 -0
- webscout/Provider/OPENAI/README.md +2 -0
- webscout/Provider/OPENAI/README_AUTOPROXY.md +238 -0
- webscout/Provider/OPENAI/__init__.py +15 -1
- webscout/Provider/OPENAI/autoproxy.py +332 -39
- webscout/Provider/OPENAI/base.py +15 -5
- webscout/Provider/OPENAI/e2b.py +0 -1
- webscout/Provider/OPENAI/mcpcore.py +109 -70
- webscout/Provider/OPENAI/scirachat.py +59 -51
- webscout/Provider/OPENAI/toolbaz.py +2 -9
- webscout/Provider/OPENAI/xenai.py +514 -0
- webscout/Provider/OPENAI/yep.py +8 -2
- webscout/Provider/TTI/__init__.py +1 -0
- webscout/Provider/TTI/bing.py +231 -0
- webscout/Provider/TTS/speechma.py +45 -39
- webscout/Provider/TogetherAI.py +366 -0
- webscout/Provider/XenAI.py +324 -0
- webscout/Provider/__init__.py +8 -3
- webscout/Provider/deepseek_assistant.py +378 -0
- webscout/auth/__init__.py +44 -0
- webscout/auth/api_key_manager.py +189 -0
- webscout/auth/auth_system.py +100 -0
- webscout/auth/config.py +76 -0
- webscout/auth/database.py +400 -0
- webscout/auth/exceptions.py +67 -0
- webscout/auth/middleware.py +248 -0
- webscout/auth/models.py +130 -0
- webscout/auth/providers.py +257 -0
- webscout/auth/rate_limiter.py +254 -0
- webscout/auth/request_models.py +127 -0
- webscout/auth/request_processing.py +226 -0
- webscout/auth/routes.py +526 -0
- webscout/auth/schemas.py +103 -0
- webscout/auth/server.py +312 -0
- webscout/auth/static/favicon.svg +11 -0
- webscout/auth/swagger_ui.py +203 -0
- webscout/auth/templates/components/authentication.html +237 -0
- webscout/auth/templates/components/base.html +103 -0
- webscout/auth/templates/components/endpoints.html +750 -0
- webscout/auth/templates/components/examples.html +491 -0
- webscout/auth/templates/components/footer.html +75 -0
- webscout/auth/templates/components/header.html +27 -0
- webscout/auth/templates/components/models.html +286 -0
- webscout/auth/templates/components/navigation.html +70 -0
- webscout/auth/templates/static/api.js +455 -0
- webscout/auth/templates/static/icons.js +168 -0
- webscout/auth/templates/static/main.js +784 -0
- webscout/auth/templates/static/particles.js +201 -0
- webscout/auth/templates/static/styles.css +3353 -0
- webscout/auth/templates/static/ui.js +374 -0
- webscout/auth/templates/swagger_ui.html +170 -0
- webscout/client.py +49 -3
- webscout/scout/core/scout.py +104 -26
- webscout/scout/element.py +139 -18
- webscout/swiftcli/core/cli.py +14 -3
- webscout/swiftcli/decorators/output.py +59 -9
- webscout/update_checker.py +31 -49
- webscout/version.py +1 -1
- webscout/webscout_search.py +4 -12
- webscout/webscout_search_async.py +3 -10
- webscout/yep_search.py +2 -11
- {webscout-8.3.1.dist-info → webscout-8.3.2.dist-info}/METADATA +41 -11
- {webscout-8.3.1.dist-info → webscout-8.3.2.dist-info}/RECORD +74 -36
- {webscout-8.3.1.dist-info → webscout-8.3.2.dist-info}/entry_points.txt +1 -1
- webscout/Provider/HF_space/__init__.py +0 -0
- webscout/Provider/HF_space/qwen_qwen2.py +0 -206
- webscout/Provider/OPENAI/api.py +0 -1320
- {webscout-8.3.1.dist-info → webscout-8.3.2.dist-info}/WHEEL +0 -0
- {webscout-8.3.1.dist-info → webscout-8.3.2.dist-info}/licenses/LICENSE.md +0 -0
- {webscout-8.3.1.dist-info → webscout-8.3.2.dist-info}/top_level.txt +0 -0
|
@@ -16,6 +16,8 @@ from lxml.etree import _Element
|
|
|
16
16
|
from lxml.html import HTMLParser as LHTMLParser
|
|
17
17
|
from lxml.html import document_fromstring
|
|
18
18
|
|
|
19
|
+
from webscout.litagent.agent import LitAgent
|
|
20
|
+
|
|
19
21
|
from .exceptions import ConversationLimitException, RatelimitE, TimeoutE, WebscoutE
|
|
20
22
|
from .utils import (
|
|
21
23
|
_expand_proxy_tb_alias,
|
|
@@ -74,16 +76,7 @@ class AsyncWEBS:
|
|
|
74
76
|
self.proxy = proxies.get("http") or proxies.get("https") if isinstance(proxies, dict) else proxies
|
|
75
77
|
|
|
76
78
|
default_headers = {
|
|
77
|
-
|
|
78
|
-
"Accept-Language": "en-US,en;q=0.5",
|
|
79
|
-
"Accept-Encoding": "gzip, deflate, br",
|
|
80
|
-
"DNT": "1",
|
|
81
|
-
"Connection": "keep-alive",
|
|
82
|
-
"Upgrade-Insecure-Requests": "1",
|
|
83
|
-
"Sec-Fetch-Dest": "document",
|
|
84
|
-
"Sec-Fetch-Mode": "navigate",
|
|
85
|
-
"Sec-Fetch-Site": "none",
|
|
86
|
-
"Sec-Fetch-User": "?1",
|
|
79
|
+
**LitAgent().generate_fingerprint(),
|
|
87
80
|
"Referer": "https://duckduckgo.com/",
|
|
88
81
|
}
|
|
89
82
|
|
webscout/yep_search.py
CHANGED
|
@@ -35,20 +35,11 @@ class YepSearch:
|
|
|
35
35
|
timeout=timeout # Set timeout directly in session
|
|
36
36
|
)
|
|
37
37
|
self.session.headers.update({
|
|
38
|
-
|
|
39
|
-
"Accept-Language": "en-US,en;q=0.9,en-IN;q=0.8",
|
|
40
|
-
"DNT": "1",
|
|
38
|
+
**LitAgent().generate_fingerprint(),
|
|
41
39
|
"Origin": "https://yep.com",
|
|
42
40
|
"Referer": "https://yep.com/",
|
|
43
|
-
# Sec-Ch-Ua headers are often handled by impersonate, but keeping them might be safer
|
|
44
|
-
"Sec-Ch-Ua": '"Not(A:Brand";v="99", "Microsoft Edge";v="133", "Chromium";v="133"',
|
|
45
|
-
"Sec-Ch-Ua-Mobile": "?0",
|
|
46
|
-
"Sec-Ch-Ua-Platform": '"Windows"',
|
|
47
|
-
"Sec-Fetch-Dest": "empty",
|
|
48
|
-
"Sec-Fetch-Mode": "cors",
|
|
49
|
-
"Sec-Fetch-Site": "same-site",
|
|
50
|
-
"User-Agent": LitAgent().random() # Keep custom User-Agent or rely on impersonate
|
|
51
41
|
})
|
|
42
|
+
|
|
52
43
|
# Proxies and verify are handled by the Session constructor now
|
|
53
44
|
|
|
54
45
|
def _remove_html_tags(self, text: str) -> str:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: webscout
|
|
3
|
-
Version: 8.3.
|
|
3
|
+
Version: 8.3.2
|
|
4
4
|
Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
|
|
5
5
|
Author-email: OEvortex <helpingai5@gmail.com>
|
|
6
6
|
License: HelpingAI
|
|
@@ -71,6 +71,8 @@ Requires-Dist: uvicorn[standard]; extra == "api"
|
|
|
71
71
|
Requires-Dist: pydantic; extra == "api"
|
|
72
72
|
Requires-Dist: python-multipart; extra == "api"
|
|
73
73
|
Requires-Dist: tiktoken; extra == "api"
|
|
74
|
+
Requires-Dist: motor; extra == "api"
|
|
75
|
+
Requires-Dist: jinja2; extra == "api"
|
|
74
76
|
Dynamic: license-file
|
|
75
77
|
|
|
76
78
|
<div align="center">
|
|
@@ -227,14 +229,14 @@ uv add "webscout[api]"
|
|
|
227
229
|
uv run webscout --help
|
|
228
230
|
|
|
229
231
|
# Run with API dependencies
|
|
230
|
-
uv run --extra api webscout-server
|
|
232
|
+
uv run webscout --extra api webscout-server
|
|
231
233
|
|
|
232
234
|
# Install as a UV tool for global access
|
|
233
235
|
uv tool install webscout
|
|
234
236
|
|
|
235
237
|
# Use UV tool commands
|
|
236
238
|
webscout --help
|
|
237
|
-
webscout-server
|
|
239
|
+
webscout-server
|
|
238
240
|
```
|
|
239
241
|
|
|
240
242
|
### 🔧 Development Installation
|
|
@@ -308,7 +310,7 @@ uv run --extra api webscout-server
|
|
|
308
310
|
```bash
|
|
309
311
|
# Traditional Python module execution
|
|
310
312
|
python -m webscout --help
|
|
311
|
-
python -m webscout
|
|
313
|
+
python -m webscout-server
|
|
312
314
|
```
|
|
313
315
|
|
|
314
316
|
<details open>
|
|
@@ -403,13 +405,19 @@ webscout-server --port 8080
|
|
|
403
405
|
# Start with API key authentication
|
|
404
406
|
webscout-server --api-key "your-secret-key"
|
|
405
407
|
|
|
408
|
+
# Start in no-auth mode using command line flag (no API key required)
|
|
409
|
+
webscout-server --no-auth
|
|
410
|
+
|
|
411
|
+
# Start in no-auth mode using environment variable
|
|
412
|
+
$env:WEBSCOUT_NO_AUTH='true'; webscout-server
|
|
413
|
+
|
|
406
414
|
# Specify a default provider
|
|
407
415
|
webscout-server --default-provider "Claude"
|
|
408
416
|
|
|
409
417
|
# Run in debug mode
|
|
410
418
|
webscout-server --debug
|
|
411
419
|
|
|
412
|
-
# Get help for all options
|
|
420
|
+
# Get help for all options (includes authentication options)
|
|
413
421
|
webscout-server --help
|
|
414
422
|
```
|
|
415
423
|
|
|
@@ -420,17 +428,36 @@ webscout-server --help
|
|
|
420
428
|
uv run --extra api webscout-server
|
|
421
429
|
|
|
422
430
|
# Using Python module
|
|
423
|
-
python -m webscout.
|
|
431
|
+
python -m webscout.auth.server
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
#### Environment Variables
|
|
435
|
+
|
|
436
|
+
Webscout server supports configuration through environment variables:
|
|
424
437
|
|
|
425
|
-
|
|
426
|
-
|
|
438
|
+
```bash
|
|
439
|
+
# Start server in no-auth mode (no API key required)
|
|
440
|
+
$env:WEBSCOUT_NO_AUTH='true'; webscout-server
|
|
441
|
+
|
|
442
|
+
# Disable rate limiting
|
|
443
|
+
$env:WEBSCOUT_NO_RATE_LIMIT='true'; webscout-server
|
|
444
|
+
|
|
445
|
+
# Start with custom port using environment variable
|
|
446
|
+
$env:WEBSCOUT_PORT='7860'; webscout-server
|
|
427
447
|
```
|
|
428
448
|
|
|
449
|
+
For a complete list of supported environment variables and Docker deployment options, see [DOCKER.md](DOCKER.md).
|
|
450
|
+
|
|
451
|
+
|
|
429
452
|
#### From Python Code
|
|
430
453
|
|
|
454
|
+
> **Recommended:**
|
|
455
|
+
> Use `start_server` from `webscout.client` for the simplest programmatic startup.
|
|
456
|
+
> For advanced control (custom host, debug, etc.), use `run_api`.
|
|
457
|
+
|
|
431
458
|
```python
|
|
432
|
-
# Method 1: Using the helper function
|
|
433
|
-
from webscout.client import start_server
|
|
459
|
+
# Method 1: Using the helper function (recommended)
|
|
460
|
+
from webscout.client import start_server
|
|
434
461
|
|
|
435
462
|
# Start with default settings
|
|
436
463
|
start_server()
|
|
@@ -438,7 +465,10 @@ start_server()
|
|
|
438
465
|
# Start with custom settings
|
|
439
466
|
start_server(port=8080, api_key="your-secret-key", default_provider="Claude")
|
|
440
467
|
|
|
441
|
-
#
|
|
468
|
+
# Start in no-auth mode (no API key required)
|
|
469
|
+
start_server(no_auth=True)
|
|
470
|
+
|
|
471
|
+
# Method 2: Advanced usage with run_api
|
|
442
472
|
from webscout.client import run_api
|
|
443
473
|
|
|
444
474
|
run_api(
|
|
@@ -1,28 +1,29 @@
|
|
|
1
1
|
webscout/AIauto.py,sha256=zRQcmNzQCCPOD6ancQlRlSRqEM24rtb-Xlpqg6bt5Pg,10557
|
|
2
2
|
webscout/AIbase.py,sha256=MbtLlwMNrRu1nKJkj-4ZYUL8YVzDzLdboIAA_7yextM,14529
|
|
3
|
-
webscout/AIutel.py,sha256=
|
|
3
|
+
webscout/AIutel.py,sha256=7aUbn_gbIVnv1yRbnkjeWjY6EPVOJ8qVj4QWymwbaV0,30947
|
|
4
4
|
webscout/Bard.py,sha256=VTvnSapEleBnw-O6CM_-4PiijhsLFx_B7gauknV58p4,45280
|
|
5
|
+
webscout/Bing_search.py,sha256=bcw6VFwlOV742yZS5havsi3f9vmrYubAOYdlK9TBmYc,16391
|
|
5
6
|
webscout/DWEBS.py,sha256=OnoKtIkrlNtYlGL_CCPsLet8cj2wKxqquFB8RdBxXfk,18621
|
|
6
7
|
webscout/__init__.py,sha256=AVG0wCun0afiuNnWoF8BJ46nCpT3ax2ecOjVqcUAxJk,1142
|
|
7
8
|
webscout/__main__.py,sha256=qtkMZK5jzQ79ZkFAuZBxMgayuhmw3aRDj1F8Pt06NW4,108
|
|
8
9
|
webscout/cli.py,sha256=_ZeVKRKw6ZX0RScC5BeKNK81gak89qkik168FqB9BH8,20239
|
|
9
|
-
webscout/client.py,sha256=
|
|
10
|
+
webscout/client.py,sha256=SFH-2IKFECDI7hxFXftbb9KTqoKUQGtVf9eslQ1ZnfE,5480
|
|
10
11
|
webscout/conversation.py,sha256=6U6MepqYlYFev-HR2ZSqCKYhoU816E00jmxtYhYUQ2I,16955
|
|
11
12
|
webscout/exceptions.py,sha256=cj0BDCZhB46g_vJ0r2PH0U_T35dqZro-rWu6tvtIZ3c,12833
|
|
12
13
|
webscout/models.py,sha256=C7QY-KDkqFCI698t9pvTHQ27rYadPIvwaYHJ3-AOCJI,6566
|
|
13
14
|
webscout/optimizers.py,sha256=lwIV6c7fKW4rFbZZdhBi7RTJig8KtmziA4979_GByCk,10373
|
|
14
15
|
webscout/prompt_manager.py,sha256=j4MLYx3SpeeTxzsbgUGAHWLtJ1HAF6eaWOzJCAiGND4,10090
|
|
15
16
|
webscout/tempid.py,sha256=lqTTOjVSwDMmC0UoThdyshFyIAxTikVaN613-6K3g_s,4968
|
|
16
|
-
webscout/update_checker.py,sha256=
|
|
17
|
+
webscout/update_checker.py,sha256=vZKTk4HkDED8x5cujKK0Bjq3UjncyESWM7nNm4LR1fg,3825
|
|
17
18
|
webscout/utils.py,sha256=o2hU3qaVPk25sog3e4cyVZO3l8xwaZpYRziZPotEzNo,3075
|
|
18
|
-
webscout/version.py,sha256=
|
|
19
|
-
webscout/webscout_search.py,sha256=
|
|
20
|
-
webscout/webscout_search_async.py,sha256=
|
|
21
|
-
webscout/yep_search.py,sha256=
|
|
19
|
+
webscout/version.py,sha256=RjZSJtbPTmeSVF0Iuri6xhKitGhGcWZfRDcI58hPcv4,46
|
|
20
|
+
webscout/webscout_search.py,sha256=e8n03H11N_6Eaey99SvdD9rYEwMERnurNwwrX8ORGVs,47825
|
|
21
|
+
webscout/webscout_search_async.py,sha256=xjwSPpQSbeemwRfJYZJA8pJ8WqEHj93Nm4ouH_JddLc,27110
|
|
22
|
+
webscout/yep_search.py,sha256=WwdbHtHjgrqc4j9vChf601UB-6ShVcd0iuWem-9qi_8,11730
|
|
22
23
|
webscout/Extra/Act.md,sha256=Mn1AsEOJnVzeNU727o92qwDlGkxfDk9f4ugkI2T2cW4,19261
|
|
23
24
|
webscout/Extra/__init__.py,sha256=KvJRsRBRO-fZp2jSCl6KQnPppi93hriA6O_U1O1s31c,177
|
|
24
25
|
webscout/Extra/gguf.md,sha256=Q6Cc8FPq_vlywTGiHTw7xkkwlPZdDYrVUy1lpKGyUYk,12864
|
|
25
|
-
webscout/Extra/gguf.py,sha256=
|
|
26
|
+
webscout/Extra/gguf.py,sha256=wmS_par39HshZYM3crtyRFhqTsPpFtSvfG-2u1QUHhA,56896
|
|
26
27
|
webscout/Extra/weather.md,sha256=4eV07wV3-hkEnvF-cBRL91N4-QF5qOmaV-1I6TDPBLY,10062
|
|
27
28
|
webscout/Extra/weather.py,sha256=Xfxzt43U5m7qpK3h4pzQ55Zh9JVu5HS6XUeLJccASkE,7841
|
|
28
29
|
webscout/Extra/weather_ascii.py,sha256=k6U0F9w5xXPvYK-Wq3pjUh7W0gGJG4e_YhxeUI65Vpk,2612
|
|
@@ -81,6 +82,7 @@ webscout/Provider/ExaChat.py,sha256=us5sOKwGR7a36Oe24yinXvszLd5IKHMa93QgmeZwV60,
|
|
|
81
82
|
webscout/Provider/Flowith.py,sha256=w5rpUmRkoAL-WqrKMyRrsTTDmsPN2Cc5zyRBy7_48mY,8605
|
|
82
83
|
webscout/Provider/FreeGemini.py,sha256=lpsTlkzk7kcTfTODFKZFayQox9DmOM4Az7zTMV5bla0,11004
|
|
83
84
|
webscout/Provider/Gemini.py,sha256=sM25PD6AxOFmiIab3ASbnrb-mbVHYJJ9Dc6bo1L4PJo,6806
|
|
85
|
+
webscout/Provider/GeminiProxy.py,sha256=7Lo9ffAqoHcSrMnBcnICuQmY0YOi_1F8oamPVfxPm1I,5589
|
|
84
86
|
webscout/Provider/GithubChat.py,sha256=vBPjsLchav-kuond0D2kaIo8_QsrYDPYNwKF-D4yKPs,14662
|
|
85
87
|
webscout/Provider/GizAI.py,sha256=o8liIlSPz0MDTqLLGwtLiX3iSAsEuJfX1Cl8UNGOpfQ,10865
|
|
86
88
|
webscout/Provider/Glider.py,sha256=MbgKflBwSrvsOKW3Ya-ijKc3Hxh_L6LnD6tfUSFKsoQ,9342
|
|
@@ -92,7 +94,7 @@ webscout/Provider/Jadve.py,sha256=oJEdqchuS6a8FquVc26fxM_OJEPzWSMmjwRcHpw_18g,13
|
|
|
92
94
|
webscout/Provider/Koboldai.py,sha256=K_bAuRMYRkHzN1Qjh0hP6N3oWN_2KoqHpucROmoyLUY,15363
|
|
93
95
|
webscout/Provider/LambdaChat.py,sha256=jtlvMBQ2BSA2Cgcf2p3e7TZhOwWyH7wVo9q-WA9Fyco,18881
|
|
94
96
|
webscout/Provider/Llama3.py,sha256=9f-7ha23OdvUthKUqLwBpSBBZzWPmadJPESyDOUKbC0,10770
|
|
95
|
-
webscout/Provider/MCPCore.py,sha256=
|
|
97
|
+
webscout/Provider/MCPCore.py,sha256=EFykzoDvifeLAiW6HJ-dtjPnaBB8EvxTGhPHi_uix8E,13070
|
|
96
98
|
webscout/Provider/Marcus.py,sha256=JDjjpmimsWCgrRqZFPGxuHIZ5M98d2ijFzMie86CZvs,8352
|
|
97
99
|
webscout/Provider/Nemotron.py,sha256=_hCFLNhynRX-rMtKXKRpKzrKKFzyWGlQ8uQC-8v0l6w,7948
|
|
98
100
|
webscout/Provider/Netwrck.py,sha256=Fstf8bK5dnE4fRLKDumbdFsiF0EIW147AEgsbzezM6A,11812
|
|
@@ -106,6 +108,7 @@ webscout/Provider/Reka.py,sha256=dWw4vX91nJhAn-X1SXK72gttRaTqWNGUBFaeRJobTJg,851
|
|
|
106
108
|
webscout/Provider/StandardInput.py,sha256=N9sgXqXxI9DlsIpHji5VTf8ryAKGTR2rCLOB0BuKBBY,14177
|
|
107
109
|
webscout/Provider/TeachAnything.py,sha256=vFPTEJRk-P7PdYZF2-_h6_61P12dBCIx5MWu4elkYyM,9990
|
|
108
110
|
webscout/Provider/TextPollinationsAI.py,sha256=p-N9HkaSGAoVfJi3ME1DXXzh10LoxGsUN01u9wU6Cxk,12826
|
|
111
|
+
webscout/Provider/TogetherAI.py,sha256=-UjR2v1-qthI7DFE1tQYWjM7ind2ZrOPDnq3f-ABgr4,14844
|
|
109
112
|
webscout/Provider/TwoAI.py,sha256=T7EVecu9QnuESmDYTyxikOIJiMsfpPKtx4hp4CZ7tps,19951
|
|
110
113
|
webscout/Provider/TypliAI.py,sha256=lfOyX2mGZBsmqqB4GafAzAhiV0U0C9RJf9I--hTw9Ik,11919
|
|
111
114
|
webscout/Provider/Venice.py,sha256=Ggo2lAp4soViM6Z_LU9d9_cbadcpfrzOZ-3KreTEFxA,11044
|
|
@@ -114,7 +117,8 @@ webscout/Provider/WiseCat.py,sha256=TgsGFi6nSTls1_9yuGY-iITB5y2LobHoi5zvWZ8yWlY,
|
|
|
114
117
|
webscout/Provider/WrDoChat.py,sha256=Idjrg0IEmeRU6V2qm8SGuqkNowSh5iVsC9N3krPP-l4,13902
|
|
115
118
|
webscout/Provider/Writecream.py,sha256=_uNU1EcGpv80Xo47fye40FbQVuIWAUd6m9OUYZ3Khcc,9332
|
|
116
119
|
webscout/Provider/WritingMate.py,sha256=fOZ5Tu1A-PKFpl10ekheEy0h0qclSoO__KkBrci_aiI,12332
|
|
117
|
-
webscout/Provider/
|
|
120
|
+
webscout/Provider/XenAI.py,sha256=GZL9J_1yGc3ft2Uo3eq7jS2cZy0ytIPgQ6eNyEN1MAM,13514
|
|
121
|
+
webscout/Provider/__init__.py,sha256=l7yu0Cl8PKp250N9oojbEhlkpZCgfxQOd0jMfarFKhA,4050
|
|
118
122
|
webscout/Provider/ai4chat.py,sha256=4PvQxPAWlaDgSyo5Dg1W6BVIUDTHq0rFK0H7rcBiCOI,6845
|
|
119
123
|
webscout/Provider/akashgpt.py,sha256=iJke-aCmTT_8RmrJbSAZayhtIimum1h680diJwBxdOI,13045
|
|
120
124
|
webscout/Provider/asksteve.py,sha256=qDRe4X6EmgOkhzRz8AAMYUSQFuO5k_84jwgPWKFkjGY,8985
|
|
@@ -122,6 +126,7 @@ webscout/Provider/cerebras.py,sha256=1A89aUVgMcwKPrSoQw1vHA1gQfsWxYbxV-MZ4EzwvqQ
|
|
|
122
126
|
webscout/Provider/chatglm.py,sha256=CBiRhxe1yznhvyOaQPDf9Qu0SSfFvJ6LhTJCtHxsS0Q,8737
|
|
123
127
|
webscout/Provider/cleeai.py,sha256=lgIBs5JpNaY-gfwUBorZdSeA_Q7tawfTvkWWTg7EfuI,7981
|
|
124
128
|
webscout/Provider/copilot.py,sha256=MhDpo1ZHs-Uf-CEIYDB6J3t2rPeI9pP6QDCGffsBoIg,18844
|
|
129
|
+
webscout/Provider/deepseek_assistant.py,sha256=KdQ_Ldg_7jUpSIWmxgz6tXS-uOmE5rPKmJhjbeE6fUs,14557
|
|
125
130
|
webscout/Provider/elmo.py,sha256=PiiRLwkyHsPmAY8uydd_TuWe2qVXbs_wfW5u4Ytbqp8,12875
|
|
126
131
|
webscout/Provider/freeaichat.py,sha256=yKTGYYrv_v3xoOcsXc83F0qTBv5rjFKPuZQLX-vRhIQ,9963
|
|
127
132
|
webscout/Provider/geminiapi.py,sha256=-_QbDBF_IiYyOJ0_uAIcE-gfzIs8H86nA5VWX52SRoY,8505
|
|
@@ -155,36 +160,35 @@ webscout/Provider/AISEARCH/Perplexity.py,sha256=AcKqelQfjR5TULqCSA7s6U5-T3zv4HXv
|
|
|
155
160
|
webscout/Provider/AISEARCH/README.md,sha256=3WlTa-icOdDyyJpHsgmL0mfJ2BV_ViIC-hlMlRwbZYI,9693
|
|
156
161
|
webscout/Provider/AISEARCH/__init__.py,sha256=wifrJ_94dA8eoD4fZplo4fPU2CvaJdjvmCPgPTTN_ls,261
|
|
157
162
|
webscout/Provider/AISEARCH/felo_search.py,sha256=UPr6pOAoVIsEfqf_w9c10qv7HWtqHeXia0WMJEb8VMY,8408
|
|
158
|
-
webscout/Provider/AISEARCH/genspark_search.py,sha256=
|
|
163
|
+
webscout/Provider/AISEARCH/genspark_search.py,sha256=dsTaopBuuiK09uo_Dw5yQQTkB3jL4UHdy60nPZmryoA,16670
|
|
159
164
|
webscout/Provider/AISEARCH/hika_search.py,sha256=puGSf65CCVCj9w-C1lh2wPgNFlWr9TCNVjxO4WSj3O4,6757
|
|
160
165
|
webscout/Provider/AISEARCH/iask_search.py,sha256=48f5z7hV_y_hAYH4J3Ywsj-sPG_7UHjsSbs90AUDKZA,17629
|
|
161
166
|
webscout/Provider/AISEARCH/monica_search.py,sha256=5-6XHPCXw7eNyJt5WHosqegCAN39aGZauz4AEmuCdP0,8614
|
|
162
167
|
webscout/Provider/AISEARCH/scira_search.py,sha256=OoozAGcyB4--XkohCltgdgBK1aNw4lEVTWQJI3D_0Z4,11371
|
|
163
168
|
webscout/Provider/AISEARCH/webpilotai_search.py,sha256=eBjfuXB_HNkTL5Z_--JyrwH8e4cJ52hcwrB-rV0_KQU,11511
|
|
164
|
-
webscout/Provider/
|
|
165
|
-
webscout/Provider/HF_space/qwen_qwen2.py,sha256=IulE7bAMSbR530pFTanWzMFb4UJ9qF_NKoGiHkXxcjc,7612
|
|
166
|
-
webscout/Provider/OPENAI/BLACKBOXAI.py,sha256=BVP9jwAWAq2Y76DqKQ0dgYfNA1fLg5V3FEGIFylPe3E,48145
|
|
169
|
+
webscout/Provider/OPENAI/BLACKBOXAI.py,sha256=NKH_iztuizDvT4aLugSgApZJdMLs26RFf5LiSafpkD8,48010
|
|
167
170
|
webscout/Provider/OPENAI/Cloudflare.py,sha256=jGvB6iInA2U1hjZ5TVy_Pt3U47u0zEgyZireNYQVHIY,14765
|
|
168
171
|
webscout/Provider/OPENAI/FalconH1.py,sha256=ISWDHCuR7hKZbmWesxG83n5ihq1v3a8HTWs_0gktse0,22454
|
|
169
172
|
webscout/Provider/OPENAI/FreeGemini.py,sha256=8QNiVs4s9eh0g-lKSL4Y3J35C3P47GIe5MhuEmsI6Vw,11227
|
|
173
|
+
webscout/Provider/OPENAI/GeminiProxy.py,sha256=9_6VHFylM3-ct0m5XDvxfZ1tmd70RnyZl5HT-qv1g4E,11266
|
|
170
174
|
webscout/Provider/OPENAI/NEMOTRON.py,sha256=ZwBgNe3b466zkJ7JYtzLvobQte-Gppk1_YOBGGk6Mc8,9731
|
|
171
175
|
webscout/Provider/OPENAI/PI.py,sha256=MHkX7wsXJIdItwOfMMGEo8OzlZXIaolopBda7b_SpfQ,15185
|
|
172
176
|
webscout/Provider/OPENAI/Qwen3.py,sha256=91wKmXhM8gXyP6pat7fspr1XW0clN91Spx_Cq8WBL7o,16073
|
|
173
|
-
webscout/Provider/OPENAI/README.md,sha256=
|
|
177
|
+
webscout/Provider/OPENAI/README.md,sha256=Euuu_O5OMn52i6CPLWJLht_11LoFH2V7ygHun40e72o,25109
|
|
178
|
+
webscout/Provider/OPENAI/README_AUTOPROXY.md,sha256=EqZ8MJOg8LPdH5wzNHvvu40bUNYwqtozXaT7BL-NbEo,6244
|
|
174
179
|
webscout/Provider/OPENAI/TogetherAI.py,sha256=i4XhBnYiS9t05qjUJMks8auMfnXAXmk1DrCVMsVaubM,14507
|
|
175
180
|
webscout/Provider/OPENAI/TwoAI.py,sha256=seRAKgp10vg5ilacJ6f5kfXytVshM1Bx4b1VJvVNk34,14590
|
|
176
|
-
webscout/Provider/OPENAI/__init__.py,sha256=
|
|
181
|
+
webscout/Provider/OPENAI/__init__.py,sha256=wTeN_8MbB1upR0C4P6laA4asqOEM5OyofPT0ukDB-do,1590
|
|
177
182
|
webscout/Provider/OPENAI/ai4chat.py,sha256=I0o7ZnGzG_2-PZfDDEbTMPh5OCx-4LfqfNcUFFdZAGY,11273
|
|
178
|
-
webscout/Provider/OPENAI/
|
|
179
|
-
webscout/Provider/OPENAI/
|
|
180
|
-
webscout/Provider/OPENAI/base.py,sha256=ZJv7l4ZcbDshes6cslhkiyrMdIbG8yiCxrIUv9jHBlg,13456
|
|
183
|
+
webscout/Provider/OPENAI/autoproxy.py,sha256=cuV_BkfN7lSRrNBceNaHi0zD_-ptdmrSY129kTPo_To,9910
|
|
184
|
+
webscout/Provider/OPENAI/base.py,sha256=RFWLMYVCpg1XtHvVAFrm2by0ZQAf7CMNXZ0vDlmNmE4,13820
|
|
181
185
|
webscout/Provider/OPENAI/c4ai.py,sha256=f0rzU1a5B3NJDNfOjvFoyTlDdmwuwL_3NfFr2uKqkxY,15636
|
|
182
186
|
webscout/Provider/OPENAI/chatgpt.py,sha256=z2R7GmsI-xVSrzVjnwmSXqm-SBuZAt9UE0DNvYXlPlc,20787
|
|
183
187
|
webscout/Provider/OPENAI/chatgptclone.py,sha256=XHrp4lw9AD3wr9MW2Aar9H-6Aw8l-TgmCLXM9OiH8fE,20423
|
|
184
188
|
webscout/Provider/OPENAI/chatsandbox.py,sha256=nmFQdZaj6puw28Hux57f-E8UYqNQnaMnQBOdhnd-ZQY,6999
|
|
185
189
|
webscout/Provider/OPENAI/copilot.py,sha256=6I6BsRTRfYehZxraTf5r0flWUl3-QBwLMVFuc6XWe-Y,9395
|
|
186
190
|
webscout/Provider/OPENAI/deepinfra.py,sha256=_P0ugEOVF1FffMXsa_SIQesXciqpOe3MMziK9jF3cM4,14684
|
|
187
|
-
webscout/Provider/OPENAI/e2b.py,sha256=
|
|
191
|
+
webscout/Provider/OPENAI/e2b.py,sha256=sgLJ5FF-thlY8SYW0pqzFfQltiQfH6QwZqELydtUPFo,71438
|
|
188
192
|
webscout/Provider/OPENAI/exaai.py,sha256=D7i2zpxQhjo_LRnO0nzAU651aOWgXM_9_AQjcRX2IY0,15066
|
|
189
193
|
webscout/Provider/OPENAI/exachat.py,sha256=z95aqrunxVNlF_y_REGz_hhxirQP18DrBrGYlabiMlA,15632
|
|
190
194
|
webscout/Provider/OPENAI/flowith.py,sha256=x9pZBfD_RLI1WhSmM8DitkGgcWSbbXzaC18nQUwBh9M,6481
|
|
@@ -193,17 +197,17 @@ webscout/Provider/OPENAI/glider.py,sha256=DpVOvgZZQXCuaHJPKGqrvis4EkVlXxX5s207nD
|
|
|
193
197
|
webscout/Provider/OPENAI/groq.py,sha256=if3RBZmFwqSKtYPwlVzK_YGGGlFv4dRxw2obGs8MvRE,14564
|
|
194
198
|
webscout/Provider/OPENAI/heckai.py,sha256=br0Zj_rvOCL1w_N3SVltiVlQQQhlCwAb-WOhaFaEwh4,11709
|
|
195
199
|
webscout/Provider/OPENAI/llmchatco.py,sha256=CUcFgZuuV4njk9HEocnCGnLg7zcTB1k1awRJSHX5NFA,15371
|
|
196
|
-
webscout/Provider/OPENAI/mcpcore.py,sha256=
|
|
200
|
+
webscout/Provider/OPENAI/mcpcore.py,sha256=UsIAKXiO9F3p6m5yptjslAo60NJa5AmtcaQOqzDD3EU,18939
|
|
197
201
|
webscout/Provider/OPENAI/multichat.py,sha256=r65SxO4GxolYCs5Phoys_1xZtIEqolyW-I539Zj_mXM,13989
|
|
198
202
|
webscout/Provider/OPENAI/netwrck.py,sha256=vWeh8T3VdC4EdD6Rd-9PrdPOFQnl4RRqlBuXlSenvfE,13287
|
|
199
203
|
webscout/Provider/OPENAI/oivscode.py,sha256=Gjw2SETSIkIGREk5BfdEkkQL_RjnI8jFcwxLmUvlzOE,11875
|
|
200
204
|
webscout/Provider/OPENAI/opkfc.py,sha256=2YdpcNxMn2p3w9Z7mQ7g0dFJ17zzAgvnIM4UwCgynpM,21877
|
|
201
205
|
webscout/Provider/OPENAI/pydantic_imports.py,sha256=Sg4zmm4xHWGZSsVwtUG9eS24JQLRECNjZLmrwce8ADc,3362
|
|
202
|
-
webscout/Provider/OPENAI/scirachat.py,sha256=
|
|
206
|
+
webscout/Provider/OPENAI/scirachat.py,sha256=T9C04sjdqV3wgjcqufuhxXoIicMG2bOu00FJ88Uvvt0,19173
|
|
203
207
|
webscout/Provider/OPENAI/sonus.py,sha256=nRUJkK0T08Ao1WLF5ySmCpfH4x9C8wUXjezW4mygqJo,11159
|
|
204
208
|
webscout/Provider/OPENAI/standardinput.py,sha256=xBHWMRZcPwDJZaQvszaZmKwFzV3wCpwnoynSvsIqhTQ,19547
|
|
205
209
|
webscout/Provider/OPENAI/textpollinations.py,sha256=6KHxk41zvqPqhDNPSASHO-_QzpKPCM6KL4tpchgW3yw,13134
|
|
206
|
-
webscout/Provider/OPENAI/toolbaz.py,sha256=
|
|
210
|
+
webscout/Provider/OPENAI/toolbaz.py,sha256=jshJ8CY8K2pT3Lzl1dsoprjmiGlp5VxGU3hnHr4RSDk,14248
|
|
207
211
|
webscout/Provider/OPENAI/typefully.py,sha256=yuOf1Idb6LCkK_YT4c9ABnjTuwRzSzffX-OAumSqrJQ,13004
|
|
208
212
|
webscout/Provider/OPENAI/typegpt.py,sha256=AmujoLfxQnBt-2C_aWOnF6ra-xn5WKCASKTRuVjTv8k,14147
|
|
209
213
|
webscout/Provider/OPENAI/uncovrAI.py,sha256=3a6h1ixmLZGglRuPVV1rhoDRgNkxTCVTuklegJ-6JY4,18333
|
|
@@ -212,14 +216,16 @@ webscout/Provider/OPENAI/venice.py,sha256=OLexvhEDEBe0r9mHiclwzDovU8OStQqouUUyeJ
|
|
|
212
216
|
webscout/Provider/OPENAI/wisecat.py,sha256=fvD_Lz1wIpHiWTG2zdA5lr53vR3biHtMJ-1WZbkNnJQ,14071
|
|
213
217
|
webscout/Provider/OPENAI/writecream.py,sha256=kiOJ-9iT5RNR1LDyZ_XoQCeVXZuPPnO_CdvEuZdk1s4,6529
|
|
214
218
|
webscout/Provider/OPENAI/x0gpt.py,sha256=hPxmALMfGfOfkVBvMLYtImmlWXpHOW2adSbmvfKppx8,13043
|
|
215
|
-
webscout/Provider/OPENAI/
|
|
219
|
+
webscout/Provider/OPENAI/xenai.py,sha256=wPXB9uam_igQ9iOjXBARmYBzD4hzRKy4vxGh8BosPEc,22531
|
|
220
|
+
webscout/Provider/OPENAI/yep.py,sha256=ksuKhFSbVw6_50pdg5Uf2qKjV-ND1WRkonLZuG2oBrk,16261
|
|
216
221
|
webscout/Provider/STT/__init__.py,sha256=BWYNyzX5tgt68dL_WO6fQIZ8H6NpRJz-JQcEPXCy7Uc,98
|
|
217
222
|
webscout/Provider/STT/base.py,sha256=Xue1mo6Lj00rRxU1lRsv_zQ7_igU7hLON7lHkw_Li28,8404
|
|
218
223
|
webscout/Provider/STT/elevenlabs.py,sha256=lZs3HwGrnJ3jY81WeV1H7yJTVulitTE1lI2Lhkx42HA,9168
|
|
219
224
|
webscout/Provider/TTI/README.md,sha256=v76lwYPMMKKsFyE6IAWISlQ06ergXFIUZrKeKk-RXa0,3040
|
|
220
|
-
webscout/Provider/TTI/__init__.py,sha256=
|
|
225
|
+
webscout/Provider/TTI/__init__.py,sha256=4dwSFRz0LbmD1s6GZZkJAXkdDohIwQXVySWvSIhxT9M,251
|
|
221
226
|
webscout/Provider/TTI/aiarta.py,sha256=0EA7HDOOl_IB-hLY8ythuxmJF0DSEEUSghoMfHV53hs,15962
|
|
222
227
|
webscout/Provider/TTI/base.py,sha256=DCf8UfTM64D93DToY9Dc8KA-VgNIDFWVM-_nHp-wN5Q,5224
|
|
228
|
+
webscout/Provider/TTI/bing.py,sha256=OvB76EYAjNU3hsDZ76YqI-LpinCzFO4mWk3GXMIjG1A,10551
|
|
223
229
|
webscout/Provider/TTI/fastflux.py,sha256=-Qqg-BTCb9JBI86abttQ55UtWbIud-lPi6Z6U7aHlN0,9674
|
|
224
230
|
webscout/Provider/TTI/gpt1image.py,sha256=4xE5MFfjuKMc3lO3QCsEYvgidyoDhmvF7J1_sBqzmoU,4980
|
|
225
231
|
webscout/Provider/TTI/imagen.py,sha256=1qoyUeoqrzbQ660P5TFIJQVuZnwZQL65tCNEIXjD7CY,6684
|
|
@@ -239,7 +245,7 @@ webscout/Provider/TTS/gesserit.py,sha256=v4ybdEMbux8J21Y7PSp3_axL3W2Naru5P_pmwP1
|
|
|
239
245
|
webscout/Provider/TTS/murfai.py,sha256=9WA7_4n1p4OXbZY3WxwxDRTvsWN2ohDxKGqgYrZol84,4910
|
|
240
246
|
webscout/Provider/TTS/openai_fm.py,sha256=WAbkBdGd0q_9QgXBm5hllSCr8TEmXEY2voaDjjbUfxI,5210
|
|
241
247
|
webscout/Provider/TTS/parler.py,sha256=-JbH01Kq_sLVahu6PoJwq6c7JY_JtQOi8YmU1cLFZqU,4144
|
|
242
|
-
webscout/Provider/TTS/speechma.py,sha256=
|
|
248
|
+
webscout/Provider/TTS/speechma.py,sha256=KOB56mmXNRG4_Dw1pjQnA25L4o_lvG-5Rh0anLp0Sf8,28605
|
|
243
249
|
webscout/Provider/TTS/sthir.py,sha256=vEYmu4faOIeTcSfdSedUYVD3Vp3zu8-voq-g5aaMAog,3704
|
|
244
250
|
webscout/Provider/TTS/streamElements.py,sha256=RowMh1VktGD9W_lGBqVJon_Bq8Ee2PRZNeUCDtDN8FU,10238
|
|
245
251
|
webscout/Provider/TTS/utils.py,sha256=pO3GsBmIZ7CHywjOGyrdpHdvch40QMvfAfvAeRBp-O0,10886
|
|
@@ -250,6 +256,38 @@ webscout/Provider/UNFINISHED/fetch_together_models.py,sha256=IkGppAIbwIfvJRwzpyi
|
|
|
250
256
|
webscout/Provider/UNFINISHED/liner_api_request.py,sha256=yTVXbqZMTyo5oOPX_FO95fO56TT5hkbt8r4PK7ahFqw,10558
|
|
251
257
|
webscout/Provider/UNFINISHED/puterjs.py,sha256=Hhtz9PS8wSuG2BDUbPp2qLS5AQSAZzQ2viqC_-F-9yM,28225
|
|
252
258
|
webscout/Provider/UNFINISHED/test_lmarena.py,sha256=-BfHfe14HbozIkYUNl2RqI5Ih2VdSXv6DInBlUfvMZk,3853
|
|
259
|
+
webscout/auth/__init__.py,sha256=vkti-hxpT_1iLcXAELbnLezy7TT3YI60QRt-fJjHyNs,1089
|
|
260
|
+
webscout/auth/api_key_manager.py,sha256=a3F4d2r7h3GqV-wxNj2vNLkU9o0-ld-XU9udt_CQL0g,6954
|
|
261
|
+
webscout/auth/auth_system.py,sha256=LPMtrqpi7EQhqdbWQ5RKu4nIhsT4CShvIEaF9Zo-khc,3171
|
|
262
|
+
webscout/auth/config.py,sha256=PLg6RS59DKdP0BMU71LbnikBuR9eZBouvzUsRQH3Ff4,2911
|
|
263
|
+
webscout/auth/database.py,sha256=OPZTkXtC75cwZkflHc2gheOANqDXrbUdKjfvNHNpWuQ,15455
|
|
264
|
+
webscout/auth/exceptions.py,sha256=FGqNLQmjv2i3Jk_P3csJzT4qkmVdBMdH7vFkM37Xa3Y,2048
|
|
265
|
+
webscout/auth/middleware.py,sha256=zSQBIt0LacbeyNjwRIfnO-tdE7-p0w77UkPd7aUTri0,9863
|
|
266
|
+
webscout/auth/models.py,sha256=zlHiAkOoXu5LdpOwVxsYmHXrxIu5DQb0Xli86800vaE,5018
|
|
267
|
+
webscout/auth/providers.py,sha256=1GMnqzSJ3J2EchMXdCvxVjxULlUCcxARcdjxKSpgi3I,10636
|
|
268
|
+
webscout/auth/rate_limiter.py,sha256=8l1CpUY5YkY8SPHvZxL2SejAkO93uNklwQeSbjRxU5A,9925
|
|
269
|
+
webscout/auth/request_models.py,sha256=hgo0AZ5CknEWCmZ4KBMs8T0xjmtlecbk645yU622Ujs,5804
|
|
270
|
+
webscout/auth/request_processing.py,sha256=1fs-sfiNAR04B5Rj4ui5EEjgPsBCXMqf73li6mQpDEU,10569
|
|
271
|
+
webscout/auth/routes.py,sha256=XCfRlOrz9qWFalVw0Qwb8jZVvPRAAUZOII7_uENWgSQ,24732
|
|
272
|
+
webscout/auth/schemas.py,sha256=fu3-V9F0n5AZ65A-fGGiBiuQcwk1Ec3urO7N30Nv90o,4577
|
|
273
|
+
webscout/auth/server.py,sha256=8ookrUYm7LEJZ-t4WmWfQ_qR-Si-VN9YeLlVaC50Cbk,12145
|
|
274
|
+
webscout/auth/swagger_ui.py,sha256=TQUt0y0A-TUrBfOH0RCrRCkbq-7fDMlfaeaij-fkRxA,8659
|
|
275
|
+
webscout/auth/static/favicon.svg,sha256=d1vxz4TLRKt2oV9W3gaoQuw1ydKg-Wk3mgQSK0uk8_w,548
|
|
276
|
+
webscout/auth/templates/swagger_ui.html,sha256=2_8rKou9WfqbeeWqfCFQLo9DpNpkpbR-E8qhdIkBQxg,6713
|
|
277
|
+
webscout/auth/templates/components/authentication.html,sha256=UXx2ixnsxdgkeWOoPT6ozYNNxw3lgNqcuqWozS8v-74,11495
|
|
278
|
+
webscout/auth/templates/components/base.html,sha256=R7I7v4s9Vuvl3qg-Peq6lVmU8mErc_uwQZvuycBby7c,4086
|
|
279
|
+
webscout/auth/templates/components/endpoints.html,sha256=631YiwacqNWZSnADBPcMzZD5SzTIdGa72Xap2Ak6twc,36921
|
|
280
|
+
webscout/auth/templates/components/examples.html,sha256=Lu60kvAknIytLcyLxihiTt1ottl_otTpv0Jnr3jA85A,16113
|
|
281
|
+
webscout/auth/templates/components/footer.html,sha256=l7XlPkhgQsCeaP_LkfuZ8C20w2ew28Xc_Yhc5NtM3Hc,3951
|
|
282
|
+
webscout/auth/templates/components/header.html,sha256=sbpcieP4l9yJR8DvxgKdIlIiRN9OSkBjfKkTv1IgN1w,1293
|
|
283
|
+
webscout/auth/templates/components/models.html,sha256=nym-1NzJv0LPh23vO2H-0M730y3D4d9tfB-ptt3eFVE,12311
|
|
284
|
+
webscout/auth/templates/components/navigation.html,sha256=wZOqiu-udzFntp_bs1EvbHD7hXwzf6A1fXXINYio-ho,2299
|
|
285
|
+
webscout/auth/templates/static/api.js,sha256=ds4LXqMnMyZkJOA2PdQbwtPhuabnlrUB5FokEk9fTK8,15738
|
|
286
|
+
webscout/auth/templates/static/icons.js,sha256=JFLe3fMNf7VD0GgXkJpud-LLpXZDso_sB0A1C0hB6to,7907
|
|
287
|
+
webscout/auth/templates/static/main.js,sha256=zRK6KuzZ5a5ZUu0O29mv9CBYbFzJUL25z5D75XmZSBY,29770
|
|
288
|
+
webscout/auth/templates/static/particles.js,sha256=xxcAEXq-D9jii7qMkTCAAr_mx1BHJfI6RekNKo6yZ_M,6748
|
|
289
|
+
webscout/auth/templates/static/styles.css,sha256=34rk8MiJCH4wxjP8Y44iFlbkT4hpU2B3ZhgvJ1nrUxI,79258
|
|
290
|
+
webscout/auth/templates/static/ui.js,sha256=h13Bl0Hm6AzEJpygUJNLCdWi5_ggIrqU5spidI5Wbls,13461
|
|
253
291
|
webscout/litagent/Readme.md,sha256=UKBFkbJV8KXitJ6fievY9iUvZknS-it35xUu8A3hIO8,7806
|
|
254
292
|
webscout/litagent/__init__.py,sha256=2HydGSdDVBZ7SRNgGzXX-TJiuol1sxzNJBw7wVAFueo,882
|
|
255
293
|
webscout/litagent/agent.py,sha256=KSNLzfhM0XOoE_CuzsOPGf8Gg1pXoNcEnGwSes0vM4k,20548
|
|
@@ -257,11 +295,11 @@ webscout/litagent/constants.py,sha256=3_3tWXhmyZ2dFIO8f0YWL4CRkoFoL18h0_jNttTN7m
|
|
|
257
295
|
webscout/litprinter/__init__.py,sha256=dEsi76uca5Art7tOc3ps240PPrWEVOdTLgR2pim1u9I,2510
|
|
258
296
|
webscout/scout/README.md,sha256=vMMB_XT1F63YfZHpjisgfsuHE3uyT92EAiACCkjRxpE,12487
|
|
259
297
|
webscout/scout/__init__.py,sha256=1dy8mhj4d-X_RDnb3Ip2LKC-2fqgP5zRsHkhdQjAGzE,333
|
|
260
|
-
webscout/scout/element.py,sha256=
|
|
298
|
+
webscout/scout/element.py,sha256=wLqfBhE2aQjvFEeTK_Qiy3ci-jR9rRrCskqgEo4gzUE,20068
|
|
261
299
|
webscout/scout/utils.py,sha256=flBUjqjUZbzMDT8PJYMPxqXFpm1NlpIJHdhFC2ApnZ0,1006
|
|
262
300
|
webscout/scout/core/__init__.py,sha256=ncF9MkM3iO1B2Ew_nOwzLQeeJ1xkCdoJ77CCZADD974,296
|
|
263
301
|
webscout/scout/core/crawler.py,sha256=YPGUxHymAry_-WW9HM1SoYXjCYkUOvfGJNGpUsnTjPM,7802
|
|
264
|
-
webscout/scout/core/scout.py,sha256=
|
|
302
|
+
webscout/scout/core/scout.py,sha256=zbpm9H352HHItsQMrgzBWFILvDbAAjbF40EPt8XRBEE,23484
|
|
265
303
|
webscout/scout/core/search_result.py,sha256=I5pmOhczAqY2wPgwx9lrZoeD4eHLn2VHlFCicaLXORI,2957
|
|
266
304
|
webscout/scout/core/text_analyzer.py,sha256=gm30VZAnAH5DPgt6OhYd4bOriK-sSwgtEBqrx4NWm6o,1846
|
|
267
305
|
webscout/scout/core/text_utils.py,sha256=vo5dVgtcMARWfHdH6NC5gAArBo4HYpqFsHKZYfkE7Jk,10813
|
|
@@ -274,13 +312,13 @@ webscout/swiftcli/Readme.md,sha256=KinBRfIqSBhxkKZOqlxxImiB4WGYsB0P1S1qspacQ4E,7
|
|
|
274
312
|
webscout/swiftcli/__init__.py,sha256=FAC7D0Yu4KN2WGSpNSIVgGSJ9DlAVzqFLjbyUpxCwmc,1864
|
|
275
313
|
webscout/swiftcli/exceptions.py,sha256=yd50TpIjxjL4pzgnEIJUThh6F6brI-jmajjuxqgH9EE,529
|
|
276
314
|
webscout/swiftcli/core/__init__.py,sha256=IZfEWpDaV7_Lo5T0_ryp4ZRrH6egXrCJgdO3g1hGx5k,161
|
|
277
|
-
webscout/swiftcli/core/cli.py,sha256=
|
|
315
|
+
webscout/swiftcli/core/cli.py,sha256=E9OS3RmG90Nc59nHTnnw2XvZDNnYhqo7qgVhzfrm1Tk,10518
|
|
278
316
|
webscout/swiftcli/core/context.py,sha256=QTPkxk1HOZ128OFYC7W99ey1GoNi3n4YqjkqCjBjjiY,3043
|
|
279
317
|
webscout/swiftcli/core/group.py,sha256=moOcP7ec0u80cxpw1bKW9eBti4sgwjJVmGLiU1OwKz0,7605
|
|
280
318
|
webscout/swiftcli/decorators/__init__.py,sha256=YHsLyXnh4Rvn_hwg28y9lkTq2Hh4QVx4ohHfY3r-Wbw,648
|
|
281
319
|
webscout/swiftcli/decorators/command.py,sha256=W-LFpXVOB2xbVg8f36phFxCoQFtQ7cwjqeaJ60OsVk8,6291
|
|
282
320
|
webscout/swiftcli/decorators/options.py,sha256=6K6Ea8EoP98sDO-ia7Kx4GoK5OmRkFfsMPFIJxveByY,6608
|
|
283
|
-
webscout/swiftcli/decorators/output.py,sha256=
|
|
321
|
+
webscout/swiftcli/decorators/output.py,sha256=irVblWEZLq_-SqxcPBNbnPt_8Uev1QjT9FRjTJvcA98,9300
|
|
284
322
|
webscout/swiftcli/plugins/__init__.py,sha256=1lKYyhzaZuOEwFiA4SjV8tnaxD2MuegkeR0LV0xKGmI,153
|
|
285
323
|
webscout/swiftcli/plugins/base.py,sha256=mnyEfMD_Cqa_nWuHWZZ9F5YEZgSZK3yiCCRbl93c5Eg,3754
|
|
286
324
|
webscout/swiftcli/plugins/manager.py,sha256=XtWnPA3pjQetCboAJqGE6M-hdZ12P3dKlawNtkOKYcw,8977
|
|
@@ -292,9 +330,9 @@ webscout/zeroart/__init__.py,sha256=3reMOf41PFtYVhq2wjFpJbIIHWRcy63efeUpolWm1P0,
|
|
|
292
330
|
webscout/zeroart/base.py,sha256=nkf3WAE3YxKIpOFJ4Xf01T7dyWlbi98F1mIYo6vDux8,2365
|
|
293
331
|
webscout/zeroart/effects.py,sha256=DOMPCNk-IwhnUrXsYSx5oSWeYQ6KN7T_jZOYdEofyMg,3345
|
|
294
332
|
webscout/zeroart/fonts.py,sha256=ZiyQqA0BFN2IH5Ldijqe93rTiROmqPgxpeDtUNmmeRw,38812
|
|
295
|
-
webscout-8.3.
|
|
296
|
-
webscout-8.3.
|
|
297
|
-
webscout-8.3.
|
|
298
|
-
webscout-8.3.
|
|
299
|
-
webscout-8.3.
|
|
300
|
-
webscout-8.3.
|
|
333
|
+
webscout-8.3.2.dist-info/licenses/LICENSE.md,sha256=hyfFlVn7pWcrvuvs-piB8k4J8DlXdOsYje9RyPxc6Ik,7543
|
|
334
|
+
webscout-8.3.2.dist-info/METADATA,sha256=gG1bT7ToPX7-4l2JoSsDT2uldu7613AjdDO8BGOvGw4,34966
|
|
335
|
+
webscout-8.3.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
336
|
+
webscout-8.3.2.dist-info/entry_points.txt,sha256=WooZuMBei-kQl5qByoRMkc2cHsaDL1Jd2_tSYsNiUGg,116
|
|
337
|
+
webscout-8.3.2.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
|
|
338
|
+
webscout-8.3.2.dist-info/RECORD,,
|
|
File without changes
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
from dataclasses import dataclass
|
|
2
|
-
from enum import Enum
|
|
3
|
-
import requests
|
|
4
|
-
import json
|
|
5
|
-
import re
|
|
6
|
-
import uuid
|
|
7
|
-
from typing import Union, List, Dict, Generator, Optional, Any, TypedDict, Final
|
|
8
|
-
|
|
9
|
-
# Type definitions
|
|
10
|
-
class Role(Enum):
|
|
11
|
-
SYSTEM = "system"
|
|
12
|
-
USER = "user"
|
|
13
|
-
ASSISTANT = "assistant"
|
|
14
|
-
|
|
15
|
-
class Message(TypedDict):
|
|
16
|
-
role: str
|
|
17
|
-
content: str
|
|
18
|
-
|
|
19
|
-
class APIResponse(TypedDict):
|
|
20
|
-
event_id: str
|
|
21
|
-
fn_index: int
|
|
22
|
-
data: List[Any]
|
|
23
|
-
|
|
24
|
-
class StreamData(TypedDict):
|
|
25
|
-
msg: str
|
|
26
|
-
output: Dict[str, Any]
|
|
27
|
-
|
|
28
|
-
@dataclass
|
|
29
|
-
class APIConfig:
|
|
30
|
-
url: Final[str] = "https://qwen-qwen2-72b-instruct.hf.space"
|
|
31
|
-
api_endpoint: Final[str] = "https://qwen-qwen2-72b-instruct.hf.space/queue/join?"
|
|
32
|
-
|
|
33
|
-
@dataclass
|
|
34
|
-
class RequestHeaders:
|
|
35
|
-
join: Dict[str, str]
|
|
36
|
-
data: Dict[str, str]
|
|
37
|
-
|
|
38
|
-
@classmethod
|
|
39
|
-
def create_default(cls, base_url: str) -> 'RequestHeaders':
|
|
40
|
-
common_headers = {
|
|
41
|
-
'accept-language': 'en-US,en;q=0.9',
|
|
42
|
-
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36'
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
return cls(
|
|
46
|
-
join={
|
|
47
|
-
**common_headers,
|
|
48
|
-
'accept': '*/*',
|
|
49
|
-
'content-type': 'application/json',
|
|
50
|
-
'origin': base_url,
|
|
51
|
-
'referer': f'{base_url}/',
|
|
52
|
-
},
|
|
53
|
-
data={
|
|
54
|
-
**common_headers,
|
|
55
|
-
'accept': 'text/event-stream',
|
|
56
|
-
'referer': f'{base_url}/',
|
|
57
|
-
}
|
|
58
|
-
)
|
|
59
|
-
|
|
60
|
-
class QwenAPI:
|
|
61
|
-
def __init__(self, config: APIConfig = APIConfig()):
|
|
62
|
-
self.config = config
|
|
63
|
-
self.headers = RequestHeaders.create_default(config.url)
|
|
64
|
-
|
|
65
|
-
@staticmethod
|
|
66
|
-
def generate_session_hash() -> str:
|
|
67
|
-
"""Generate a unique session hash."""
|
|
68
|
-
return str(uuid.uuid4()).replace('-', '')[:12]
|
|
69
|
-
|
|
70
|
-
@staticmethod
|
|
71
|
-
def format_prompt(messages: List[Message]) -> str:
|
|
72
|
-
"""
|
|
73
|
-
Formats a list of messages into a single prompt string.
|
|
74
|
-
|
|
75
|
-
Args:
|
|
76
|
-
messages: A list of message dictionaries with "role" and "content" keys.
|
|
77
|
-
|
|
78
|
-
Returns:
|
|
79
|
-
str: The formatted prompt.
|
|
80
|
-
"""
|
|
81
|
-
return "\n".join(f"{message['role']}: {message['content']}" for message in messages)
|
|
82
|
-
|
|
83
|
-
def create_sync_generator(
|
|
84
|
-
self,
|
|
85
|
-
model: str,
|
|
86
|
-
messages: List[Message],
|
|
87
|
-
proxy: Optional[str] = None,
|
|
88
|
-
**kwargs: Any
|
|
89
|
-
) -> Generator[str, None, None]:
|
|
90
|
-
"""
|
|
91
|
-
Synchronously streams responses from the Qwen_Qwen2_72B_Instruct API.
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
model: The model to use for the request.
|
|
95
|
-
messages: A list of message dictionaries with "role" and "content" keys.
|
|
96
|
-
proxy: Optional proxy URL for the request.
|
|
97
|
-
**kwargs: Additional keyword arguments.
|
|
98
|
-
|
|
99
|
-
Yields:
|
|
100
|
-
str: Text chunks from the API response.
|
|
101
|
-
|
|
102
|
-
Raises:
|
|
103
|
-
requests.exceptions.RequestException: If the API request fails.
|
|
104
|
-
json.JSONDecodeError: If the response cannot be parsed as JSON.
|
|
105
|
-
"""
|
|
106
|
-
session_hash: str = self.generate_session_hash()
|
|
107
|
-
|
|
108
|
-
# Prepare the prompt
|
|
109
|
-
system_messages: List[str] = [
|
|
110
|
-
message["content"]
|
|
111
|
-
for message in messages
|
|
112
|
-
if message["role"] == Role.SYSTEM.value
|
|
113
|
-
]
|
|
114
|
-
system_prompt: str = "\n".join(system_messages)
|
|
115
|
-
|
|
116
|
-
user_messages: List[Message] = [
|
|
117
|
-
message
|
|
118
|
-
for message in messages
|
|
119
|
-
if message["role"] != Role.SYSTEM.value
|
|
120
|
-
]
|
|
121
|
-
prompt: str = self.format_prompt(user_messages)
|
|
122
|
-
|
|
123
|
-
payload_join: Dict[str, Any] = {
|
|
124
|
-
"data": [prompt, [], system_prompt],
|
|
125
|
-
"event_data": None,
|
|
126
|
-
"fn_index": 0,
|
|
127
|
-
"trigger_id": 11,
|
|
128
|
-
"session_hash": session_hash
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
with requests.Session() as session:
|
|
132
|
-
# Send join request
|
|
133
|
-
response = session.post(
|
|
134
|
-
self.config.api_endpoint,
|
|
135
|
-
headers=self.headers.join,
|
|
136
|
-
json=payload_join
|
|
137
|
-
)
|
|
138
|
-
response.raise_for_status()
|
|
139
|
-
event_data: APIResponse = response.json()
|
|
140
|
-
|
|
141
|
-
# Prepare data stream request
|
|
142
|
-
url_data: str = f'{self.config.url}/queue/data'
|
|
143
|
-
params_data: Dict[str, str] = {'session_hash': session_hash}
|
|
144
|
-
|
|
145
|
-
# Send data stream request
|
|
146
|
-
full_response: str = ""
|
|
147
|
-
final_full_response: str = ""
|
|
148
|
-
|
|
149
|
-
with session.get(
|
|
150
|
-
url_data,
|
|
151
|
-
headers=self.headers.data,
|
|
152
|
-
params=params_data,
|
|
153
|
-
stream=True
|
|
154
|
-
) as response:
|
|
155
|
-
response.raise_for_status()
|
|
156
|
-
|
|
157
|
-
for line in response.iter_lines():
|
|
158
|
-
if line:
|
|
159
|
-
decoded_line: str = line.decode('utf-8')
|
|
160
|
-
if decoded_line.startswith('data: '):
|
|
161
|
-
try:
|
|
162
|
-
json_data: StreamData = json.loads(decoded_line[6:])
|
|
163
|
-
|
|
164
|
-
if json_data.get('msg') == 'process_generating':
|
|
165
|
-
if 'output' in json_data and 'data' in json_data['output']:
|
|
166
|
-
output_data: List[Any] = json_data['output']['data']
|
|
167
|
-
if len(output_data) > 1 and len(output_data[1]) > 0:
|
|
168
|
-
for item in output_data[1]:
|
|
169
|
-
if isinstance(item, list) and len(item) > 1:
|
|
170
|
-
fragment: str = str(item[1])
|
|
171
|
-
if not re.match(r'^\[.*\]$', fragment) and not full_response.endswith(fragment):
|
|
172
|
-
full_response += fragment
|
|
173
|
-
yield fragment
|
|
174
|
-
|
|
175
|
-
if json_data.get('msg') == 'process_completed':
|
|
176
|
-
if 'output' in json_data and 'data' in json_data['output']:
|
|
177
|
-
output_data = json_data['output']['data']
|
|
178
|
-
if len(output_data) > 1 and len(output_data[1]) > 0:
|
|
179
|
-
final_full_response = output_data[1][0][1]
|
|
180
|
-
|
|
181
|
-
if final_full_response.startswith(full_response):
|
|
182
|
-
final_full_response = final_full_response[len(full_response):]
|
|
183
|
-
|
|
184
|
-
if final_full_response:
|
|
185
|
-
yield final_full_response
|
|
186
|
-
break
|
|
187
|
-
|
|
188
|
-
except json.JSONDecodeError as e:
|
|
189
|
-
print(f"Could not parse JSON: {decoded_line}")
|
|
190
|
-
raise e
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
def main() -> None:
|
|
194
|
-
messages: List[Message] = [
|
|
195
|
-
{"role": Role.SYSTEM.value, "content": "You are a helpful assistant."},
|
|
196
|
-
{"role": Role.USER.value, "content": "LOL"}
|
|
197
|
-
]
|
|
198
|
-
|
|
199
|
-
api = QwenAPI()
|
|
200
|
-
for text in api.create_sync_generator("qwen-qwen2-72b-instruct", messages):
|
|
201
|
-
print(text, end="", flush=True)
|
|
202
|
-
print("\n---\n")
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
if __name__ == "__main__":
|
|
206
|
-
main()
|