webscout 6.3__py3-none-any.whl → 6.4__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/AIauto.py +191 -176
- webscout/AIbase.py +0 -197
- webscout/AIutel.py +488 -1130
- webscout/Bing_search.py +250 -153
- webscout/DWEBS.py +151 -19
- webscout/Extra/__init__.py +2 -1
- webscout/Extra/autocoder/__init__.py +9 -0
- webscout/Extra/autocoder/autocoder_utiles.py +121 -0
- webscout/Extra/autocoder/rawdog.py +681 -0
- webscout/Extra/autollama.py +246 -195
- webscout/Extra/gguf.py +441 -416
- webscout/LLM.py +206 -43
- webscout/Litlogger/__init__.py +681 -0
- webscout/Provider/DARKAI.py +1 -1
- webscout/Provider/EDITEE.py +1 -1
- webscout/Provider/NinjaChat.py +1 -1
- webscout/Provider/PI.py +221 -207
- webscout/Provider/Perplexity.py +598 -598
- webscout/Provider/RoboCoders.py +206 -0
- webscout/Provider/TTI/AiForce/__init__.py +22 -0
- webscout/Provider/TTI/AiForce/async_aiforce.py +257 -0
- webscout/Provider/TTI/AiForce/sync_aiforce.py +242 -0
- webscout/Provider/TTI/Nexra/__init__.py +22 -0
- webscout/Provider/TTI/Nexra/async_nexra.py +286 -0
- webscout/Provider/TTI/Nexra/sync_nexra.py +258 -0
- webscout/Provider/TTI/PollinationsAI/__init__.py +23 -0
- webscout/Provider/TTI/PollinationsAI/async_pollinations.py +330 -0
- webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +285 -0
- webscout/Provider/TTI/__init__.py +2 -4
- webscout/Provider/TTI/artbit/__init__.py +22 -0
- webscout/Provider/TTI/artbit/async_artbit.py +184 -0
- webscout/Provider/TTI/artbit/sync_artbit.py +176 -0
- webscout/Provider/TTI/blackbox/__init__.py +4 -0
- webscout/Provider/TTI/blackbox/async_blackbox.py +212 -0
- webscout/Provider/TTI/{blackboximage.py → blackbox/sync_blackbox.py} +199 -153
- webscout/Provider/TTI/deepinfra/__init__.py +4 -0
- webscout/Provider/TTI/deepinfra/async_deepinfra.py +227 -0
- webscout/Provider/TTI/deepinfra/sync_deepinfra.py +199 -0
- webscout/Provider/TTI/huggingface/__init__.py +22 -0
- webscout/Provider/TTI/huggingface/async_huggingface.py +199 -0
- webscout/Provider/TTI/huggingface/sync_huggingface.py +195 -0
- webscout/Provider/TTI/imgninza/__init__.py +4 -0
- webscout/Provider/TTI/imgninza/async_ninza.py +214 -0
- webscout/Provider/TTI/{imgninza.py → imgninza/sync_ninza.py} +209 -136
- webscout/Provider/TTI/talkai/__init__.py +4 -0
- webscout/Provider/TTI/talkai/async_talkai.py +229 -0
- webscout/Provider/TTI/talkai/sync_talkai.py +207 -0
- webscout/Provider/__init__.py +146 -139
- webscout/Provider/askmyai.py +2 -2
- webscout/Provider/cerebras.py +227 -219
- webscout/Provider/llama3mitril.py +0 -1
- webscout/Provider/mhystical.py +176 -0
- webscout/Provider/perplexitylabs.py +265 -0
- webscout/Provider/twitterclone.py +251 -245
- webscout/Provider/typegpt.py +359 -0
- webscout/__init__.py +28 -23
- webscout/__main__.py +5 -5
- webscout/cli.py +252 -280
- webscout/conversation.py +227 -0
- webscout/exceptions.py +161 -29
- webscout/litagent/__init__.py +172 -0
- webscout/litprinter/__init__.py +831 -0
- webscout/optimizers.py +270 -0
- webscout/prompt_manager.py +279 -0
- webscout/swiftcli/__init__.py +810 -0
- webscout/transcriber.py +479 -551
- webscout/update_checker.py +125 -0
- webscout/version.py +1 -1
- {webscout-6.3.dist-info → webscout-6.4.dist-info}/METADATA +26 -45
- {webscout-6.3.dist-info → webscout-6.4.dist-info}/RECORD +75 -45
- webscout/Provider/TTI/AIuncensoredimage.py +0 -103
- webscout/Provider/TTI/Nexra.py +0 -120
- webscout/Provider/TTI/PollinationsAI.py +0 -138
- webscout/Provider/TTI/WebSimAI.py +0 -142
- webscout/Provider/TTI/aiforce.py +0 -160
- webscout/Provider/TTI/artbit.py +0 -141
- webscout/Provider/TTI/deepinfra.py +0 -148
- webscout/Provider/TTI/huggingface.py +0 -155
- webscout/Provider/TTI/talkai.py +0 -116
- webscout/models.py +0 -23
- /webscout/{g4f.py → gpt4free.py} +0 -0
- {webscout-6.3.dist-info → webscout-6.4.dist-info}/LICENSE.md +0 -0
- {webscout-6.3.dist-info → webscout-6.4.dist-info}/WHEEL +0 -0
- {webscout-6.3.dist-info → webscout-6.4.dist-info}/entry_points.txt +0 -0
- {webscout-6.3.dist-info → webscout-6.4.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Webscout Update Checker
|
|
3
|
+
A utility to check and compare Webscout versions
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import requests
|
|
7
|
+
import re
|
|
8
|
+
import subprocess
|
|
9
|
+
import sys
|
|
10
|
+
import os
|
|
11
|
+
from packaging import version
|
|
12
|
+
from typing import Optional
|
|
13
|
+
|
|
14
|
+
from webscout.Litlogger import LitLogger, LogFormat, ColorScheme
|
|
15
|
+
|
|
16
|
+
# Initialize logger with custom format
|
|
17
|
+
CUSTOM_FORMAT = """{message}"""
|
|
18
|
+
|
|
19
|
+
logger = LitLogger(
|
|
20
|
+
name="WebscoutUpdate",
|
|
21
|
+
format=CUSTOM_FORMAT,
|
|
22
|
+
color_scheme=ColorScheme.OCEAN,
|
|
23
|
+
level_styles={
|
|
24
|
+
"TRACE": "DIM",
|
|
25
|
+
"DEBUG": "NORMAL",
|
|
26
|
+
"INFO": "BOLD",
|
|
27
|
+
"SUCCESS": "BOLD",
|
|
28
|
+
"WARNING": "BOLD",
|
|
29
|
+
"ERROR": "BOLD",
|
|
30
|
+
"CRITICAL": "BOLD"
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
def get_installed_version() -> Optional[str]:
|
|
35
|
+
"""Get the installed version of webscout"""
|
|
36
|
+
try:
|
|
37
|
+
import importlib.metadata
|
|
38
|
+
return importlib.metadata.version('webscout')
|
|
39
|
+
except ImportError:
|
|
40
|
+
try:
|
|
41
|
+
import pkg_resources
|
|
42
|
+
return pkg_resources.get_distribution('webscout').version
|
|
43
|
+
except Exception:
|
|
44
|
+
logger.error("Could not determine installed version using pkg_resources")
|
|
45
|
+
return None
|
|
46
|
+
except Exception:
|
|
47
|
+
logger.error("Could not determine installed version using importlib.metadata")
|
|
48
|
+
return None
|
|
49
|
+
|
|
50
|
+
def get_webscout_version() -> Optional[str]:
|
|
51
|
+
"""Get the current webscout version from CLI"""
|
|
52
|
+
try:
|
|
53
|
+
result = subprocess.run(['webscout', '--version'],
|
|
54
|
+
capture_output=True,
|
|
55
|
+
text=True,
|
|
56
|
+
timeout=5)
|
|
57
|
+
if result.returncode == 0:
|
|
58
|
+
version_match = re.search(r'\d+\.\d+\.\d+', result.stdout)
|
|
59
|
+
if version_match:
|
|
60
|
+
return version_match.group(0)
|
|
61
|
+
except (subprocess.TimeoutExpired, subprocess.SubprocessError, FileNotFoundError) as e:
|
|
62
|
+
logger.error(f"Failed to get version from CLI: {str(e)}")
|
|
63
|
+
return None
|
|
64
|
+
|
|
65
|
+
def get_pypi_version() -> Optional[str]:
|
|
66
|
+
"""Get the latest version from PyPI"""
|
|
67
|
+
try:
|
|
68
|
+
response = requests.get(
|
|
69
|
+
"https://pypi.org/pypi/webscout/json",
|
|
70
|
+
timeout=10
|
|
71
|
+
)
|
|
72
|
+
response.raise_for_status()
|
|
73
|
+
return response.json()['info']['version']
|
|
74
|
+
except requests.RequestException as e:
|
|
75
|
+
logger.error(f"Failed to fetch PyPI version: {str(e)}")
|
|
76
|
+
except (KeyError, ValueError) as e:
|
|
77
|
+
logger.error(f"Failed to parse PyPI response: {str(e)}")
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
def version_compare(v1: str, v2: str) -> int:
|
|
81
|
+
"""Compare two version strings"""
|
|
82
|
+
try:
|
|
83
|
+
return -1 if version.parse(v1) < version.parse(v2) else 1
|
|
84
|
+
except version.InvalidVersion:
|
|
85
|
+
return 0
|
|
86
|
+
|
|
87
|
+
def display_version_info(installed: Optional[str], current: Optional[str], latest: Optional[str]) -> None:
|
|
88
|
+
"""Display version information"""
|
|
89
|
+
if installed:
|
|
90
|
+
logger.info(f"Currently using Webscout version {installed}")
|
|
91
|
+
|
|
92
|
+
if latest and installed:
|
|
93
|
+
if version_compare(installed, latest) < 0:
|
|
94
|
+
logger.warning(
|
|
95
|
+
f"A new version of Webscout is available: {latest}\n"
|
|
96
|
+
f"To update, run: pip install --upgrade webscout"
|
|
97
|
+
)
|
|
98
|
+
else:
|
|
99
|
+
logger.success("You're running the latest version!")
|
|
100
|
+
|
|
101
|
+
def check_for_updates() -> None:
|
|
102
|
+
"""Check for Webscout updates"""
|
|
103
|
+
logger.info("Checking for Webscout updates...")
|
|
104
|
+
|
|
105
|
+
installed_version = get_installed_version()
|
|
106
|
+
current_version = get_webscout_version()
|
|
107
|
+
latest_version = get_pypi_version()
|
|
108
|
+
|
|
109
|
+
if not installed_version:
|
|
110
|
+
logger.error("Could not determine installed Webscout version")
|
|
111
|
+
return
|
|
112
|
+
|
|
113
|
+
if not latest_version:
|
|
114
|
+
logger.error("Could not determine latest Webscout version from PyPI")
|
|
115
|
+
return
|
|
116
|
+
|
|
117
|
+
display_version_info(installed_version, current_version, latest_version)
|
|
118
|
+
|
|
119
|
+
if __name__ == "__main__":
|
|
120
|
+
try:
|
|
121
|
+
check_for_updates()
|
|
122
|
+
except KeyboardInterrupt:
|
|
123
|
+
logger.warning("Update check cancelled by user")
|
|
124
|
+
except Exception as e:
|
|
125
|
+
logger.error(f"An unexpected error occurred: {str(e)}")
|
webscout/version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "6.
|
|
1
|
+
__version__ = "6.4"
|
|
2
2
|
__prog__ = "webscout"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: webscout
|
|
3
|
-
Version: 6.
|
|
3
|
+
Version: 6.4
|
|
4
4
|
Summary: Search for anything using Google, DuckDuckGo, phind.com, Contains AI models, can transcribe yt videos, temporary email and phone number generation, has TTS support, webai (terminal gpt and open interpreter) and offline LLMs and more
|
|
5
5
|
Author: OEvortex
|
|
6
6
|
Author-email: helpingai5@gmail.com
|
|
@@ -24,7 +24,8 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
24
24
|
Requires-Python: >=3.7
|
|
25
25
|
Description-Content-Type: text/markdown
|
|
26
26
|
License-File: LICENSE.md
|
|
27
|
-
Requires-Dist:
|
|
27
|
+
Requires-Dist: mistune
|
|
28
|
+
Requires-Dist: tenacity
|
|
28
29
|
Requires-Dist: curl-cffi
|
|
29
30
|
Requires-Dist: nest-asyncio
|
|
30
31
|
Requires-Dist: g4f>=0.2.2.3
|
|
@@ -45,21 +46,17 @@ Requires-Dist: playsound
|
|
|
45
46
|
Requires-Dist: ollama
|
|
46
47
|
Requires-Dist: pyfiglet
|
|
47
48
|
Requires-Dist: pillow
|
|
48
|
-
Requires-Dist: requests-html
|
|
49
49
|
Requires-Dist: bson
|
|
50
50
|
Requires-Dist: cloudscraper
|
|
51
51
|
Requires-Dist: emoji
|
|
52
52
|
Requires-Dist: openai
|
|
53
53
|
Requires-Dist: prompt-toolkit
|
|
54
|
-
Requires-Dist: fake-useragent
|
|
55
54
|
Requires-Dist: primp
|
|
56
55
|
Requires-Dist: pyreqwest-impersonate
|
|
57
56
|
Requires-Dist: lxml-html-clean
|
|
58
57
|
Requires-Dist: gradio-client
|
|
59
58
|
Requires-Dist: psutil
|
|
60
|
-
Requires-Dist: colorlog
|
|
61
59
|
Requires-Dist: yaspin
|
|
62
|
-
Requires-Dist: cerebras-cloud-sdk
|
|
63
60
|
Provides-Extra: dev
|
|
64
61
|
Requires-Dist: ruff>=0.1.6; extra == "dev"
|
|
65
62
|
Requires-Dist: pytest>=7.4.2; extra == "dev"
|
|
@@ -119,7 +116,11 @@ Requires-Dist: unicorn; extra == "local"
|
|
|
119
116
|
* **GGUF Conversion & Quantization:** Convert and quantize Hugging Face models to GGUF format.
|
|
120
117
|
* **Autollama:** Download Hugging Face models and automatically convert them for Ollama compatibility.
|
|
121
118
|
* **Function Calling (Beta):** Experiment with function calling capabilities for enhanced AI interactions.
|
|
122
|
-
|
|
119
|
+
* **[SwiftCLI](webscout/swiftcli/Readme.md):** A powerful and elegant CLI framework that makes it easy to create beautiful command-line interfaces.
|
|
120
|
+
* **[LitPrinter](webscout/litprinter/Readme.md):** Provides beautiful, styled console output with rich formatting and colors
|
|
121
|
+
* **[LitLogger](webscout/litlogger/Readme.md):** Simplifies logging with customizable formats and color schemes
|
|
122
|
+
* **[LitAgent](webscout/litagent/Readme.md):** Powerful and modern user agent generator that keeps your requests fresh and undetectable
|
|
123
|
+
* **[Text-to-Image](webscout/Provider/TTI/README.md):** Generate high-quality images using a wide range of AI art providers
|
|
123
124
|
|
|
124
125
|
## ⚙️ Installation
|
|
125
126
|
```python
|
|
@@ -817,17 +818,6 @@ with WEBS() as WEBS:
|
|
|
817
818
|
___
|
|
818
819
|
</details>
|
|
819
820
|
|
|
820
|
-
### 🖼️ Text to Images - DeepInfraImager, PollinationsAI, BlackboxAIImager, AiForceimager, NexraImager, HFimager, ArtbitImager, NinjaImager, WebSimAI, AIUncensoredImager, TalkaiImager
|
|
821
|
-
|
|
822
|
-
**Every TTI provider has the same usage code, you just need to change the import.**
|
|
823
|
-
|
|
824
|
-
```python
|
|
825
|
-
from webscout import DeepInfraImager
|
|
826
|
-
bot = DeepInfraImager()
|
|
827
|
-
resp = bot.generate("AI-generated image - webscout", 1)
|
|
828
|
-
print(bot.save(resp))
|
|
829
|
-
```
|
|
830
|
-
|
|
831
821
|
### 🗣️ Text to Speech - Voicepods, StreamElements
|
|
832
822
|
|
|
833
823
|
```python
|
|
@@ -936,9 +926,9 @@ ai.tool_registry.register_tool(
|
|
|
936
926
|
parameters={
|
|
937
927
|
"type": "object",
|
|
938
928
|
"properties": {
|
|
939
|
-
"location": {"
|
|
929
|
+
"location": {"title": "Location", "type": "string"}
|
|
940
930
|
},
|
|
941
|
-
"required": ["location"]
|
|
931
|
+
"required": ["location"]
|
|
942
932
|
},
|
|
943
933
|
)
|
|
944
934
|
|
|
@@ -1019,8 +1009,7 @@ meta_ai = Meta(fb_email=fb_email, fb_password=fb_password)
|
|
|
1019
1009
|
# Text prompt with web search
|
|
1020
1010
|
response = meta_ai.ask("what is currently happning in bangladesh in aug 2024")
|
|
1021
1011
|
print(response["message"]) # Access the text message
|
|
1022
|
-
print("Sources:", response["sources"]) # Access sources (if
|
|
1023
|
-
any)
|
|
1012
|
+
print("Sources:", response["sources"]) # Access sources (if any)
|
|
1024
1013
|
|
|
1025
1014
|
# Image generation
|
|
1026
1015
|
response = meta_ai.ask("Create an image of a cat wearing a hat.")
|
|
@@ -1355,36 +1344,28 @@ if __name__ == "__main__":
|
|
|
1355
1344
|
main()
|
|
1356
1345
|
```
|
|
1357
1346
|
|
|
1358
|
-
### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Genspark, Upstage, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, AIUncensored, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus
|
|
1347
|
+
### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, Editee, AI21, Chatify, Cerebras, X0GPT, Lepton, GEMINIAPI, Cleeai, Elmo, Genspark, Upstage, Free2GPT, Bing, DiscordRocks, GPTWeb, LlamaTutor, PromptRefine, AIUncensored, TutorAI, ChatGPTES, Bagoodex, ChatHub, AmigoChat, AIMathGPT, GaurishCerebras, NinjaChat, GeminiPro, Talkai, LLMChat, AskMyAI, Llama3Mitril, Marcus, PerplexityLabs, TypeGPT, Mhystical
|
|
1359
1348
|
|
|
1360
1349
|
Code is similar to other providers.
|
|
1361
1350
|
|
|
1362
1351
|
### `LLM`
|
|
1363
1352
|
|
|
1364
1353
|
```python
|
|
1365
|
-
from webscout.LLM import LLM
|
|
1366
|
-
|
|
1367
|
-
#
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
#
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
# Define the messages to be sent
|
|
1379
|
-
messages = [
|
|
1380
|
-
{"role": "user", "content": user_input}
|
|
1354
|
+
from webscout.LLM import LLM, VLM
|
|
1355
|
+
|
|
1356
|
+
# Chat with text
|
|
1357
|
+
llm = LLM("meta-llama/Meta-Llama-3-70B-Instruct")
|
|
1358
|
+
response = llm.chat([{"role": "user", "content": "What's good?"}])
|
|
1359
|
+
|
|
1360
|
+
# Chat with images
|
|
1361
|
+
vlm = VLM("cogvlm-grounding-generalist")
|
|
1362
|
+
response = vlm.chat([{
|
|
1363
|
+
"role": "user",
|
|
1364
|
+
"content": [
|
|
1365
|
+
{"type": "image", "image_url": "cool_pic.jpg"},
|
|
1366
|
+
{"type": "text", "text": "What's in this image?"}
|
|
1381
1367
|
]
|
|
1382
|
-
|
|
1383
|
-
# Use the mistral_chat method to get the response
|
|
1384
|
-
response = llm.chat(messages)
|
|
1385
|
-
|
|
1386
|
-
# Print the response
|
|
1387
|
-
print("AI: ", response)
|
|
1368
|
+
}])
|
|
1388
1369
|
```
|
|
1389
1370
|
|
|
1390
1371
|
## 💻 Local-LLM
|
|
@@ -1,33 +1,40 @@
|
|
|
1
|
-
webscout/AIauto.py,sha256=
|
|
2
|
-
webscout/AIbase.py,sha256=
|
|
3
|
-
webscout/AIutel.py,sha256=
|
|
1
|
+
webscout/AIauto.py,sha256=vmTVbtxtYG2lIye67poeDEJg86y75TZ0_uYR8EQV6To,6994
|
|
2
|
+
webscout/AIbase.py,sha256=CV7YNdRH0SRQTPYtVqVGOQirSXIQW86Fqxl3DcrHwns,3405
|
|
3
|
+
webscout/AIutel.py,sha256=VZ8KGsBa5WrIK2J9BTjgEwy5ANq6_xwROc0Q6ThJdTU,12918
|
|
4
4
|
webscout/Bard.py,sha256=CmDhKC67Ki2xA8Rkme6EC-gLmq3PhAAAGd5tcpJ0KJo,13234
|
|
5
|
-
webscout/Bing_search.py,sha256=
|
|
6
|
-
webscout/DWEBS.py,sha256=
|
|
7
|
-
webscout/LLM.py,sha256=
|
|
5
|
+
webscout/Bing_search.py,sha256=CAxpfn8Y7lbDqWaPrY7rIZ0gD2txAIrKnVJNfJGhqHE,9987
|
|
6
|
+
webscout/DWEBS.py,sha256=wOoiCEujF3RqgExT-yNsbOcF5fBJ81a-OGHngcMRUxI,17896
|
|
7
|
+
webscout/LLM.py,sha256=essCz1nakJfmoKLJFguyJnba0HR4AfY6BVU0CEGDCcQ,16336
|
|
8
8
|
webscout/YTdownloader.py,sha256=qVROwMmRpHy95NsbzZvpidEKuqMwFTCi7bW4jJgbl44,39152
|
|
9
|
-
webscout/__init__.py,sha256=
|
|
10
|
-
webscout/__main__.py,sha256=
|
|
11
|
-
webscout/cli.py,sha256=
|
|
12
|
-
webscout/
|
|
13
|
-
webscout/
|
|
14
|
-
webscout/
|
|
9
|
+
webscout/__init__.py,sha256=sI591wOceWeVQkYpui4BCja_RZ0tYTiAnTFlTmkmnXw,730
|
|
10
|
+
webscout/__main__.py,sha256=pBm2E3ZZiMcCH37b1YCz7qKdKdX_i_S5En6fZDeJKFw,103
|
|
11
|
+
webscout/cli.py,sha256=bLaSGs24wxfZlK37_WPPr1jjfbv50nfbxkeSkED0jX0,12456
|
|
12
|
+
webscout/conversation.py,sha256=fWWrBwhZztasvW7aLSLsTLpHzuTeuV4jGXPWzXukNj8,8088
|
|
13
|
+
webscout/exceptions.py,sha256=qdyWoLV1nEPffb5vz9cu9EfBwIwZ4nmcCinqeJDBWTo,5182
|
|
14
|
+
webscout/gpt4free.py,sha256=NNcnlOtIWV9R93UsBN4jBGBEJ9sJ-Np1WbgjkGVDcYc,24487
|
|
15
|
+
webscout/optimizers.py,sha256=_5rC1phrBNEEJWmTRtcgLwE_dXhanekwpFwPDP0Mjuw,8899
|
|
16
|
+
webscout/prompt_manager.py,sha256=I1x6gtioHVpMOYKqQQy3HSidEUearXwyl3EyyWY1IAk,9527
|
|
15
17
|
webscout/requestsHTMLfix.py,sha256=LZ9uynkwpGqVS2uFB5bMjdh6gLjSMerHPEqzVCvICIs,27961
|
|
16
18
|
webscout/tempid.py,sha256=7ZTN2eAYqUO2deSdzzhZfgDRxE65OOhGuTBD7f8bTCM,5004
|
|
17
|
-
webscout/transcriber.py,sha256=
|
|
19
|
+
webscout/transcriber.py,sha256=3vhn-lOfDCYLseKih-3Sl6MVoXn3psEr_tYgIpCnT4o,19205
|
|
20
|
+
webscout/update_checker.py,sha256=Fat0nZFumEDAWHK8B3g0bdTEdf82ndny-E3aC8jcXRw,4064
|
|
18
21
|
webscout/utils.py,sha256=LVW7U0XcGYqigqxV6D5YXeGMrc_mt7PnNG_YnKf9bBM,3059
|
|
19
|
-
webscout/version.py,sha256=
|
|
22
|
+
webscout/version.py,sha256=jbNt2NK5UiiqthANYjhChx2dFMSJmx70DMxcAAk5kEQ,44
|
|
20
23
|
webscout/webai.py,sha256=Yxm2vb03ZF-WGy25Q4OQjtZgbQnsN2f38wWvOkHdrbY,87743
|
|
21
24
|
webscout/webscout_search.py,sha256=HHdO9XLToC_9nIMM_SaTOKKfzdhrKjb7o8Zi3ZD1O7Y,44744
|
|
22
25
|
webscout/webscout_search_async.py,sha256=2-RCa9Deahhw3Bti78kXfVaX8y3Aygy4L7HeCaITk9M,14519
|
|
23
26
|
webscout/Agents/Onlinesearcher.py,sha256=dzb08Bz9QMMeP1mQTxIK2mkpwthhNJJND7TIRmM3dwA,7942
|
|
24
27
|
webscout/Agents/__init__.py,sha256=qJXx2Q1yAupE0FJabXvs49Nxwm3IsREyuMWp8Q1VYiE,60
|
|
25
28
|
webscout/Agents/functioncall.py,sha256=npDMS4xwi0FeREK56A-nJ60918U6seC0CV9PsG3KpCg,7861
|
|
26
|
-
webscout/Extra/__init__.py,sha256=
|
|
27
|
-
webscout/Extra/autollama.py,sha256=
|
|
28
|
-
webscout/Extra/gguf.py,sha256=
|
|
29
|
+
webscout/Extra/__init__.py,sha256=zCTSLk-Ej7GkUr_HhVSziZfRK0Hy4r3ToghLlMSxbaY,125
|
|
30
|
+
webscout/Extra/autollama.py,sha256=Mcj7YT8mYL5J7Rg_Wmi3Ppcfh1WK6UWcrbUZySetwuU,8198
|
|
31
|
+
webscout/Extra/gguf.py,sha256=1mCRb-PkBB98g5zN_ojmMhHKCi4Kh__m6uRcQoABtQI,15627
|
|
29
32
|
webscout/Extra/weather.py,sha256=q-h5UXL2XEBEgoqvEeLRut-ThieNzH_GNfOEIeghKLM,6000
|
|
30
33
|
webscout/Extra/weather_ascii.py,sha256=Aed-_EUzvTEjBXbOpNRxkJBLa6fXsclknXP06HnQD18,808
|
|
34
|
+
webscout/Extra/autocoder/__init__.py,sha256=jcDJEXVde_ATffVNjV4vQMvvWH0UDW-HRz5OKNoZ7cg,218
|
|
35
|
+
webscout/Extra/autocoder/autocoder_utiles.py,sha256=hGAnOWJISuHm0UOKSWwre9_wCqJqDGYVbvyKJ6GrnuQ,4268
|
|
36
|
+
webscout/Extra/autocoder/rawdog.py,sha256=Q0p2F5sa21KOVHnBP88-cRGCMBX2SKBiEmkwXkMu1xU,25159
|
|
37
|
+
webscout/Litlogger/__init__.py,sha256=Q5FPfGKktfFyvqa6kMbye9LLzuy6VXGOgE3Q-uBGD2E,23928
|
|
31
38
|
webscout/Local/__init__.py,sha256=Mte7RYlelBND2yof_HJ3MMZYBVeTISNFU2-LiFKSbU4,228
|
|
32
39
|
webscout/Local/_version.py,sha256=jk6j7Rb0VWezDG1ZFhgYJpZiyL5rCivaiA86_jJecmk,139
|
|
33
40
|
webscout/Local/formats.py,sha256=yJJW2VoN27u6oGiPNa8PrhVuX0Aol9VExHjJ0AeTnLw,26687
|
|
@@ -45,11 +52,11 @@ webscout/Provider/ChatGPTES.py,sha256=t_Qjn1ShNX0uYp5dJzv6Y7DPQM8HUTgvcBauhFz0-I
|
|
|
45
52
|
webscout/Provider/Chatify.py,sha256=QYgZAEmhLkEnR7oyr-qUs6OSHoNJm2BgMr41f84Ntbg,6370
|
|
46
53
|
webscout/Provider/Cloudflare.py,sha256=KZ2aZj-K5se_Xn8GPozJ3xRx2lJhf36uIu0Tyx-jH54,10801
|
|
47
54
|
webscout/Provider/Cohere.py,sha256=oL9kAv--RSkEQxwkPTq1Wi57Wkgg0WNvL82CpTj22YY,8264
|
|
48
|
-
webscout/Provider/DARKAI.py,sha256=
|
|
55
|
+
webscout/Provider/DARKAI.py,sha256=Bn2p5yU1MMiaS-meQySCVPjtc0uOfjJyxXA0kSaO_P0,9041
|
|
49
56
|
webscout/Provider/Deepinfra.py,sha256=djm8LSDj6aummNSym4HrJHZD2CCVJ_er1oxiFLiq1N4,6389
|
|
50
57
|
webscout/Provider/Deepseek.py,sha256=axBNDR_5N_Ge9iDopLHhR0kCAD0meq787UNh8oLqqGI,9142
|
|
51
58
|
webscout/Provider/DiscordRocks.py,sha256=fRkVBCyDMZf0SoaNPK7KXAsh8mQj0JWDb7ifYpL9PQQ,11372
|
|
52
|
-
webscout/Provider/EDITEE.py,sha256=
|
|
59
|
+
webscout/Provider/EDITEE.py,sha256=9rq7c84XoIoRBqd0qgW-Ebu3lyffhicSOtUvMtAjO0s,7742
|
|
53
60
|
webscout/Provider/Farfalle.py,sha256=eVmSB4Dq6P2epo8dd6CyCtyxvOMFwvk6f0Ikb9nZ2d0,9017
|
|
54
61
|
webscout/Provider/Free2GPT.py,sha256=Lf8dd9iacry_GRr6CT86Cjcp-oNzLyw1O_TWIPDFDxk,9037
|
|
55
62
|
webscout/Provider/GPTWeb.py,sha256=xh_mnBko6RDyz2v3KhMux-yIipipkZfVVVoUJWkbzcQ,7466
|
|
@@ -59,23 +66,24 @@ webscout/Provider/Koboldai.py,sha256=gpRgyDe4OQWwNqT7MWnNrJx4dnFmCW23KUx0Ezjgchk
|
|
|
59
66
|
webscout/Provider/Llama.py,sha256=N01p3ZVD1HgRnNNxhjRhBVD4m_qiextdyF1KDfJlqbE,7703
|
|
60
67
|
webscout/Provider/Llama3.py,sha256=fU1iyKflFHDeSqa32M6UE2JtADZB0B7rcG5HYj5MWSQ,7581
|
|
61
68
|
webscout/Provider/Marcus.py,sha256=6LvBYnAcbwVYiXoQ8ZrprefJ6zS2KdveiEZauClNtSE,5045
|
|
62
|
-
webscout/Provider/NinjaChat.py,sha256=
|
|
69
|
+
webscout/Provider/NinjaChat.py,sha256=tMja5xItus6WoKJm_fhILLoGyPdplikqr-nxtuUziNU,8617
|
|
63
70
|
webscout/Provider/OLLAMA.py,sha256=RQXJt-PJYnA15_IXhUy4mM9qwm4PcBMfINaZm2KG6zE,7018
|
|
64
71
|
webscout/Provider/Openai.py,sha256=32uxZmZOovzshMQmqDcJ39If7N_UW4B3EeYmaxP_GwE,19983
|
|
65
|
-
webscout/Provider/PI.py,sha256=
|
|
66
|
-
webscout/Provider/Perplexity.py,sha256=
|
|
72
|
+
webscout/Provider/PI.py,sha256=_99QJ3tK6OPDakHpbgb49nhWLxD97N8ynMhlDWSnscA,8584
|
|
73
|
+
webscout/Provider/Perplexity.py,sha256=ZdKRcezfp1KsvJOKkcalH2U9Krz5NuHz_M7fNAw8wRk,20871
|
|
67
74
|
webscout/Provider/Phind.py,sha256=NA_b3B4h-kutX6wdoEg4THPfZggl2UeXPbramzZ6oiU,19297
|
|
68
75
|
webscout/Provider/PizzaGPT.py,sha256=tEuEJAGbv-mTd479i3EgaqHd4NwgkrmMW0fpSsGm_N0,7207
|
|
69
76
|
webscout/Provider/RUBIKSAI.py,sha256=fHCOAFWGXIESA05Bmuqtx6ZChnWomHOMwndfTLv1Hg8,8517
|
|
70
77
|
webscout/Provider/Reka.py,sha256=nL0PJ96iQcaWWkCP0M30AAoeIRV7IJQAph7MkwkwRVI,8533
|
|
78
|
+
webscout/Provider/RoboCoders.py,sha256=vH1B0cKzQW6fU1TWwpUlnuQFW3uirzIWj0WIpiPal1s,7957
|
|
71
79
|
webscout/Provider/TeachAnything.py,sha256=u5HxlVdOnRWXzA-cRSRhhdnvdsfafJ_4wr9qKIuW45s,6743
|
|
72
80
|
webscout/Provider/Youchat.py,sha256=G6I4TqjZuX3refFF3SkOgl_YXY57hjsMg_wRjPgqWIE,9014
|
|
73
|
-
webscout/Provider/__init__.py,sha256=
|
|
81
|
+
webscout/Provider/__init__.py,sha256=rxQQnivC46YK9oUtRZ6jRXQpLR4psQOXRA1WVL-ll00,3045
|
|
74
82
|
webscout/Provider/ai4chat.py,sha256=av96iS4QPt9IzhcswowmDY2F8IUSLl1YVHZ4bAbfO-s,8140
|
|
75
83
|
webscout/Provider/aimathgpt.py,sha256=BdXNxEHQP11p6m0wl2Q-uben46A6lMKOg89utV1S7aI,7320
|
|
76
|
-
webscout/Provider/askmyai.py,sha256=
|
|
84
|
+
webscout/Provider/askmyai.py,sha256=XDxLQfIztI-jwergalUfNiMOwNEw62jGTN4yTlar8Po,5895
|
|
77
85
|
webscout/Provider/bagoodex.py,sha256=OdYIyvypX-Vkok9zAr6F5NwFQx_z0bKhiw8U4tTFw5o,5023
|
|
78
|
-
webscout/Provider/cerebras.py,sha256=
|
|
86
|
+
webscout/Provider/cerebras.py,sha256=cyUIgGdVMAmBgTifwuPW-XGC2SKGL2CbTKxY8al9ji4,7986
|
|
79
87
|
webscout/Provider/cleeai.py,sha256=tXs_XuYZ2ZGmSOSTS0yJ59qbvFCJusE7yZkIqALwUbE,8064
|
|
80
88
|
webscout/Provider/elmo.py,sha256=6C-j8xLfgyMjmv8jdjey0BPzl_UwEFpMEbBtYobfPd0,9387
|
|
81
89
|
webscout/Provider/felo_search.py,sha256=q_Mc4SgSnkCm5vu-CMmn9kVO3k0YCZqq_uMUrVUXInU,6888
|
|
@@ -87,38 +95,60 @@ webscout/Provider/julius.py,sha256=unD3UUnW8-Bie4o0__Vn7cXfqnaVvlE3MWI-LYGb5VE,8
|
|
|
87
95
|
webscout/Provider/koala.py,sha256=qBtqjTvhoMQdDE8qUH0XuNa_x2bic77d7CUjIVboask,10106
|
|
88
96
|
webscout/Provider/learnfastai.py,sha256=xANWSHF3e6kTKgwbAHYdjNWIwYvr5Bin0NDENmJvruE,9763
|
|
89
97
|
webscout/Provider/lepton.py,sha256=4RiQ4YNJljX558yhSUqws6pf1Yhf7pWIesa4SRQCry8,7590
|
|
90
|
-
webscout/Provider/llama3mitril.py,sha256=
|
|
98
|
+
webscout/Provider/llama3mitril.py,sha256=3Ur3GMkmSSTmyxJh1u9fF0xlZ7ssFF6Jxuoi587N1lw,6501
|
|
91
99
|
webscout/Provider/llamatutor.py,sha256=DijA4Y1CVDz-Ks8pACTSb6hnOxdQD2IHw-_ztRqhyPQ,8871
|
|
92
100
|
webscout/Provider/llmchat.py,sha256=gr7ewEPWWIfjhmpQXTOZJxQffol8MA1yWAIXdG3VZZo,7944
|
|
93
101
|
webscout/Provider/meta.py,sha256=TpoStt2nTUTCYxx4GI3IOQ7gX_Mi36pL7HhtjPvLtZQ,30717
|
|
102
|
+
webscout/Provider/mhystical.py,sha256=W3j28XOnVGlRPCSYrjA5N7okYEdTVeOw41HdocfvzqE,6555
|
|
103
|
+
webscout/Provider/perplexitylabs.py,sha256=3_qnAoh0nsp6uhqFqzwUyXBezAzmRFs4YSRxVIokYF8,9651
|
|
94
104
|
webscout/Provider/prefind.py,sha256=msw_kXO59Xz-xG5f72O3WIww-HVyUAj-WpByeLiCB1U,9306
|
|
95
105
|
webscout/Provider/promptrefine.py,sha256=NbRdvCsiiLIDwU39wzxch5yGwmLvbauljAl9vC73nR4,7714
|
|
96
106
|
webscout/Provider/talkai.py,sha256=UZNiuQm5IPX_VFPOIVc1SJNPTKAcbvaOVO9fsVDVXNY,7434
|
|
97
107
|
webscout/Provider/turboseek.py,sha256=yDOZcS3UqHcas_pH1AcB-XLD6C2FRzZxLp8rJOhUZGQ,8521
|
|
98
108
|
webscout/Provider/tutorai.py,sha256=ov-gRPAh22n8v7TWjeLdPnuHgCcaAsdpc2IfxfuSIEk,14716
|
|
99
|
-
webscout/Provider/twitterclone.py,sha256=
|
|
109
|
+
webscout/Provider/twitterclone.py,sha256=SsLFZ-PansLdhw0HHBrqZtrjI4ItiHvoHfQBroXHORw,9509
|
|
110
|
+
webscout/Provider/typegpt.py,sha256=JtI7AEr0bh47QV_yso-joR0U8jAm54bzkTvu31w0WyI,12764
|
|
100
111
|
webscout/Provider/upstage.py,sha256=rdH94hIwR98HKfar576WzVmgdB1DU2H8qaChUmJFtPc,9237
|
|
101
112
|
webscout/Provider/x0gpt.py,sha256=Z8U4MQIRfhHpdarHO6_BZ27veXMDEAneguJ7uFSD_HU,6478
|
|
102
113
|
webscout/Provider/yep.py,sha256=ge7a3cK02G6tbT0_q9glH7ujCx3QlgrqwBuHasQVYfQ,20581
|
|
103
|
-
webscout/Provider/TTI/
|
|
104
|
-
webscout/Provider/TTI/
|
|
105
|
-
webscout/Provider/TTI/
|
|
106
|
-
webscout/Provider/TTI/
|
|
107
|
-
webscout/Provider/TTI/__init__.py,sha256=
|
|
108
|
-
webscout/Provider/TTI/
|
|
109
|
-
webscout/Provider/TTI/
|
|
110
|
-
webscout/Provider/TTI/
|
|
111
|
-
webscout/Provider/TTI/
|
|
112
|
-
webscout/Provider/TTI/
|
|
113
|
-
webscout/Provider/TTI/
|
|
114
|
-
webscout/Provider/TTI/
|
|
114
|
+
webscout/Provider/TTI/__init__.py,sha256=9Hu_y-z6Ev2SQL5-IF_B4UDetoOl7hVclka1RatQ6_M,225
|
|
115
|
+
webscout/Provider/TTI/AiForce/__init__.py,sha256=Ukeas_Ny6VQBwCDEWuBMlWbeTki82ir1MtZdR2vNJPc,663
|
|
116
|
+
webscout/Provider/TTI/AiForce/async_aiforce.py,sha256=7Gpgu__TPNLZwxayqfOOkRcKpIdAfE1x8wE-RoylEAY,9647
|
|
117
|
+
webscout/Provider/TTI/AiForce/sync_aiforce.py,sha256=0SeeoCmKkqo1u6jGo5QzpPhdnn9BMABXImATfR-opqM,8674
|
|
118
|
+
webscout/Provider/TTI/Nexra/__init__.py,sha256=dg1B7OXmqYTDvAsprViJN5_KbMYOrqFcIm1wyOOxsxE,641
|
|
119
|
+
webscout/Provider/TTI/Nexra/async_nexra.py,sha256=ki07w-emMkleNftjhckMyU7JJ9WjjzsOLj-XL-JQns0,11011
|
|
120
|
+
webscout/Provider/TTI/Nexra/sync_nexra.py,sha256=TS2KXynQFDxVlOHHpPLK-q5ER5fWka9AZmSzUDISJQQ,9369
|
|
121
|
+
webscout/Provider/TTI/PollinationsAI/__init__.py,sha256=VO3fWVyZ_Cu3Ld9CnGTc1_5DnBmhmS-bAUj1jnYvwD0,801
|
|
122
|
+
webscout/Provider/TTI/PollinationsAI/async_pollinations.py,sha256=Z6mp2nO_MWXhNJhP_y-tKXC2lkG8JsU-mXD4MQNO-DY,12074
|
|
123
|
+
webscout/Provider/TTI/PollinationsAI/sync_pollinations.py,sha256=XLdiD1lKYJq3XjRo54OEE7l78pWW6Zo2Mk9zPgJYJec,10065
|
|
124
|
+
webscout/Provider/TTI/artbit/__init__.py,sha256=oqzoscH77DbVe2F9LPYFSjJmYrabyvw5Dk36TZAxatk,686
|
|
125
|
+
webscout/Provider/TTI/artbit/async_artbit.py,sha256=Xh3XSWAcIRW7A5MHLJBtA0_wZpU559G5vjDmursyVcE,6701
|
|
126
|
+
webscout/Provider/TTI/artbit/sync_artbit.py,sha256=hwWoxGOCMNqwdjJXwrzakiCMOAeg5XyVkM6BiDokRc0,6107
|
|
127
|
+
webscout/Provider/TTI/blackbox/__init__.py,sha256=mCyj_qNo37FVwopWXfrgvyissM2wtfgEEr5rMsvzVnI,151
|
|
128
|
+
webscout/Provider/TTI/blackbox/async_blackbox.py,sha256=VyE3zQbrGA7NlsKdU-86gwq0zk-esEu2I3Q0WL_6rT8,8354
|
|
129
|
+
webscout/Provider/TTI/blackbox/sync_blackbox.py,sha256=8KrnKAGpmcYn2IIwgQ9gzGmbQE5s8v03BGdb8ao4-UU,7450
|
|
130
|
+
webscout/Provider/TTI/deepinfra/__init__.py,sha256=YF6z3vLd6Ffo_o_SnfZq5LUDv1oOexJ3I-LChC8YGKs,149
|
|
131
|
+
webscout/Provider/TTI/deepinfra/async_deepinfra.py,sha256=PqzYhNLFzKKqxKpqGuTAzKgijCkbQUMOHgh2l3p_KgY,9008
|
|
132
|
+
webscout/Provider/TTI/deepinfra/sync_deepinfra.py,sha256=NJDxnqrISdkq_uM27GOMMPLBL5iTqGCugHgGy6mgHw0,7497
|
|
133
|
+
webscout/Provider/TTI/huggingface/__init__.py,sha256=SIrgnCvZx9r14UF8_SGuoXZo840dletfI-XkfHQuLg0,695
|
|
134
|
+
webscout/Provider/TTI/huggingface/async_huggingface.py,sha256=KzMsVi7-1s7sShgvbr31RGFu0ehlT8lnYQwTnhffabY,7691
|
|
135
|
+
webscout/Provider/TTI/huggingface/sync_huggingface.py,sha256=P5DZqSXfjwMsZAMZU1X_XZIYDEAFeY1YAGhnatECjzM,7325
|
|
136
|
+
webscout/Provider/TTI/imgninza/__init__.py,sha256=t5D_Y2JKf26UQG3kjzYY7nqGK1a8wsnsMt0-RXaWYPE,125
|
|
137
|
+
webscout/Provider/TTI/imgninza/async_ninza.py,sha256=iq87298sfVj986jpYxK1tUoWJOOuQxVKgb5za3z6HRw,8349
|
|
138
|
+
webscout/Provider/TTI/imgninza/sync_ninza.py,sha256=hTwLKaDhweYa3MDDCy627JQq0DHu3FT4jzFFBTjyjDM,8240
|
|
139
|
+
webscout/Provider/TTI/talkai/__init__.py,sha256=aHr_1M9Aq9MUgmIeUJaMdnvR0KPy48XHPrehf1s5udQ,131
|
|
140
|
+
webscout/Provider/TTI/talkai/async_talkai.py,sha256=go4uDXBEyGTtH4xSm9YI9hnLhIhSjGhQp0wpMhGl8Xk,9188
|
|
141
|
+
webscout/Provider/TTI/talkai/sync_talkai.py,sha256=D13sccDCecdGvG6-oKO-6y2aboTz2ztcotgC6T263GQ,8099
|
|
115
142
|
webscout/Provider/TTS/__init__.py,sha256=uGhNvQUrElyPfxoXs5V9xJpLuIyShe3yKHif5MaERxA,77
|
|
116
143
|
webscout/Provider/TTS/parler.py,sha256=NbS2IGhyZiTNQ3jNG3v1XWyVioHuBdsP0MIvQq7BKOg,3805
|
|
117
144
|
webscout/Provider/TTS/streamElements.py,sha256=aaE55W_bAzvL3-pl7tHs_xU7dSZB5_V7ix-usoe-4aM,7398
|
|
118
145
|
webscout/Provider/TTS/voicepod.py,sha256=wAAnpcpDyej72UjIRhEnEmcoJnUqp1lPCLiiwJMYJic,4343
|
|
119
|
-
webscout
|
|
120
|
-
webscout
|
|
121
|
-
webscout
|
|
122
|
-
webscout-6.
|
|
123
|
-
webscout-6.
|
|
124
|
-
webscout-6.
|
|
146
|
+
webscout/litagent/__init__.py,sha256=V-hXEmMp3UH1qKmJDtL0j6_mazmbyyRrIqKqt__oIRw,6091
|
|
147
|
+
webscout/litprinter/__init__.py,sha256=zD79i915U9qwNJBtQxa2QC_M37_oflw1Vpfx70W9PJU,30707
|
|
148
|
+
webscout/swiftcli/__init__.py,sha256=Yr_bsL1E3FaUh-xqWK_2ecG91IC2mSiP7eBa3en0mHc,27758
|
|
149
|
+
webscout-6.4.dist-info/LICENSE.md,sha256=5mkWS6cgjGxJClmN7n--h0beF3uFAOV_Ngr1YTK33Tk,9203
|
|
150
|
+
webscout-6.4.dist-info/METADATA,sha256=6ED0mCm-tYihFJ6CTs69vXuZayJJAaowImw2se0Ad_4,47806
|
|
151
|
+
webscout-6.4.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
|
|
152
|
+
webscout-6.4.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
|
|
153
|
+
webscout-6.4.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
|
|
154
|
+
webscout-6.4.dist-info/RECORD,,
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import requests
|
|
2
|
-
import json
|
|
3
|
-
import os
|
|
4
|
-
from datetime import datetime
|
|
5
|
-
from typing import List, Dict, Optional
|
|
6
|
-
|
|
7
|
-
from webscout.AIbase import ImageProvider
|
|
8
|
-
from webscout import exceptions
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class AIUncensoredImager(ImageProvider):
|
|
12
|
-
"""
|
|
13
|
-
Image provider for AIUncensored.info.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
def __init__(self, timeout: int = 60, proxies: dict = {}):
|
|
17
|
-
"""Initializes the AIUncensoredImager class."""
|
|
18
|
-
self.url = "https://twitterclone-i0wr.onrender.com/api/image"
|
|
19
|
-
self.headers = {
|
|
20
|
-
"Content-Type": "application/json",
|
|
21
|
-
"Accept": "*/*",
|
|
22
|
-
"Origin": "https://www.aiuncensored.info",
|
|
23
|
-
"Referer": "https://www.aiuncensored.info/",
|
|
24
|
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0",
|
|
25
|
-
}
|
|
26
|
-
self.session = requests.Session()
|
|
27
|
-
self.session.headers.update(self.headers)
|
|
28
|
-
self.session.proxies.update(proxies)
|
|
29
|
-
self.timeout = timeout
|
|
30
|
-
self.prompt = "AI-generated image - webscout"
|
|
31
|
-
self.image_extension = "jpg"
|
|
32
|
-
|
|
33
|
-
def generate(self, prompt: str, amount: int = 1) -> List[str]:
|
|
34
|
-
"""Generates image URLs from a prompt."""
|
|
35
|
-
|
|
36
|
-
assert bool(prompt), "Prompt cannot be null"
|
|
37
|
-
assert isinstance(amount, int) and amount > 0, "Amount must be a positive integer"
|
|
38
|
-
self.prompt = prompt
|
|
39
|
-
|
|
40
|
-
payload = {"prompt": prompt}
|
|
41
|
-
image_urls = []
|
|
42
|
-
|
|
43
|
-
try:
|
|
44
|
-
with self.session.post(self.url, json=payload, timeout=self.timeout) as response:
|
|
45
|
-
response.raise_for_status() # Raise HTTPError for bad responses
|
|
46
|
-
data = response.json()
|
|
47
|
-
image_url = data.get("image_url")
|
|
48
|
-
|
|
49
|
-
if not image_url:
|
|
50
|
-
raise exceptions.InvalidResponseError("No image URL in API response")
|
|
51
|
-
|
|
52
|
-
image_urls.append(image_url) # Only one image returned for now
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
except requests.exceptions.RequestException as e:
|
|
56
|
-
raise exceptions.APIConnectionError(f"Error during request: {e}")
|
|
57
|
-
except json.JSONDecodeError as e:
|
|
58
|
-
raise exceptions.InvalidResponseError(f"Invalid JSON response: {e}")
|
|
59
|
-
except Exception as e:
|
|
60
|
-
raise exceptions.FailedToGenerateResponseError(f"Unexpected error: {e}")
|
|
61
|
-
|
|
62
|
-
return image_urls
|
|
63
|
-
|
|
64
|
-
def save(
|
|
65
|
-
self,
|
|
66
|
-
response: List[str],
|
|
67
|
-
name: str = None,
|
|
68
|
-
dir: str = os.getcwd(),
|
|
69
|
-
filenames_prefix: str = "",
|
|
70
|
-
) -> List[str]:
|
|
71
|
-
"""Saves generated images."""
|
|
72
|
-
|
|
73
|
-
assert isinstance(response, list), f"Response should be a list, not {type(response)}"
|
|
74
|
-
name = self.prompt if name is None else name
|
|
75
|
-
os.makedirs(dir, exist_ok=True) #Create dir if needed
|
|
76
|
-
|
|
77
|
-
filenames = []
|
|
78
|
-
for i, img_url in enumerate(response):
|
|
79
|
-
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|
80
|
-
filename = f"{dir}/{name}_{i + 1}_{timestamp}.{self.image_extension}"
|
|
81
|
-
filenames.append(filenames_prefix + os.path.basename(filename))
|
|
82
|
-
|
|
83
|
-
try:
|
|
84
|
-
with self.session.get(img_url, stream=True, timeout=self.timeout) as img_response:
|
|
85
|
-
img_response.raise_for_status()
|
|
86
|
-
with open(filename, "wb") as f:
|
|
87
|
-
for chunk in img_response.iter_content(chunk_size=8192):
|
|
88
|
-
f.write(chunk)
|
|
89
|
-
except requests.exceptions.RequestException as e:
|
|
90
|
-
raise exceptions.FailedToSaveImageError(f"Error downloading/saving image: {e}")
|
|
91
|
-
|
|
92
|
-
return filenames
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if __name__ == "__main__":
|
|
96
|
-
imager = AIUncensoredImager()
|
|
97
|
-
prompt = "a photo of a cat sitting in a basket"
|
|
98
|
-
try:
|
|
99
|
-
image_urls = imager.generate(prompt, amount=1)
|
|
100
|
-
saved_filenames = imager.save(image_urls)
|
|
101
|
-
print(f"Saved filenames: {saved_filenames}")
|
|
102
|
-
except Exception as e:
|
|
103
|
-
print(f"An error occurred: {e}")
|