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.

Files changed (85) hide show
  1. webscout/AIauto.py +191 -176
  2. webscout/AIbase.py +0 -197
  3. webscout/AIutel.py +488 -1130
  4. webscout/Bing_search.py +250 -153
  5. webscout/DWEBS.py +151 -19
  6. webscout/Extra/__init__.py +2 -1
  7. webscout/Extra/autocoder/__init__.py +9 -0
  8. webscout/Extra/autocoder/autocoder_utiles.py +121 -0
  9. webscout/Extra/autocoder/rawdog.py +681 -0
  10. webscout/Extra/autollama.py +246 -195
  11. webscout/Extra/gguf.py +441 -416
  12. webscout/LLM.py +206 -43
  13. webscout/Litlogger/__init__.py +681 -0
  14. webscout/Provider/DARKAI.py +1 -1
  15. webscout/Provider/EDITEE.py +1 -1
  16. webscout/Provider/NinjaChat.py +1 -1
  17. webscout/Provider/PI.py +221 -207
  18. webscout/Provider/Perplexity.py +598 -598
  19. webscout/Provider/RoboCoders.py +206 -0
  20. webscout/Provider/TTI/AiForce/__init__.py +22 -0
  21. webscout/Provider/TTI/AiForce/async_aiforce.py +257 -0
  22. webscout/Provider/TTI/AiForce/sync_aiforce.py +242 -0
  23. webscout/Provider/TTI/Nexra/__init__.py +22 -0
  24. webscout/Provider/TTI/Nexra/async_nexra.py +286 -0
  25. webscout/Provider/TTI/Nexra/sync_nexra.py +258 -0
  26. webscout/Provider/TTI/PollinationsAI/__init__.py +23 -0
  27. webscout/Provider/TTI/PollinationsAI/async_pollinations.py +330 -0
  28. webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +285 -0
  29. webscout/Provider/TTI/__init__.py +2 -4
  30. webscout/Provider/TTI/artbit/__init__.py +22 -0
  31. webscout/Provider/TTI/artbit/async_artbit.py +184 -0
  32. webscout/Provider/TTI/artbit/sync_artbit.py +176 -0
  33. webscout/Provider/TTI/blackbox/__init__.py +4 -0
  34. webscout/Provider/TTI/blackbox/async_blackbox.py +212 -0
  35. webscout/Provider/TTI/{blackboximage.py → blackbox/sync_blackbox.py} +199 -153
  36. webscout/Provider/TTI/deepinfra/__init__.py +4 -0
  37. webscout/Provider/TTI/deepinfra/async_deepinfra.py +227 -0
  38. webscout/Provider/TTI/deepinfra/sync_deepinfra.py +199 -0
  39. webscout/Provider/TTI/huggingface/__init__.py +22 -0
  40. webscout/Provider/TTI/huggingface/async_huggingface.py +199 -0
  41. webscout/Provider/TTI/huggingface/sync_huggingface.py +195 -0
  42. webscout/Provider/TTI/imgninza/__init__.py +4 -0
  43. webscout/Provider/TTI/imgninza/async_ninza.py +214 -0
  44. webscout/Provider/TTI/{imgninza.py → imgninza/sync_ninza.py} +209 -136
  45. webscout/Provider/TTI/talkai/__init__.py +4 -0
  46. webscout/Provider/TTI/talkai/async_talkai.py +229 -0
  47. webscout/Provider/TTI/talkai/sync_talkai.py +207 -0
  48. webscout/Provider/__init__.py +146 -139
  49. webscout/Provider/askmyai.py +2 -2
  50. webscout/Provider/cerebras.py +227 -219
  51. webscout/Provider/llama3mitril.py +0 -1
  52. webscout/Provider/mhystical.py +176 -0
  53. webscout/Provider/perplexitylabs.py +265 -0
  54. webscout/Provider/twitterclone.py +251 -245
  55. webscout/Provider/typegpt.py +359 -0
  56. webscout/__init__.py +28 -23
  57. webscout/__main__.py +5 -5
  58. webscout/cli.py +252 -280
  59. webscout/conversation.py +227 -0
  60. webscout/exceptions.py +161 -29
  61. webscout/litagent/__init__.py +172 -0
  62. webscout/litprinter/__init__.py +831 -0
  63. webscout/optimizers.py +270 -0
  64. webscout/prompt_manager.py +279 -0
  65. webscout/swiftcli/__init__.py +810 -0
  66. webscout/transcriber.py +479 -551
  67. webscout/update_checker.py +125 -0
  68. webscout/version.py +1 -1
  69. {webscout-6.3.dist-info → webscout-6.4.dist-info}/METADATA +26 -45
  70. {webscout-6.3.dist-info → webscout-6.4.dist-info}/RECORD +75 -45
  71. webscout/Provider/TTI/AIuncensoredimage.py +0 -103
  72. webscout/Provider/TTI/Nexra.py +0 -120
  73. webscout/Provider/TTI/PollinationsAI.py +0 -138
  74. webscout/Provider/TTI/WebSimAI.py +0 -142
  75. webscout/Provider/TTI/aiforce.py +0 -160
  76. webscout/Provider/TTI/artbit.py +0 -141
  77. webscout/Provider/TTI/deepinfra.py +0 -148
  78. webscout/Provider/TTI/huggingface.py +0 -155
  79. webscout/Provider/TTI/talkai.py +0 -116
  80. webscout/models.py +0 -23
  81. /webscout/{g4f.py → gpt4free.py} +0 -0
  82. {webscout-6.3.dist-info → webscout-6.4.dist-info}/LICENSE.md +0 -0
  83. {webscout-6.3.dist-info → webscout-6.4.dist-info}/WHEEL +0 -0
  84. {webscout-6.3.dist-info → webscout-6.4.dist-info}/entry_points.txt +0 -0
  85. {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.3"
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
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: click
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": {"type": "string", "description": "The city and state, or zip code"}
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 ```python
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
- # Read the system message from the file
1368
- with open('system.txt', 'r') as file:
1369
- system_message = file.read()
1370
-
1371
- # Initialize the LLM class with the model name and system message
1372
- llm = LLM(model="microsoft/WizardLM-2-8x22B", system_message=system_message)
1373
-
1374
- while True:
1375
- # Get the user input
1376
- user_input = input("User: ")
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=omI2EGPwve3SR81BqNKo1W6Fg8t9yBJZiiZH0WmQnKE,6317
2
- webscout/AIbase.py,sha256=0CGo15pCdCP-XFPR7ehW2_OqABrmPeC83DcvXYy-TSk,10565
3
- webscout/AIutel.py,sha256=JLA3wqfSZJC_DMmI5Kjj8AxvQTMvs3F9MgqSn3koiZ4,38580
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=8pW3ZxFDfVsrtayEoAsAAoXoOCAGv2Jk_-HvOBNfCV4,6228
6
- webscout/DWEBS.py,sha256=aMaZDS5i1Mq8AGmonp8TQowJHg0AMduW79DUMmy8WCU,12416
7
- webscout/LLM.py,sha256=X_rSszZLS9FcaYYMtDR01VMrAFblY1foczuf-dvczQY,10901
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=RDVKYo6AygPaJDYS2yuzTC8rGP1iCHDpPEaMXH_hR58,603
10
- webscout/__main__.py,sha256=ZtTRgsRjUi2JOvYFLF1ZCh55Sdoz94I-BS-TlJC7WDU,126
11
- webscout/cli.py,sha256=ZIVkvFDW8Z2ZNfoMffIEiKsL2Az2hmvSDiNDogDUkm0,14911
12
- webscout/exceptions.py,sha256=b9P7Sp3CEFigHAeTQli2DPLBZ-3sh8L-UWUd2-2RcVY,793
13
- webscout/g4f.py,sha256=NNcnlOtIWV9R93UsBN4jBGBEJ9sJ-Np1WbgjkGVDcYc,24487
14
- webscout/models.py,sha256=5iQIdtedT18YuTZ3npoG7kLMwcrKwhQ7928dl_7qZW0,692
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=kRymTd69zCjXdduCf7Gabt93Kz1l5ubsCwfwqs-pHl8,22334
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=qPgOARn4KrjDhxYAq4-Bf3FmGgTxac06DdjtWAu19JM,44
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=GG1qUwS-HspT4TeeAIT4qFpM8PaO1ZdQhpelctaM7Rs,99
27
- webscout/Extra/autollama.py,sha256=75iEf2EYgMUZdcP1lB4doDHLSHoh6HsP4K0oxkLMEsU,6465
28
- webscout/Extra/gguf.py,sha256=NIymPQkEH3DQ2VfiXi_dhv6AwWwa5R2pkd730A_eVpI,15163
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=bogR9SikV0MuYBkyWWvbqV2oeJVSV5oiMrpwiG0HBcw,9061
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=8oFcuyoUPZUY78MXNPEt9gL9wifhHunxgI2xlKF82Bs,7749
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=XCFVmg1e0zgnuzDo8GeAAS5JmjtokpztushOqcxiP2c,8622
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=IodVvGR_RIZpGJ0ypFF4U6NBMZAZ5O1BlRFMelot8so,8364
66
- webscout/Provider/Perplexity.py,sha256=0WF8OLI_-Q_-toUPcMvUv35spr-oItjHT9v9OblOsEU,21469
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=3HQDKfUOGWipVCwNN4q9Nz3f5jCKN1pfyNol6S7we-8,2987
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=NmmiSprtttL6xG0miyGMwN3QTykvf8LLQw9xYbt1E2E,5954
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=r-xs7x_NxrS3iY72JPar7VCkP_iWJs6G_d3W3q-7JWA,8250
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=TFzGUUMG9hvxDYWYryjVj5h8SS0MEn1MAdKMRoGAxMo,6502
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=pgTo2ULxwZet8lTRqKUbgpJcpyRhhsK5QnNOR3CPVag,9517
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/AIuncensoredimage.py,sha256=eBpnmYYPgfbHCG6vVPSXqqqqfW6M-DOYHqC-mvboE7M,4047
104
- webscout/Provider/TTI/Nexra.py,sha256=4-ktIYnyWWLb8KHuyzzHV_docjpBukVwjLTICoindyA,4619
105
- webscout/Provider/TTI/PollinationsAI.py,sha256=ELMc92hYXzS1uFZtRB-tbFb39C3YqpxnfM8dVcucPE0,5485
106
- webscout/Provider/TTI/WebSimAI.py,sha256=tbUjvu945M35HOINLLuwvKZB_xUOmHuF69K75KiKDwU,5223
107
- webscout/Provider/TTI/__init__.py,sha256=ofB9EOC4Ou0ORUjnR6MhK2tIO8XMSVcRbw60w1C8wEM,289
108
- webscout/Provider/TTI/aiforce.py,sha256=LIt7cZU1W2LBEGk-QyUYO3cvyPjlxODWYF28kQ6xzZI,6263
109
- webscout/Provider/TTI/artbit.py,sha256=59rclp-Ker6CeIG6w0Kdte0gwgN5OUcDXi-AhbPnTeo,5077
110
- webscout/Provider/TTI/blackboximage.py,sha256=P3P8lg4-CCcDB1sPhVaP5oB9hqEhiErOTs2IX_Pv4ro,5848
111
- webscout/Provider/TTI/deepinfra.py,sha256=4x3knEeQnjhan5Y6uogK3dXFVa3r8UjN51n91Wm7Qfg,5975
112
- webscout/Provider/TTI/huggingface.py,sha256=bowc61na8BR941Ux4_PJh_wiuzGPwnmWp_VCZ5cGacY,6268
113
- webscout/Provider/TTI/imgninza.py,sha256=87-FIQlf7i0MwxQ5gO5ovbEEDlsjQN2bCvLB4DySHBs,5472
114
- webscout/Provider/TTI/talkai.py,sha256=88jVCd3NBAqoumJ0AdSh7pHBPmL5SC6YFx7H3ElAbw4,4477
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-6.3.dist-info/LICENSE.md,sha256=5mkWS6cgjGxJClmN7n--h0beF3uFAOV_Ngr1YTK33Tk,9203
120
- webscout-6.3.dist-info/METADATA,sha256=ZX4cUF569kvt3qPIm-1BlzBz8TZnYNC6eS6t843NIng,47898
121
- webscout-6.3.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
122
- webscout-6.3.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
123
- webscout-6.3.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
124
- webscout-6.3.dist-info/RECORD,,
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}")