webscout 8.3.5__py3-none-any.whl → 8.3.6__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 (63) hide show
  1. webscout/Bard.py +12 -6
  2. webscout/DWEBS.py +66 -57
  3. webscout/Provider/{UNFINISHED → AISEARCH}/PERPLEXED_search.py +34 -74
  4. webscout/Provider/AISEARCH/__init__.py +1 -1
  5. webscout/Provider/Deepinfra.py +6 -0
  6. webscout/Provider/Flowith.py +6 -1
  7. webscout/Provider/GithubChat.py +1 -0
  8. webscout/Provider/GptOss.py +207 -0
  9. webscout/Provider/Kimi.py +445 -0
  10. webscout/Provider/Netwrck.py +3 -6
  11. webscout/Provider/OPENAI/README.md +2 -1
  12. webscout/Provider/OPENAI/TogetherAI.py +50 -55
  13. webscout/Provider/OPENAI/__init__.py +4 -2
  14. webscout/Provider/OPENAI/copilot.py +20 -4
  15. webscout/Provider/OPENAI/deepinfra.py +6 -0
  16. webscout/Provider/OPENAI/e2b.py +60 -8
  17. webscout/Provider/OPENAI/flowith.py +4 -3
  18. webscout/Provider/OPENAI/generate_api_key.py +48 -0
  19. webscout/Provider/OPENAI/gptoss.py +288 -0
  20. webscout/Provider/OPENAI/kimi.py +469 -0
  21. webscout/Provider/OPENAI/netwrck.py +8 -12
  22. webscout/Provider/OPENAI/refact.py +274 -0
  23. webscout/Provider/OPENAI/textpollinations.py +3 -6
  24. webscout/Provider/OPENAI/toolbaz.py +1 -0
  25. webscout/Provider/TTI/bing.py +14 -2
  26. webscout/Provider/TTI/together.py +10 -9
  27. webscout/Provider/TTS/README.md +0 -1
  28. webscout/Provider/TTS/__init__.py +0 -1
  29. webscout/Provider/TTS/base.py +479 -159
  30. webscout/Provider/TTS/deepgram.py +409 -156
  31. webscout/Provider/TTS/elevenlabs.py +425 -111
  32. webscout/Provider/TTS/freetts.py +317 -140
  33. webscout/Provider/TTS/gesserit.py +192 -128
  34. webscout/Provider/TTS/murfai.py +248 -113
  35. webscout/Provider/TTS/openai_fm.py +347 -129
  36. webscout/Provider/TTS/speechma.py +620 -586
  37. webscout/Provider/TextPollinationsAI.py +3 -6
  38. webscout/Provider/TogetherAI.py +50 -55
  39. webscout/Provider/UNFINISHED/VercelAIGateway.py +339 -0
  40. webscout/Provider/__init__.py +2 -90
  41. webscout/Provider/cerebras.py +83 -33
  42. webscout/Provider/copilot.py +42 -23
  43. webscout/Provider/toolbaz.py +1 -0
  44. webscout/conversation.py +22 -20
  45. webscout/sanitize.py +14 -10
  46. webscout/scout/README.md +20 -23
  47. webscout/scout/core/crawler.py +125 -38
  48. webscout/scout/core/scout.py +26 -5
  49. webscout/version.py +1 -1
  50. webscout/webscout_search.py +13 -6
  51. webscout/webscout_search_async.py +10 -8
  52. webscout/yep_search.py +13 -5
  53. {webscout-8.3.5.dist-info → webscout-8.3.6.dist-info}/METADATA +2 -1
  54. {webscout-8.3.5.dist-info → webscout-8.3.6.dist-info}/RECORD +59 -56
  55. webscout/Provider/Glider.py +0 -225
  56. webscout/Provider/OPENAI/c4ai.py +0 -394
  57. webscout/Provider/OPENAI/glider.py +0 -330
  58. webscout/Provider/TTS/sthir.py +0 -94
  59. /webscout/Provider/{samurai.py → UNFINISHED/samurai.py} +0 -0
  60. {webscout-8.3.5.dist-info → webscout-8.3.6.dist-info}/WHEEL +0 -0
  61. {webscout-8.3.5.dist-info → webscout-8.3.6.dist-info}/entry_points.txt +0 -0
  62. {webscout-8.3.5.dist-info → webscout-8.3.6.dist-info}/licenses/LICENSE.md +0 -0
  63. {webscout-8.3.5.dist-info → webscout-8.3.6.dist-info}/top_level.txt +0 -0
@@ -1,26 +1,26 @@
1
1
  webscout/AIauto.py,sha256=zRQcmNzQCCPOD6ancQlRlSRqEM24rtb-Xlpqg6bt5Pg,10557
2
2
  webscout/AIbase.py,sha256=MbtLlwMNrRu1nKJkj-4ZYUL8YVzDzLdboIAA_7yextM,14529
3
3
  webscout/AIutel.py,sha256=V1PLD7_ViuDu_-5OLIClQ79X87TaSH6pxEMRidQ3j_w,2080
4
- webscout/Bard.py,sha256=2t-GClL98fVZXBWGfH937u23n7_Cunzk-GFnOUbIPwk,44577
4
+ webscout/Bard.py,sha256=XUpfvr4yoP8h18fwLWckWZHu1WIDHKp_mMMApm1F6Bc,44797
5
5
  webscout/Bing_search.py,sha256=eFeqR6aOF_Drdie5GdYGMfxsrjcfOBB62o20Avd04GA,16347
6
- webscout/DWEBS.py,sha256=OnoKtIkrlNtYlGL_CCPsLet8cj2wKxqquFB8RdBxXfk,18621
6
+ webscout/DWEBS.py,sha256=xYCOiRT2JYSaM7w7tpBoIXFNzvAQaNmhjdQtSosOrqM,18417
7
7
  webscout/__init__.py,sha256=Q6UQdRUgCk1akzgxemgPiP5d5GnMs5LMrZ0WGcUF7jk,859
8
8
  webscout/__main__.py,sha256=qtkMZK5jzQ79ZkFAuZBxMgayuhmw3aRDj1F8Pt06NW4,108
9
9
  webscout/cli.py,sha256=_ZeVKRKw6ZX0RScC5BeKNK81gak89qkik168FqB9BH8,20239
10
10
  webscout/client.py,sha256=HHnOL9I14uEJHCpGcyjlpZwna_DEJehHD5sqmti7sd8,5588
11
- webscout/conversation.py,sha256=6U6MepqYlYFev-HR2ZSqCKYhoU816E00jmxtYhYUQ2I,16955
11
+ webscout/conversation.py,sha256=43ezphXT9d3-wQQpmJStr3GeAYSkF2vmhTf1WI7jFyI,17089
12
12
  webscout/exceptions.py,sha256=cj0BDCZhB46g_vJ0r2PH0U_T35dqZro-rWu6tvtIZ3c,12833
13
13
  webscout/models.py,sha256=C7QY-KDkqFCI698t9pvTHQ27rYadPIvwaYHJ3-AOCJI,6566
14
14
  webscout/optimizers.py,sha256=lwIV6c7fKW4rFbZZdhBi7RTJig8KtmziA4979_GByCk,10373
15
15
  webscout/prompt_manager.py,sha256=j4MLYx3SpeeTxzsbgUGAHWLtJ1HAF6eaWOzJCAiGND4,10090
16
- webscout/sanitize.py,sha256=hf0F2uMxS83Cn2ccCPl4brYw3koFwNWC0-mWYTortEM,47458
16
+ webscout/sanitize.py,sha256=F9sK_L6ocy9pnC7u_vPF-4Z62aj2NdwxllABqkAaQ1o,47655
17
17
  webscout/tempid.py,sha256=lqTTOjVSwDMmC0UoThdyshFyIAxTikVaN613-6K3g_s,4968
18
18
  webscout/update_checker.py,sha256=vZKTk4HkDED8x5cujKK0Bjq3UjncyESWM7nNm4LR1fg,3825
19
19
  webscout/utils.py,sha256=o2hU3qaVPk25sog3e4cyVZO3l8xwaZpYRziZPotEzNo,3075
20
- webscout/version.py,sha256=ktvg6nQtdI_q1Ok8wNdV9yplU5gtYcxpYw2KWIz2WmM,46
21
- webscout/webscout_search.py,sha256=e8n03H11N_6Eaey99SvdD9rYEwMERnurNwwrX8ORGVs,47825
22
- webscout/webscout_search_async.py,sha256=xjwSPpQSbeemwRfJYZJA8pJ8WqEHj93Nm4ouH_JddLc,27110
23
- webscout/yep_search.py,sha256=WwdbHtHjgrqc4j9vChf601UB-6ShVcd0iuWem-9qi_8,11730
20
+ webscout/version.py,sha256=2BXyDafkQ3alAN9RkXFV4Jg7Ab_k9ZlLP7mYdpBm_9o,46
21
+ webscout/webscout_search.py,sha256=YehVHCOBsK4BOewJOzshFciBVbSZZfn5BagvvURe5C8,48022
22
+ webscout/webscout_search_async.py,sha256=cNXO3nVs69ztnmV2af04ckN0gN3rjYdNNyjEZqhtX7s,27255
23
+ webscout/yep_search.py,sha256=l7zr8ZMrEkm79aAZxz7hCAbV5AYoB9-YfmKMpZTpoeg,11972
24
24
  webscout/Extra/Act.md,sha256=Mn1AsEOJnVzeNU727o92qwDlGkxfDk9f4ugkI2T2cW4,19261
25
25
  webscout/Extra/__init__.py,sha256=KvJRsRBRO-fZp2jSCl6KQnPppi93hriA6O_U1O1s31c,177
26
26
  webscout/Extra/gguf.md,sha256=Q6Cc8FPq_vlywTGiHTw7xkkwlPZdDYrVUy1lpKGyUYk,12864
@@ -76,20 +76,21 @@ webscout/Provider/ChatGPTClone.py,sha256=3nr_ijQIFyQBbQlGsnjsMMiBgf03WB6KKT5CXrX
76
76
  webscout/Provider/ChatSandbox.py,sha256=P9fiF-Pmx_0XHV1eo4sBV_H9FybTTcoYifkf-6H61WI,13438
77
77
  webscout/Provider/Cloudflare.py,sha256=tcjXK50ghqxmLP0VC8kUQkslgVn9JDB7adxlJHNHIrM,14454
78
78
  webscout/Provider/Cohere.py,sha256=oL9kAv--RSkEQxwkPTq1Wi57Wkgg0WNvL82CpTj22YY,8264
79
- webscout/Provider/Deepinfra.py,sha256=2juZNcP_t9K9f6PuHi3oj3YgdMbnfra38aXTwMZH4UY,15925
79
+ webscout/Provider/Deepinfra.py,sha256=pR_JA1eFj-9UcoUDtox_2PZjkCQLAgUaAqVJeTA5B5g,16116
80
80
  webscout/Provider/ExaAI.py,sha256=plbjF5LYyZS4elLWKtD6AURDQS3O9xAGBScpDGPHWiY,9783
81
81
  webscout/Provider/ExaChat.py,sha256=zs3PZWlJfrkDWaEhi3mhvAldLU7mQ9TYhquaSPA1WpE,14618
82
- webscout/Provider/Flowith.py,sha256=x_fb73t6Y91J7de_NSQsHt7we2HA6M6dacUudqP8uQc,8621
82
+ webscout/Provider/Flowith.py,sha256=hLRcWG1I_Sky3p7ThbXMZMwJ3zf_5YBNIqy1DBbfmio,8731
83
83
  webscout/Provider/FreeGemini.py,sha256=RIqr6Z--1hH2z68QtXyWXrNGp_EvhWbmZhmzjrnb8QU,10998
84
84
  webscout/Provider/Gemini.py,sha256=-Q2JreMF1jLBXKs5TsFzVhQvYtD-ZzJd-Ba-nIiy9Js,6479
85
85
  webscout/Provider/GeminiProxy.py,sha256=mEm-RJETfuaN8gXlv6HsnjrkrT9C4FHm1UiRc5ez6I8,6655
86
- webscout/Provider/GithubChat.py,sha256=vBPjsLchav-kuond0D2kaIo8_QsrYDPYNwKF-D4yKPs,14662
86
+ webscout/Provider/GithubChat.py,sha256=4szCIeXwIt2OYevMi09gQLAOFFeqF5UMr3ivLv8xuGc,14680
87
87
  webscout/Provider/GizAI.py,sha256=o8liIlSPz0MDTqLLGwtLiX3iSAsEuJfX1Cl8UNGOpfQ,10865
88
- webscout/Provider/Glider.py,sha256=MbgKflBwSrvsOKW3Ya-ijKc3Hxh_L6LnD6tfUSFKsoQ,9342
88
+ webscout/Provider/GptOss.py,sha256=ndc2S-n_Z7AlGAlXRLnQfNu-CApu8ywDwIE8CYHhhCk,8084
89
89
  webscout/Provider/Groq.py,sha256=V6nDhue-AEOJLc1-BP6ZOwsUxpjXP1SqBLTG07dhwWc,36880
90
90
  webscout/Provider/HeckAI.py,sha256=19LH3UMpLUKWHgzPZHSDLnDaQ0Nv_Q_qTQa4_mObgYQ,16567
91
91
  webscout/Provider/Hunyuan.py,sha256=FjFcqVhexIpEuljUsGJN4t12bMQvGmzrmc4D1kBLdNk,12332
92
92
  webscout/Provider/Jadve.py,sha256=5TwX4cxB5X4JAuEw_9BjjvNtiGeaISkqX4s9mMTRSC4,12972
93
+ webscout/Provider/Kimi.py,sha256=IL_1UJy3neRzOeyDLyr51xzZPx3wnMwfvu7DEKlf5sk,16498
93
94
  webscout/Provider/Koboldai.py,sha256=K_bAuRMYRkHzN1Qjh0hP6N3oWN_2KoqHpucROmoyLUY,15363
94
95
  webscout/Provider/LambdaChat.py,sha256=f4vTydMOPTEcXDRBn_-LwrSSpNmign7e6JW5YOvlbW8,19411
95
96
  webscout/Provider/Llama3.py,sha256=9f-7ha23OdvUthKUqLwBpSBBZzWPmadJPESyDOUKbC0,10770
@@ -97,7 +98,7 @@ webscout/Provider/MCPCore.py,sha256=EFykzoDvifeLAiW6HJ-dtjPnaBB8EvxTGhPHi_uix8E,
97
98
  webscout/Provider/Marcus.py,sha256=JDjjpmimsWCgrRqZFPGxuHIZ5M98d2ijFzMie86CZvs,8352
98
99
  webscout/Provider/MiniMax.py,sha256=OLZBUY9tuopLlTxX1XhoI5yhBnM2zKD8VHDBlygKzq4,9303
99
100
  webscout/Provider/Nemotron.py,sha256=xA8tQlckUMa5LXSlEeLnf9vbC9x3nCHxh9hChBFb7_Q,9097
100
- webscout/Provider/Netwrck.py,sha256=LTXPbkBhB1QOOAP5r8f4XzrJvtJUNvJ2RqX9nurXGIk,10650
101
+ webscout/Provider/Netwrck.py,sha256=MVErRsFhdzhFXm0--_Lh43Xk2TFom5pl6Ec0yTapohk,10497
101
102
  webscout/Provider/OLLAMA.py,sha256=tvXBGY1YATJpAaDkgiD_jsdn06OYoGY-a3rGTQp5jvI,15061
102
103
  webscout/Provider/OpenGPT.py,sha256=uyQx2l4U-NhBEB3IHXR1-pMnsRRVyfedjZ7lo6oXWAo,9594
103
104
  webscout/Provider/Openai.py,sha256=TC4BkezoLqimaqOwzX-nYC9w7hXbDCajm-bzkdyl-gA,20433
@@ -108,8 +109,8 @@ webscout/Provider/QwenLM.py,sha256=lxnSF38wrupb1e7XhN8f0py8v6efwOndFh2SwvIy7Sc,1
108
109
  webscout/Provider/Reka.py,sha256=dWw4vX91nJhAn-X1SXK72gttRaTqWNGUBFaeRJobTJg,8519
109
110
  webscout/Provider/StandardInput.py,sha256=hBNHn6EqjrJ5LG0W4hTsFcJYRpNCt1WpRJaK6IQK0uw,15084
110
111
  webscout/Provider/TeachAnything.py,sha256=Wy1fFxi_K4G8oFvcBlmDHJBhP1OMihpnBJKt6IA0c38,10416
111
- webscout/Provider/TextPollinationsAI.py,sha256=W3EPLigUMKGkVcem8BPP3MoY4mmxlKugQvtdoEt1VAk,13430
112
- webscout/Provider/TogetherAI.py,sha256=MQwDgh10zju5VnQq-TePM0pWWnFT-lY4T6zs1uWzzBI,15082
112
+ webscout/Provider/TextPollinationsAI.py,sha256=y8z5YIwQ-MifhTg1jhGmRsnxTTuPjfPlzkiC1HTej7c,13358
113
+ webscout/Provider/TogetherAI.py,sha256=e1N_njRElLdTsHdrDuOrUZK10JjVpS6nnZjT1Fl6lS8,14872
113
114
  webscout/Provider/TwoAI.py,sha256=4b2Ls-6wQkG-Uw_2IkQyIGGrg7Tqn91BIJdDiXxArBM,23391
114
115
  webscout/Provider/TypliAI.py,sha256=u2LanU0hJQ4Osgt_d6sI_tNVlDpP9Lwwyc5MdTh_Jmc,12152
115
116
  webscout/Provider/Venice.py,sha256=0L90tvXWDGqLTXvrY8hqmWVaQw05BI5CNNkAWy3QxD4,10258
@@ -117,14 +118,14 @@ webscout/Provider/VercelAI.py,sha256=MFmx-hMcu6-Xbx3-1ZRtyGSA0VF8I8wGqwQIX9i8AQ0
117
118
  webscout/Provider/WiseCat.py,sha256=tqKngidIhG0WBGpbdYlKbLyn2we7A9mivZhmM5qu3fI,9217
118
119
  webscout/Provider/WrDoChat.py,sha256=wHq46_0kn1i4rDN4Y72Uctb-jXXpXT20Z43-MPtfFLs,14100
119
120
  webscout/Provider/XenAI.py,sha256=GZL9J_1yGc3ft2Uo3eq7jS2cZy0ytIPgQ6eNyEN1MAM,13514
120
- webscout/Provider/__init__.py,sha256=XUr0EEEY1mAi4-0UpA5znRmho9CM6WRo4Gn111IkmD8,3898
121
+ webscout/Provider/__init__.py,sha256=yciYEdyyS3zE_BcnSWmmCMFoYFtoVpjXMIuTp6rWvks,2407
121
122
  webscout/Provider/ai4chat.py,sha256=4PvQxPAWlaDgSyo5Dg1W6BVIUDTHq0rFK0H7rcBiCOI,6845
122
123
  webscout/Provider/akashgpt.py,sha256=iJke-aCmTT_8RmrJbSAZayhtIimum1h680diJwBxdOI,13045
123
124
  webscout/Provider/asksteve.py,sha256=qDRe4X6EmgOkhzRz8AAMYUSQFuO5k_84jwgPWKFkjGY,8985
124
- webscout/Provider/cerebras.py,sha256=1A89aUVgMcwKPrSoQw1vHA1gQfsWxYbxV-MZ4EzwvqQ,11324
125
+ webscout/Provider/cerebras.py,sha256=D8QmnJK_NHT2xgrIoDXPorY84r3Zs9l-cnkOkm6EUxI,13714
125
126
  webscout/Provider/chatglm.py,sha256=CBiRhxe1yznhvyOaQPDf9Qu0SSfFvJ6LhTJCtHxsS0Q,8737
126
127
  webscout/Provider/cleeai.py,sha256=lgIBs5JpNaY-gfwUBorZdSeA_Q7tawfTvkWWTg7EfuI,7981
127
- webscout/Provider/copilot.py,sha256=6-f86nVNzJab6sFkHGTMwsu4L6yuZTgZaIYYs28ty9E,18336
128
+ webscout/Provider/copilot.py,sha256=KcR89KPx9a6mxeWuySEPD46YENqOJnUtqXsrqR4FtY8,18969
128
129
  webscout/Provider/deepseek_assistant.py,sha256=KdQ_Ldg_7jUpSIWmxgz6tXS-uOmE5rPKmJhjbeE6fUs,14557
129
130
  webscout/Provider/elmo.py,sha256=PiiRLwkyHsPmAY8uydd_TuWe2qVXbs_wfW5u4Ytbqp8,12875
130
131
  webscout/Provider/freeaichat.py,sha256=aF8AHBKc-0DrvTSj09jWTybrrUP7ro9GkwWXrdTBmf4,11231
@@ -142,21 +143,21 @@ webscout/Provider/meta.py,sha256=uQw0yS80eXoPqVfmWvwE_pvjTVYDDiTu4xrmfKmrqI0,307
142
143
  webscout/Provider/monochat.py,sha256=gSkCmNmkkOOyM_cNDSA1RZZ8MdhGX0qbV9fIgqc3sHE,10337
143
144
  webscout/Provider/multichat.py,sha256=DOt1E4e9X01UxqbDcNy2RPjvgVP3_4ZJb-EWyAn-sgg,15277
144
145
  webscout/Provider/oivscode.py,sha256=3QR2_8nq1ceVTz_TZHCYTuAeK00orOWkpieSK6cgo3o,12713
145
- webscout/Provider/samurai.py,sha256=xwl5CXgV5E_93ATMDXh6QtUKuLK7h0kuGN7JWAJLOCc,8446
146
146
  webscout/Provider/scira_chat.py,sha256=1FuGuh558IWXcG470_fQPBkXc7aH5ZjTHsGE63tT2M4,19345
147
147
  webscout/Provider/scnet.py,sha256=FgdOFixINiP9ONoMOUmAgMq_i8wiVfb_oW20R4CTe7M,11418
148
148
  webscout/Provider/searchchat.py,sha256=2mrI-qcc_XwypuTDywGnU8l94SKRImZMwmtT05aNEKw,12426
149
149
  webscout/Provider/sonus.py,sha256=yDe_00pIFBlMngj7vHO3hNjbKowOTR6i-ZGsvJpz3UQ,11342
150
150
  webscout/Provider/talkai.py,sha256=18EB9FPx2rOWdnuqMtBZc_QbLWKNFj06n1Xdtm6npwg,7613
151
- webscout/Provider/toolbaz.py,sha256=KR6EnseRKviZaokbDHGjxE83XzGL-6necwZIcVysDu8,14769
151
+ webscout/Provider/toolbaz.py,sha256=JwVZ5PgoWO6pq_P7r07akFyZGL7MS4CxMvYmG5fpXzg,14794
152
152
  webscout/Provider/turboseek.py,sha256=hWVWlQiNYHCejWcc28RtsbYQa5Zm_4FOCh9thHESCuQ,11244
153
153
  webscout/Provider/typefully.py,sha256=spW8cKIliR-QahFO8fwBZtnrDHOIijxnY00XXXoe3qQ,8295
154
154
  webscout/Provider/x0gpt.py,sha256=fuqA82SQ7dZ44v5MTJ62m5QcYSFKWYnl9CMhoRWY9Qc,13042
155
155
  webscout/Provider/yep.py,sha256=WA6Z14ikRHy53XoAy9AThwryrHE1B6UDaBuvAjMU5DY,17041
156
156
  webscout/Provider/AISEARCH/DeepFind.py,sha256=nYS9wCAj5ODkIjGaNKPRfYkJ1kQai7kL32QCnh_oOuQ,10117
157
+ webscout/Provider/AISEARCH/PERPLEXED_search.py,sha256=h2V5nsDQ9wCEmgqS8c0PAVyEiEfyOopEBGh17F7R_5s,8878
157
158
  webscout/Provider/AISEARCH/Perplexity.py,sha256=AcKqelQfjR5TULqCSA7s6U5-T3zv4HXvV13pFrdj4Dk,15138
158
159
  webscout/Provider/AISEARCH/README.md,sha256=3WlTa-icOdDyyJpHsgmL0mfJ2BV_ViIC-hlMlRwbZYI,9693
159
- webscout/Provider/AISEARCH/__init__.py,sha256=adZBsnyP2BcmRxNbiTvCCAEZRewF-ITMYOi6S_6MlkU,316
160
+ webscout/Provider/AISEARCH/__init__.py,sha256=MhDnQ1q5T8H4bP8PX3azM3RalLqksVRhkBOgErI8wVE,314
160
161
  webscout/Provider/AISEARCH/felo_search.py,sha256=dMPySfhhrj9jVH1-G_EtB3mIWeR5W7z4fCtpX7ygAa4,8551
161
162
  webscout/Provider/AISEARCH/genspark_search.py,sha256=dsTaopBuuiK09uo_Dw5yQQTkB3jL4UHdy60nPZmryoA,16670
162
163
  webscout/Provider/AISEARCH/hika_search.py,sha256=puGSf65CCVCj9w-C1lh2wPgNFlWr9TCNVjxO4WSj3O4,6757
@@ -174,41 +175,43 @@ webscout/Provider/OPENAI/MiniMax.py,sha256=hWrKiiXm5geUqTHDwKcOfhanb2eoejeOTjdCD
174
175
  webscout/Provider/OPENAI/NEMOTRON.py,sha256=ZwBgNe3b466zkJ7JYtzLvobQte-Gppk1_YOBGGk6Mc8,9731
175
176
  webscout/Provider/OPENAI/PI.py,sha256=MHkX7wsXJIdItwOfMMGEo8OzlZXIaolopBda7b_SpfQ,15185
176
177
  webscout/Provider/OPENAI/Qwen3.py,sha256=91wKmXhM8gXyP6pat7fspr1XW0clN91Spx_Cq8WBL7o,16073
177
- webscout/Provider/OPENAI/README.md,sha256=8_AcxtOtzwv_b9hcrkaq1koV6w211WKb9LqVwMmgaJA,25079
178
- webscout/Provider/OPENAI/TogetherAI.py,sha256=q27xQJGTF57H9Sby4HO4a85G8HSQhUTaUazFqyIEle4,14281
178
+ webscout/Provider/OPENAI/README.md,sha256=OcGtuf3H_-u1IdxgfxOAQxjqACOBBmbKS-1sJb-M0xY,25095
179
+ webscout/Provider/OPENAI/TogetherAI.py,sha256=BBw3G44xXagmB9qRNVXokdlsI02fxgEnpMFnXIGScUI,14071
179
180
  webscout/Provider/OPENAI/TwoAI.py,sha256=GBMZI1fwoMMEWcn9QcNGyKHQjzv9I3JbNs9IXthM9DI,17940
180
- webscout/Provider/OPENAI/__init__.py,sha256=UUiU3S568NS4USBp15DTT16x3_HU_qe3kZjraucS8L8,1656
181
+ webscout/Provider/OPENAI/__init__.py,sha256=wqTVl0S1SfsDc3DPB_Sa8pPkd2Yhp2z-vLIkBed7y18,1773
181
182
  webscout/Provider/OPENAI/ai4chat.py,sha256=I0o7ZnGzG_2-PZfDDEbTMPh5OCx-4LfqfNcUFFdZAGY,11273
182
183
  webscout/Provider/OPENAI/autoproxy.py,sha256=4zt7Ok-P63TY0m_2ClZ6Lg0O8fYOsIJcI0xStG8j2YY,41314
183
184
  webscout/Provider/OPENAI/base.py,sha256=pjyz1e4Y1A9nttOZRMsihqhcP6ujGctzr7BNTXEtNd8,10507
184
- webscout/Provider/OPENAI/c4ai.py,sha256=f0rzU1a5B3NJDNfOjvFoyTlDdmwuwL_3NfFr2uKqkxY,15636
185
185
  webscout/Provider/OPENAI/chatgpt.py,sha256=z2R7GmsI-xVSrzVjnwmSXqm-SBuZAt9UE0DNvYXlPlc,20787
186
186
  webscout/Provider/OPENAI/chatgptclone.py,sha256=XHrp4lw9AD3wr9MW2Aar9H-6Aw8l-TgmCLXM9OiH8fE,20423
187
187
  webscout/Provider/OPENAI/chatsandbox.py,sha256=nmFQdZaj6puw28Hux57f-E8UYqNQnaMnQBOdhnd-ZQY,6999
188
- webscout/Provider/OPENAI/copilot.py,sha256=MlvPROdb-sd4A6NnJbzSh7iWbJPofIQNGi9FXdPALhw,11889
189
- webscout/Provider/OPENAI/deepinfra.py,sha256=jae_9rj37mJ7vqVgkM27mdIkzonsPt-6ez1pdw3M5zE,13312
190
- webscout/Provider/OPENAI/e2b.py,sha256=sgLJ5FF-thlY8SYW0pqzFfQltiQfH6QwZqELydtUPFo,71438
188
+ webscout/Provider/OPENAI/copilot.py,sha256=2Et1FtpK0ATAYk6bSXYBgJM14p5n9t60E3jVADyixMQ,12475
189
+ webscout/Provider/OPENAI/deepinfra.py,sha256=A9A_HpxNnawsQjEVh_EqJESl9o7wWLgB4JV4Lrg67q4,13503
190
+ webscout/Provider/OPENAI/e2b.py,sha256=YWgsrmJmC7qHkzwzyPGIzpY2Gq8vGPdbYh2Fza7wp9A,73976
191
191
  webscout/Provider/OPENAI/exaai.py,sha256=D7i2zpxQhjo_LRnO0nzAU651aOWgXM_9_AQjcRX2IY0,15066
192
192
  webscout/Provider/OPENAI/exachat.py,sha256=NjER0u8W98B2qohUrNABcxSPoQIZGRfhgjEF57hNzkg,15861
193
- webscout/Provider/OPENAI/flowith.py,sha256=ieMIuIlEQeaPQX599GSY4us3nmalik02oSLIAoJKmJA,6580
193
+ webscout/Provider/OPENAI/flowith.py,sha256=ZNgVFeEBf0Pj4Ey11-RrEP8qlLKNzJul6FA-Tg-Y8hA,6638
194
194
  webscout/Provider/OPENAI/friendli.py,sha256=vIOlpc-HBVSi-kfb956wEpBzabtU6HY-Tm5yf-THfvI,10446
195
- webscout/Provider/OPENAI/glider.py,sha256=DpVOvgZZQXCuaHJPKGqrvis4EkVlXxX5s207nDz7evE,13758
195
+ webscout/Provider/OPENAI/generate_api_key.py,sha256=yh8rUBbNLdbe-uetelw2sVfPaNNx7CYIHoDfcyEjRy4,1490
196
+ webscout/Provider/OPENAI/gptoss.py,sha256=9OCnFyHS8a7K5D3x_Rm8f4eIQxfePrIQDKa9mOX8li4,11317
196
197
  webscout/Provider/OPENAI/groq.py,sha256=if3RBZmFwqSKtYPwlVzK_YGGGlFv4dRxw2obGs8MvRE,14564
197
198
  webscout/Provider/OPENAI/heckai.py,sha256=br0Zj_rvOCL1w_N3SVltiVlQQQhlCwAb-WOhaFaEwh4,11709
199
+ webscout/Provider/OPENAI/kimi.py,sha256=RSnF1xpKlQW85ox1xNNSpoT3ZsKUCYj1-pHo8DQQBjE,17818
198
200
  webscout/Provider/OPENAI/llmchatco.py,sha256=CUcFgZuuV4njk9HEocnCGnLg7zcTB1k1awRJSHX5NFA,15371
199
201
  webscout/Provider/OPENAI/mcpcore.py,sha256=UsIAKXiO9F3p6m5yptjslAo60NJa5AmtcaQOqzDD3EU,18939
200
202
  webscout/Provider/OPENAI/monochat.py,sha256=7ZBOavowF_ebAd61Eq6YVoNcU9JWi9TV43yTGlSEz9M,11500
201
203
  webscout/Provider/OPENAI/multichat.py,sha256=r65SxO4GxolYCs5Phoys_1xZtIEqolyW-I539Zj_mXM,13989
202
- webscout/Provider/OPENAI/netwrck.py,sha256=WpCkaw5jOQsM3HUbolMfpRYx4cfTbnNonuJZRV0mR24,13213
204
+ webscout/Provider/OPENAI/netwrck.py,sha256=qIgfJ3QkY62afq7-r4-CKSOmoX-SPi4_aeEzMNC0Rj4,13053
203
205
  webscout/Provider/OPENAI/oivscode.py,sha256=Gjw2SETSIkIGREk5BfdEkkQL_RjnI8jFcwxLmUvlzOE,11875
204
206
  webscout/Provider/OPENAI/opkfc.py,sha256=2YdpcNxMn2p3w9Z7mQ7g0dFJ17zzAgvnIM4UwCgynpM,21877
205
207
  webscout/Provider/OPENAI/pydantic_imports.py,sha256=argzn_wiEY1Ymf2eU5W41V93aZOU0EPEbCtpL0X-TEQ,24
206
208
  webscout/Provider/OPENAI/qodo.py,sha256=ZW87jLV9SS67Jx1MYQ_KF7fMsKbMv8MX9mcuthaas4s,24893
209
+ webscout/Provider/OPENAI/refact.py,sha256=hJNzfE0dD8yE_y71lJlvu2L4rap7gkuOn955YKiIe7A,11086
207
210
  webscout/Provider/OPENAI/scirachat.py,sha256=VBOKBGam9k58HRp-9AYlNbkUftivmR0UpqJYzbnE8uk,21086
208
211
  webscout/Provider/OPENAI/sonus.py,sha256=nRUJkK0T08Ao1WLF5ySmCpfH4x9C8wUXjezW4mygqJo,11159
209
212
  webscout/Provider/OPENAI/standardinput.py,sha256=xBHWMRZcPwDJZaQvszaZmKwFzV3wCpwnoynSvsIqhTQ,19547
210
- webscout/Provider/OPENAI/textpollinations.py,sha256=ZbcxnZ6cZXNLcNhnvWIAU9PXJwri4MPEHzXn1Z1cvXk,13285
211
- webscout/Provider/OPENAI/toolbaz.py,sha256=nFbfZ9f-V8LvK3C-A_jKAqi1SVs70Bn9PE5f484V8JA,14266
213
+ webscout/Provider/OPENAI/textpollinations.py,sha256=yELbqL3qVMCvbW3jp5xzq1_uoUgyq4AgQLxhc79i4Go,13213
214
+ webscout/Provider/OPENAI/toolbaz.py,sha256=KLFy80c3pg6ecQT0g_8Ii1jK8z3wNxEqMvr8VjH24s8,14291
212
215
  webscout/Provider/OPENAI/typefully.py,sha256=yuOf1Idb6LCkK_YT4c9ABnjTuwRzSzffX-OAumSqrJQ,13004
213
216
  webscout/Provider/OPENAI/utils.py,sha256=UB9MBoPEXl7zinIeZ3sQU1K5PTZjtzV-CBj9KiS3CYk,9374
214
217
  webscout/Provider/OPENAI/venice.py,sha256=WNQpZlAsNbKW7zrXyITrHkXs9Ox0NTq5qd30cpY3dd0,16183
@@ -224,7 +227,7 @@ webscout/Provider/TTI/README.md,sha256=10mWDIrA39EhWGRnTWrVhhS3CwKT97yOkSc0dMLUQ
224
227
  webscout/Provider/TTI/__init__.py,sha256=LLbMm3jUYZZ57l9o7Ki2ovzD74JveNQ7pBvW9qQzir4,296
225
228
  webscout/Provider/TTI/aiarta.py,sha256=s7_ovvGJXTpH7TMMqBaQi00JKhUM5lcsG3PDdLp90Ps,15369
226
229
  webscout/Provider/TTI/base.py,sha256=DCf8UfTM64D93DToY9Dc8KA-VgNIDFWVM-_nHp-wN5Q,5224
227
- webscout/Provider/TTI/bing.py,sha256=OvB76EYAjNU3hsDZ76YqI-LpinCzFO4mWk3GXMIjG1A,10551
230
+ webscout/Provider/TTI/bing.py,sha256=zNhBVfoq6-P0-YjppTItKAlebaTqLe5Uc_P9E1Zu_Tk,10883
228
231
  webscout/Provider/TTI/gpt1image.py,sha256=4xE5MFfjuKMc3lO3QCsEYvgidyoDhmvF7J1_sBqzmoU,4980
229
232
  webscout/Provider/TTI/imagen.py,sha256=1qoyUeoqrzbQ660P5TFIJQVuZnwZQL65tCNEIXjD7CY,6684
230
233
  webscout/Provider/TTI/infip.py,sha256=QQYBsof2pC0lqC1oAy6lex2LoRlDVg6Uu6qao0bZnsE,7294
@@ -233,30 +236,30 @@ webscout/Provider/TTI/monochat.py,sha256=SieiOHd2Rp3LiYkm1H9FXpS0Bt5LbrAvXyc3fnJ
233
236
  webscout/Provider/TTI/piclumen.py,sha256=JM7aLa1Mdv4xuB0d1XLqS0t9yMR9C8Rgtv7979wtETc,7978
234
237
  webscout/Provider/TTI/pixelmuse.py,sha256=k2NypIvZ1Xfe9ubL0Hkg5zkY-VLLvk4uZtPHmUFlmQg,8625
235
238
  webscout/Provider/TTI/pollinations.py,sha256=tu1FAvAetET9KnwiXVlhsIEjfJZPghgSDdl7oFqLBso,8688
236
- webscout/Provider/TTI/together.py,sha256=Iee2cIk1ZMaWo9PqFBZ8ok9J6H9KDdIdGgeclDBRQsU,10395
239
+ webscout/Provider/TTI/together.py,sha256=gQGANbaK8i6nOHF3cxx2yHyxlufyIvVU7RI1_0IJWuM,10441
237
240
  webscout/Provider/TTI/utils.py,sha256=vM63GCFRDKLUlqPVIFJC0H6asNh-8rVR_NWCfnfc8l4,317
238
241
  webscout/Provider/TTI/venice.py,sha256=H7c_UKByNBJfXSfIgN780GG_RnSdFKkxnLhkwP8LD3g,13886
239
- webscout/Provider/TTS/README.md,sha256=rC8EPG3UHILHTs46thPM96S5eNdlmGOv5fcJP3J3MpQ,4656
240
- webscout/Provider/TTS/__init__.py,sha256=XrDg3HucBXoIL5_q-8W0RLHNs7WIZK9xAUO0i1qthnc,306
241
- webscout/Provider/TTS/base.py,sha256=-_bFU2PPftjgMBF04YLIp_58pOPrJl9_lDY81eCzIaU,6127
242
- webscout/Provider/TTS/deepgram.py,sha256=pMNhfez_Yr1FJn8fKtCb8xFhg_K-OnxpZuoWVWIx7f4,6329
243
- webscout/Provider/TTS/elevenlabs.py,sha256=IzpyeHmADDhJcS2H4p7YK6PvA5LP22AoSBCw2Mt3-AY,5408
244
- webscout/Provider/TTS/freetts.py,sha256=a8CbhjI1Kb07T8O519DtF9Rg_oAi8l8Kn56cgYTxV5c,5411
245
- webscout/Provider/TTS/gesserit.py,sha256=v4ybdEMbux8J21Y7PSp3_axL3W2Naru5P_pmwP1ENeU,5594
246
- webscout/Provider/TTS/murfai.py,sha256=9WA7_4n1p4OXbZY3WxwxDRTvsWN2ohDxKGqgYrZol84,4910
247
- webscout/Provider/TTS/openai_fm.py,sha256=WAbkBdGd0q_9QgXBm5hllSCr8TEmXEY2voaDjjbUfxI,5210
242
+ webscout/Provider/TTS/README.md,sha256=wC8Us4srrpukUJ5rBLvKPxl5Su79Dz97wkcOLHND8F0,4639
243
+ webscout/Provider/TTS/__init__.py,sha256=M9kVUPrgV5nhueTuEFW2NjkepAwpC3f67MwGMeIJY58,284
244
+ webscout/Provider/TTS/base.py,sha256=iYIrVUYUrRJEzt2hwShRC9i3IMvgPGm6d-niYkwoauc,16694
245
+ webscout/Provider/TTS/deepgram.py,sha256=Itahe_Fabwm4WTHgzQX5goUtrmF2N2Gdh33Td0I1tXE,15152
246
+ webscout/Provider/TTS/elevenlabs.py,sha256=_eJSCqZV8HLvGtC_a-N751h07cXcKGfpPESh7yx0DXY,16267
247
+ webscout/Provider/TTS/freetts.py,sha256=arB7WBcpBkx4CcPgSQxSq3n7cyYe02XQQ2bg2qXpBBg,11406
248
+ webscout/Provider/TTS/gesserit.py,sha256=qz2mWjTXtkHzMAzwXgNkuiyfJ1fPn47xX82btPBB6VY,7716
249
+ webscout/Provider/TTS/murfai.py,sha256=sZ1ZpvHwoICnA6vlZypggkOO7QpGXhqgR-duYW4Ukfw,9231
250
+ webscout/Provider/TTS/openai_fm.py,sha256=I8Gu8TIUWk5cEOTklBSPEg2iG6zdnqrnFl6iEVNdkgo,11816
248
251
  webscout/Provider/TTS/parler.py,sha256=-JbH01Kq_sLVahu6PoJwq6c7JY_JtQOi8YmU1cLFZqU,4144
249
- webscout/Provider/TTS/speechma.py,sha256=KOB56mmXNRG4_Dw1pjQnA25L4o_lvG-5Rh0anLp0Sf8,28605
250
- webscout/Provider/TTS/sthir.py,sha256=vEYmu4faOIeTcSfdSedUYVD3Vp3zu8-voq-g5aaMAog,3704
252
+ webscout/Provider/TTS/speechma.py,sha256=S3ZB3M1jFnq-gDJWSntOjD1do6RWgECzTjEQw7SRbsw,23629
251
253
  webscout/Provider/TTS/streamElements.py,sha256=RowMh1VktGD9W_lGBqVJon_Bq8Ee2PRZNeUCDtDN8FU,10238
252
254
  webscout/Provider/TTS/utils.py,sha256=pO3GsBmIZ7CHywjOGyrdpHdvch40QMvfAfvAeRBp-O0,10886
253
255
  webscout/Provider/UNFINISHED/ChatHub.py,sha256=Xu2mvdTx-NjiDaTyyvRBkeGa8CgUJuMs14-5HLE0Y-A,7355
254
256
  webscout/Provider/UNFINISHED/ChutesAI.py,sha256=i3GA93puWB5RoSiJat_OC1zWZI8XDG_CAri7SU_N-2w,13026
255
- webscout/Provider/UNFINISHED/PERPLEXED_search.py,sha256=aB5HYttLcUD23zr3sKYs-zu7GDGDDpxHpPTYwAJJD20,10940
257
+ webscout/Provider/UNFINISHED/VercelAIGateway.py,sha256=shB4pvj_w_fAJ4mULfBw9P2PDAYWOntc2dl7PD0z70Y,13352
256
258
  webscout/Provider/UNFINISHED/Youchat.py,sha256=dkvwp7Jub4dF5l463hHX7L7MHzwyY14TU7BsTl3zlGk,13058
257
259
  webscout/Provider/UNFINISHED/fetch_together_models.py,sha256=1BXL4ahTx_q19C6m2JKAUf_cbd2yRTacb4G0tMhNY10,3146
258
260
  webscout/Provider/UNFINISHED/liner_api_request.py,sha256=yTVXbqZMTyo5oOPX_FO95fO56TT5hkbt8r4PK7ahFqw,10558
259
261
  webscout/Provider/UNFINISHED/puterjs.py,sha256=Hhtz9PS8wSuG2BDUbPp2qLS5AQSAZzQ2viqC_-F-9yM,28225
262
+ webscout/Provider/UNFINISHED/samurai.py,sha256=xwl5CXgV5E_93ATMDXh6QtUKuLK7h0kuGN7JWAJLOCc,8446
260
263
  webscout/Provider/UNFINISHED/test_lmarena.py,sha256=-BfHfe14HbozIkYUNl2RqI5Ih2VdSXv6DInBlUfvMZk,3853
261
264
  webscout/auth/__init__.py,sha256=tcgG2dottPjoBRSLMFx7fHl4C0zSssWbkaLW0JNF3Z0,1848
262
265
  webscout/auth/api_key_manager.py,sha256=8Zev4L35lyxHtdMQXQ4hOBuJzKaoHynHIfPNbtJl9hw,7143
@@ -279,13 +282,13 @@ webscout/litagent/__init__.py,sha256=2HydGSdDVBZ7SRNgGzXX-TJiuol1sxzNJBw7wVAFueo
279
282
  webscout/litagent/agent.py,sha256=aflDZYVN_wZQ3OWOUK3ah7bnlFAUBandPfVuxCJZI04,24626
280
283
  webscout/litagent/constants.py,sha256=3_3tWXhmyZ2dFIO8f0YWL4CRkoFoL18h0_jNttTN7mk,2175
281
284
  webscout/litprinter/__init__.py,sha256=dEsi76uca5Art7tOc3ps240PPrWEVOdTLgR2pim1u9I,2510
282
- webscout/scout/README.md,sha256=vMMB_XT1F63YfZHpjisgfsuHE3uyT92EAiACCkjRxpE,12487
285
+ webscout/scout/README.md,sha256=eTUP75eoAqVcscmMNiqwby55biKTcELwQrFsuYSBAY8,12619
283
286
  webscout/scout/__init__.py,sha256=1dy8mhj4d-X_RDnb3Ip2LKC-2fqgP5zRsHkhdQjAGzE,333
284
287
  webscout/scout/element.py,sha256=wLqfBhE2aQjvFEeTK_Qiy3ci-jR9rRrCskqgEo4gzUE,20068
285
288
  webscout/scout/utils.py,sha256=flBUjqjUZbzMDT8PJYMPxqXFpm1NlpIJHdhFC2ApnZ0,1006
286
289
  webscout/scout/core/__init__.py,sha256=ncF9MkM3iO1B2Ew_nOwzLQeeJ1xkCdoJ77CCZADD974,296
287
- webscout/scout/core/crawler.py,sha256=YPGUxHymAry_-WW9HM1SoYXjCYkUOvfGJNGpUsnTjPM,7802
288
- webscout/scout/core/scout.py,sha256=zbpm9H352HHItsQMrgzBWFILvDbAAjbF40EPt8XRBEE,23484
290
+ webscout/scout/core/crawler.py,sha256=csWFF37SERh1XBpDZ0FNwHGayk3dTbqygLtzI-kpFqY,10685
291
+ webscout/scout/core/scout.py,sha256=WJe7gZ4-FVObCSwQkhsfZB42M7PKEDlFWe8m3OnA0YM,24404
289
292
  webscout/scout/core/search_result.py,sha256=I5pmOhczAqY2wPgwx9lrZoeD4eHLn2VHlFCicaLXORI,2957
290
293
  webscout/scout/core/text_analyzer.py,sha256=gm30VZAnAH5DPgt6OhYd4bOriK-sSwgtEBqrx4NWm6o,1846
291
294
  webscout/scout/core/text_utils.py,sha256=vo5dVgtcMARWfHdH6NC5gAArBo4HYpqFsHKZYfkE7Jk,10813
@@ -316,9 +319,9 @@ webscout/zeroart/__init__.py,sha256=3reMOf41PFtYVhq2wjFpJbIIHWRcy63efeUpolWm1P0,
316
319
  webscout/zeroart/base.py,sha256=nkf3WAE3YxKIpOFJ4Xf01T7dyWlbi98F1mIYo6vDux8,2365
317
320
  webscout/zeroart/effects.py,sha256=DOMPCNk-IwhnUrXsYSx5oSWeYQ6KN7T_jZOYdEofyMg,3345
318
321
  webscout/zeroart/fonts.py,sha256=ZiyQqA0BFN2IH5Ldijqe93rTiROmqPgxpeDtUNmmeRw,38812
319
- webscout-8.3.5.dist-info/licenses/LICENSE.md,sha256=hyfFlVn7pWcrvuvs-piB8k4J8DlXdOsYje9RyPxc6Ik,7543
320
- webscout-8.3.5.dist-info/METADATA,sha256=Xe4MmVSyv5jcrW2dbVh30tTLNb24AyVK3gZCVltqUm0,33159
321
- webscout-8.3.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
322
- webscout-8.3.5.dist-info/entry_points.txt,sha256=WooZuMBei-kQl5qByoRMkc2cHsaDL1Jd2_tSYsNiUGg,116
323
- webscout-8.3.5.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
324
- webscout-8.3.5.dist-info/RECORD,,
322
+ webscout-8.3.6.dist-info/licenses/LICENSE.md,sha256=hyfFlVn7pWcrvuvs-piB8k4J8DlXdOsYje9RyPxc6Ik,7543
323
+ webscout-8.3.6.dist-info/METADATA,sha256=N4PmtkP5IqqPfQ5z4uTD0u6XCs7ySS6PtEu2HEQC65w,33208
324
+ webscout-8.3.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
325
+ webscout-8.3.6.dist-info/entry_points.txt,sha256=WooZuMBei-kQl5qByoRMkc2cHsaDL1Jd2_tSYsNiUGg,116
326
+ webscout-8.3.6.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
327
+ webscout-8.3.6.dist-info/RECORD,,
@@ -1,225 +0,0 @@
1
- import cloudscraper
2
- # from curl_cffi.requests import Session
3
- import json
4
- from typing import Union, Any, Dict, Generator, Optional, List
5
-
6
- from curl_cffi import CurlError
7
-
8
- from webscout.AIutel import Optimizers, Conversation, AwesomePrompts, sanitize_stream # Import sanitize_stream
9
- from webscout.AIbase import Provider
10
- from webscout import exceptions
11
- from webscout.litagent import LitAgent as Lit
12
-
13
- class GliderAI(Provider):
14
- """
15
- A class to interact with the Glider.so API.
16
- """
17
-
18
- AVAILABLE_MODELS = [
19
- "chat-llama-3-1-8b",
20
- "chat-llama-3-2-3b",
21
- "chat-deepseek-r1-qwen-32b",
22
- "chat-qwen-2-5-7b",
23
- "chat-qwen-qwq-32b",
24
- "deepseek-ai/DeepSeek-R1",
25
- ]
26
-
27
- def __init__(
28
- self,
29
- is_conversation: bool = True,
30
- max_tokens: int = 600,
31
- timeout: int = 30,
32
- intro: Optional[str] = None,
33
- filepath: Optional[str] = None,
34
- update_file: bool = True,
35
- proxies: dict = {},
36
- history_offset: int = 10250,
37
- act: Optional[str] = None,
38
- model: str = "chat-llama-3-1-8b",
39
- system_prompt: str = "You are a helpful AI assistant."
40
- ):
41
- """Initializes the GliderAI API client."""
42
- if model not in self.AVAILABLE_MODELS:
43
- raise ValueError(f"Invalid model: {model}. Choose from: {', '.join(self.AVAILABLE_MODELS)}")
44
-
45
- self.session = cloudscraper.create_scraper() # Use cloudscraper Session
46
- self.is_conversation = is_conversation
47
- self.max_tokens_to_sample = max_tokens
48
- self.api_endpoint = "https://glider.so/api/chat"
49
- self.stream_chunk_size = 64
50
- self.timeout = timeout
51
- self.last_response = {}
52
- self.model = model
53
- self.system_prompt = system_prompt
54
- self.headers = {
55
- "accept": "*/*",
56
- "accept-language": "en-US,en;q=0.9",
57
- "content-type": "text/plain;charset=UTF-8",
58
- "origin": "https://glider.so",
59
- "referer": "https://glider.so/",
60
- "user-agent": Lit().random(),
61
- "cookie": "_vcrcs=1.1746977094.3600.NDlmNmM5YWFmNzMxZWUyNzE4ZjBhOTJlZGZlZDU3MGU=.850a77f5f36f60ae5da2f51b55231a54",
62
- }
63
- self.session.headers.update(self.headers)
64
- self.session.proxies = proxies # Assign proxies directly
65
-
66
- self.__available_optimizers = (
67
- method for method in dir(Optimizers)
68
- if callable(getattr(Optimizers, method)) and not method.startswith("__")
69
- )
70
-
71
- Conversation.intro = (
72
- AwesomePrompts().get_act(
73
- act, raise_not_found=True, default=None, case_insensitive=True
74
- )
75
- if act
76
- else intro or Conversation.intro
77
- )
78
- self.conversation = Conversation(
79
- is_conversation, self.max_tokens_to_sample, filepath, update_file
80
- )
81
- self.conversation.history_offset = history_offset
82
-
83
- @staticmethod
84
- def _glider_extractor(chunk: Union[str, Dict[str, Any]]) -> Optional[str]:
85
- """Extracts content from Glider stream JSON objects."""
86
- if isinstance(chunk, dict):
87
- # Handle both standard and DeepSeek response formats within choices
88
- return chunk.get("choices", [{}])[0].get("delta", {}).get("content")
89
- return None
90
-
91
- def ask(
92
- self,
93
- prompt: str,
94
- stream: bool = False,
95
- raw: bool = False,
96
- optimizer: Optional[str] = None,
97
- conversationally: bool = False,
98
- ) -> Union[Dict[str, Any], Generator[Any, None, None]]:
99
- """Chat with AI.
100
-
101
- Args:
102
- prompt (str): Prompt to be sent.
103
- stream (bool, optional): Flag for streaming response. Defaults to False.
104
- raw (bool, optional): Return raw response chunks instead of dict. Defaults to False.
105
- optimizer (str, optional): Prompt optimizer name. Defaults to None.
106
- conversationally (bool, optional): Use conversationally modified prompt when optimizer specified. Defaults to False.
107
- Returns:
108
- dict or Generator[dict, None, None]: The response from the API.
109
- """
110
- conversation_prompt = self.conversation.gen_complete_prompt(prompt)
111
- if optimizer:
112
- if optimizer in self.__available_optimizers:
113
- conversation_prompt = getattr(Optimizers, optimizer)(
114
- conversation_prompt if conversationally else prompt
115
- )
116
- else:
117
- raise Exception(f"Optimizer is not one of {list(self.__available_optimizers)}")
118
-
119
- payload = {
120
- "messages": [
121
- {"role": "system", "content": self.system_prompt},
122
- {"role": "user", "content": conversation_prompt}
123
- ],
124
- "model": self.model,
125
- }
126
-
127
- def for_stream():
128
- streaming_text = ""
129
- try:
130
- import json
131
- response = self.session.post(
132
- self.api_endpoint, data=json.dumps(payload), stream=True, timeout=self.timeout
133
- )
134
- response.raise_for_status()
135
-
136
- # Use sanitize_stream
137
- processed_stream = sanitize_stream(
138
- data=response.iter_content(chunk_size=None), # Pass byte iterator
139
- intro_value="data:",
140
- to_json=True, # Stream sends JSON
141
- content_extractor=self._glider_extractor, # Use the specific extractor
142
- yield_raw_on_error=False # Skip non-JSON lines or lines where extractor fails
143
- )
144
-
145
- for content_chunk in processed_stream:
146
- # content_chunk is the string extracted by _glider_extractor
147
- if content_chunk and isinstance(content_chunk, str):
148
- streaming_text += content_chunk
149
- yield content_chunk if raw else {"text": content_chunk}
150
- except CurlError as e:
151
- raise exceptions.FailedToGenerateResponseError(f"Request failed (CurlError): {e}") from e
152
- except Exception as e:
153
- raise exceptions.FailedToGenerateResponseError(f"An unexpected error occurred ({type(e).__name__}): {e}") from e
154
- self.last_response.update(dict(text=streaming_text))
155
- self.conversation.update_chat_history(prompt, self.get_message(self.last_response))
156
-
157
- def for_non_stream():
158
- for _ in for_stream():
159
- pass
160
- return self.last_response
161
-
162
- return for_stream() if stream else for_non_stream()
163
-
164
- def chat(
165
- self,
166
- prompt: str,
167
- stream: bool = False,
168
- optimizer: Optional[str] = None,
169
- conversationally: bool = False,
170
- ) -> Union[str, Generator[str, None, None]]:
171
- """Generate response as a string.
172
-
173
- Args:
174
- prompt (str): Prompt to be sent.
175
- stream (bool, optional): Flag for streaming response. Defaults to False.
176
- optimizer (str, optional): Prompt optimizer name. Defaults to None.
177
- conversationally (bool, optional): Use conversationally modified prompt when optimizer specified. Defaults to False.
178
- Returns:
179
- str or Generator[str, None, None]: The response generated.
180
- """
181
- def for_stream():
182
- for response in self.ask(
183
- prompt, stream=True, optimizer=optimizer, conversationally=conversationally
184
- ):
185
- yield self.get_message(response)
186
- def for_non_stream():
187
- return self.get_message(
188
- self.ask(
189
- prompt,
190
- stream=False,
191
- optimizer=optimizer,
192
- conversationally=conversationally,
193
- )
194
- )
195
- return for_stream() if stream else for_non_stream()
196
-
197
- def get_message(self, response: dict) -> str:
198
- """Retrieves message only from response."""
199
- assert isinstance(response, dict), "Response should be of dict data-type only"
200
- return response["text"]
201
-
202
- if __name__ == "__main__":
203
- print("-" * 80)
204
- print(f"{'Model':<50} {'Status':<10} {'Response'}")
205
- print("-" * 80)
206
-
207
- for model in GliderAI.AVAILABLE_MODELS:
208
- try:
209
- test_ai = GliderAI(model=model, timeout=60)
210
- response = test_ai.chat("Say 'Hello' in one word", stream=True)
211
- response_text = ""
212
- for chunk in response:
213
- response_text += chunk
214
- print(f"\r{model:<50} {'Testing...':<10}", end="", flush=True)
215
-
216
- if response_text and len(response_text.strip()) > 0:
217
- status = "✓"
218
- # Truncate response if too long
219
- display_text = response_text.strip()[:50] + "..." if len(response_text.strip()) > 50 else response_text.strip()
220
- else:
221
- status = "✗"
222
- display_text = "Empty or invalid response"
223
- print(f"\r{model:<50} {status:<10} {display_text}")
224
- except Exception as e:
225
- print(f"\r{model:<50} {'✗':<10} {str(e)}")