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,207 @@
1
+ import uuid
2
+ import requests
3
+ import json
4
+ import os
5
+ from typing import Any, Dict, List, Optional
6
+
7
+ from webscout.AIbase import ImageProvider
8
+ from webscout import exceptions
9
+ from webscout.litagent import agent # Import our fire user agent generator 🔥
10
+ from webscout.Litlogger import LitLogger # For that cyberpunk logging swag ⚡
11
+
12
+ # Initialize our fire logger 🚀
13
+ logger = LitLogger("TalkaiImager")
14
+
15
+ class TalkaiImager(ImageProvider):
16
+ """
17
+ TalkAI Image Provider - Your go-to for fire AI art! 🎨
18
+
19
+ >>> # Generate some fire art! 🔥
20
+ >>> imager = TalkaiImager(logging=True)
21
+ >>> images = imager.generate("Epic dragon breathing fire", amount=2)
22
+ >>> paths = imager.save(images)
23
+ >>> print(paths)
24
+ ['epic_dragon_0.png', 'epic_dragon_1.png']
25
+
26
+ >>> # Turn off logging for stealth mode 🥷
27
+ >>> quiet_imager = TalkaiImager(logging=False)
28
+ >>> images = quiet_imager.generate("Cyberpunk city at night")
29
+ >>> paths = quiet_imager.save(images)
30
+ """
31
+
32
+ def __init__(self, timeout: int = 60, proxies: dict = {}, logging: bool = True):
33
+ """Initialize your TalkAI provider with custom settings! ⚙️
34
+
35
+ Args:
36
+ timeout (int): Request timeout in seconds (default: 60)
37
+ proxies (dict): Proxy settings for requests (default: {})
38
+ logging (bool): Enable fire logging (default: True)
39
+ """
40
+ self.api_endpoint = "https://talkai.info/chat/send/"
41
+ self.headers = {
42
+ 'accept': 'application/json',
43
+ 'accept-language': 'en-US,en;q=0.9',
44
+ 'content-type': 'application/json',
45
+ 'origin': 'https://talkai.info',
46
+ 'referer': 'https://talkai.info/image/',
47
+ 'user-agent': agent.random(), # Using our fire random agent! 🔥
48
+ }
49
+ self.session = requests.Session()
50
+ self.session.headers.update(self.headers)
51
+ self.session.proxies.update(proxies)
52
+ self.timeout = timeout
53
+ self.prompt: str = "AI-generated image - webscout"
54
+ self.image_extension: str = "png"
55
+ self.logging = logging
56
+ if self.logging:
57
+ logger.info("TalkaiImager initialized! Ready to create some fire art! 🚀")
58
+
59
+ def generate(
60
+ self, prompt: str, amount: int = 1,
61
+ max_retries: int = 3, retry_delay: int = 5
62
+ ) -> List[str]:
63
+ """Generate some fire images from your prompt! 🎨
64
+
65
+ Args:
66
+ prompt (str): Your creative prompt
67
+ amount (int): How many images to generate
68
+ max_retries (int): Max retry attempts if generation fails
69
+ retry_delay (int): Seconds to wait between retries
70
+
71
+ Returns:
72
+ List[str]: List of image URLs
73
+ """
74
+ assert bool(prompt), "Prompt cannot be empty."
75
+ assert isinstance(amount, int) and amount > 0, "Amount must be a positive integer."
76
+
77
+ self.prompt = prompt
78
+ image_urls = []
79
+
80
+ if self.logging:
81
+ logger.info(f"Generating {amount} images... 🎨")
82
+
83
+ for _ in range(amount):
84
+ for attempt in range(max_retries):
85
+ try:
86
+ with self.session.post(
87
+ self.api_endpoint,
88
+ json=self._create_payload(prompt),
89
+ timeout=self.timeout
90
+ ) as response:
91
+ response.raise_for_status()
92
+ data = response.json()
93
+
94
+ if 'data' in data and len(data['data']) > 0 and 'url' in data['data'][0]:
95
+ image_urls.append(data['data'][0]['url'])
96
+ if self.logging:
97
+ logger.success(f"Generated image {len(image_urls)}/{amount}! 🎨")
98
+ break
99
+ else:
100
+ raise exceptions.InvalidResponseError("No image URL found in API response.")
101
+
102
+ except requests.exceptions.RequestException as e:
103
+ if attempt == max_retries - 1:
104
+ if self.logging:
105
+ logger.error(f"Error making API request: {e} 😢")
106
+ raise exceptions.APIConnectionError(f"Error making API request: {e}") from e
107
+ else:
108
+ if self.logging:
109
+ logger.warning(f"Attempt {attempt + 1} failed. Retrying in {retry_delay} seconds... 🔄")
110
+ import time
111
+ time.sleep(retry_delay)
112
+ except json.JSONDecodeError as e:
113
+ if self.logging:
114
+ logger.error(f"Invalid JSON response: {e} 😢")
115
+ raise exceptions.InvalidResponseError(f"Invalid JSON response: {e}") from e
116
+ except Exception as e:
117
+ if self.logging:
118
+ logger.error(f"An unexpected error occurred: {e} 😢")
119
+ raise exceptions.FailedToGenerateResponseError(f"An unexpected error occurred: {e}") from e
120
+
121
+ if self.logging:
122
+ logger.success("All images generated successfully! 🎉")
123
+ return image_urls
124
+
125
+ def _create_payload(self, prompt: str) -> Dict[str, Any]:
126
+ """Create the API request payload 📦
127
+
128
+ Args:
129
+ prompt (str): The image generation prompt
130
+
131
+ Returns:
132
+ Dict[str, Any]: API request payload
133
+ """
134
+ return {
135
+ "type": "image",
136
+ "messagesHistory": [
137
+ {
138
+ "id": str(uuid.uuid4()),
139
+ "from": "you",
140
+ "content": prompt
141
+ }
142
+ ],
143
+ "settings": {
144
+ "model": "gpt-4o-mini" # Or another suitable model if available
145
+ }
146
+ }
147
+
148
+ def save(
149
+ self,
150
+ response: List[str],
151
+ name: str = None,
152
+ dir: str = os.getcwd(),
153
+ filenames_prefix: str = "",
154
+ ) -> List[str]:
155
+ """Save your fire images! 💾
156
+
157
+ Args:
158
+ response (List[str]): List of image URLs
159
+ name (str, optional): Base name for saved files
160
+ dir (str, optional): Where to save the images
161
+ filenames_prefix (str, optional): Prefix for filenames
162
+
163
+ Returns:
164
+ List[str]: List of saved filenames
165
+ """
166
+ assert isinstance(response, list), f"Response should be a list, not {type(response)}"
167
+ name = self.prompt if name is None else name
168
+
169
+ if not os.path.exists(dir):
170
+ os.makedirs(dir)
171
+ if self.logging:
172
+ logger.info(f"Created directory: {dir} 📁")
173
+
174
+ if self.logging:
175
+ logger.info(f"Saving {len(response)} images... 💾")
176
+
177
+ filenames = []
178
+ for i, url in enumerate(response):
179
+ try:
180
+ with self.session.get(url, stream=True, timeout=self.timeout) as r:
181
+ r.raise_for_status()
182
+ filename = f"{filenames_prefix}{name}_{i}.{self.image_extension}"
183
+ filepath = os.path.join(dir, filename)
184
+ with open(filepath, 'wb') as f:
185
+ for chunk in r.iter_content(chunk_size=8192):
186
+ f.write(chunk)
187
+ filenames.append(filename)
188
+ if self.logging:
189
+ logger.success(f"Saved image to: {filepath} 💾")
190
+ except requests.exceptions.RequestException as e:
191
+ if self.logging:
192
+ logger.error(f"Error downloading image from {url}: {e} 😢")
193
+ filenames.append(None) # Indicate failure to download
194
+
195
+ if self.logging:
196
+ logger.success(f"All images saved successfully! Check {dir} 🎉")
197
+ return filenames
198
+
199
+
200
+ if __name__ == "__main__":
201
+ bot = TalkaiImager()
202
+ try:
203
+ resp = bot.generate("A shiny red sports car speeding down a scenic mountain road", 1)
204
+ print(bot.save(resp))
205
+ except Exception as e:
206
+ if bot.logging:
207
+ logger.error(f"An error occurred: {e} 😢")
@@ -1,140 +1,147 @@
1
- # webscout/providers/__init__.py
2
- from .PI import *
3
- from .Llama import LLAMA
4
- from .Cohere import Cohere
5
- from .Reka import REKA
6
- from .Groq import GROQ
7
- from .Groq import AsyncGROQ
8
- from .Openai import OPENAI
9
- from .Openai import AsyncOPENAI
10
- from .Koboldai import KOBOLDAI
11
- from .Koboldai import AsyncKOBOLDAI
12
- from .Perplexity import *
13
- from .Blackboxai import BLACKBOXAI
14
- from .Phind import PhindSearch
15
- from .Phind import Phindv2
16
- from .ai4chat import *
17
- from .Gemini import GEMINI
18
- from .Deepseek import DeepSeek
19
- from .Deepinfra import DeepInfra
20
- from .Farfalle import *
21
- from .cleeai import *
22
- from .OLLAMA import OLLAMA
23
- from .Andi import AndiSearch
24
- from .PizzaGPT import *
25
- from .Llama3 import *
26
- from .DARKAI import *
27
- from .koala import *
28
- from .RUBIKSAI import *
29
- from .meta import *
30
- from .DiscordRocks import *
31
- from .felo_search import *
32
- from .julius import *
33
- from .Youchat import *
34
- from .yep import *
35
- from .Cloudflare import *
36
- from .turboseek import *
37
- from .Free2GPT import *
38
- from .EDITEE import *
39
- from .TeachAnything import *
40
- from .AI21 import *
41
- from .Chatify import *
42
- from .x0gpt import *
43
- from .cerebras import *
44
- from .lepton import *
45
- from .geminiapi import *
46
- from .elmo import *
47
- from .genspark import *
48
- from .upstage import *
49
- from .Bing import *
50
- from .GPTWeb import *
51
- # from .UNFINISHED.aigames import *
52
- from .llamatutor import *
53
- from .promptrefine import *
54
- from .twitterclone import *
55
- from .tutorai import *
56
- from .ChatGPTES import *
57
- from .Amigo import *
58
- from .prefind import *
59
- from .bagoodex import *
60
- # from .UNFINISHED.ChatHub import *
61
- from .aimathgpt import *
62
- from .gaurish import *
63
- from .geminiprorealtime import *
64
- from .NinjaChat import *
65
- from .llmchat import *
66
- from .talkai import *
67
- from .askmyai import *
68
- from .llama3mitril import *
69
- from .Marcus import *
70
- __all__ = [
71
- 'Farfalle',
72
- 'LLAMA',
73
- 'Cohere',
74
- 'REKA',
75
- 'GROQ',
76
- 'AsyncGROQ',
77
- 'OPENAI',
78
- 'AsyncOPENAI',
79
- 'KOBOLDAI',
80
- 'AsyncKOBOLDAI',
81
- 'Perplexity',
82
- 'BLACKBOXAI',
83
- 'PhindSearch',
84
- 'Felo',
85
- 'GEMINI',
86
- 'DeepSeek',
87
- 'DeepInfra',
88
- 'AI4Chat',
89
- 'Phindv2',
90
- 'OLLAMA',
91
- 'AndiSearch',
92
- 'PIZZAGPT',
93
- 'LLAMA3',
94
- 'DARKAI',
95
- 'KOALA',
96
- 'RUBIKSAI',
97
- 'Meta',
98
- 'AskMyAI',
99
- 'DiscordRocks',
100
- 'PiAI',
101
- 'Julius',
102
- 'YouChat',
103
- 'YEPCHAT',
104
- 'Cloudflare',
105
- 'TurboSeek',
106
- 'Editee',
107
- 'TeachAnything',
108
- 'AI21',
109
- 'Chatify',
110
- 'X0GPT',
111
- 'Cerebras',
112
- 'Lepton',
113
- 'GEMINIAPI',
114
- 'Cleeai',
115
- 'Elmo',
116
- 'Genspark',
117
- 'Upstage',
118
- 'Free2GPT',
119
- 'Bing',
120
- 'GPTWeb',
121
- # 'AIGameIO',
122
- 'LlamaTutor',
123
- 'PromptRefine',
124
- 'AIUncensored',
125
- 'TutorAI',
126
- 'ChatGPTES',
127
- 'AmigoChat',
128
- 'PrefindAI',
129
- 'Bagoodex',
130
- # 'ChatHub',
131
- 'AIMathGPT',
132
- 'GaurishCerebras',
133
- 'GeminiPro',
134
- 'NinjaChat',
135
- 'LLMChat',
136
- 'Talkai',
137
- 'Llama3Mitril',
138
- 'Marcus',
139
-
1
+ # webscout/providers/__init__.py
2
+ from .PI import *
3
+ from .Llama import LLAMA
4
+ from .Cohere import Cohere
5
+ from .Reka import REKA
6
+ from .Groq import GROQ
7
+ from .Groq import AsyncGROQ
8
+ from .Openai import OPENAI
9
+ from .Openai import AsyncOPENAI
10
+ from .Koboldai import KOBOLDAI
11
+ from .Koboldai import AsyncKOBOLDAI
12
+ from .RoboCoders import RoboCoders
13
+ from .Perplexity import *
14
+ from .perplexitylabs import PerplexityLabs
15
+ from .Blackboxai import BLACKBOXAI
16
+ from .Phind import PhindSearch
17
+ from .Phind import Phindv2
18
+ from .ai4chat import *
19
+ from .Gemini import GEMINI
20
+ from .Deepseek import DeepSeek
21
+ from .Deepinfra import DeepInfra
22
+ from .Farfalle import *
23
+ from .cleeai import *
24
+ from .OLLAMA import OLLAMA
25
+ from .Andi import AndiSearch
26
+ from .PizzaGPT import *
27
+ from .Llama3 import *
28
+ from .DARKAI import *
29
+ from .koala import *
30
+ from .RUBIKSAI import *
31
+ from .meta import *
32
+ from .DiscordRocks import *
33
+ from .felo_search import *
34
+ from .julius import *
35
+ from .Youchat import *
36
+ from .yep import *
37
+ from .Cloudflare import *
38
+ from .turboseek import *
39
+ from .Free2GPT import *
40
+ from .EDITEE import *
41
+ from .TeachAnything import *
42
+ from .AI21 import *
43
+ from .Chatify import *
44
+ from .x0gpt import *
45
+ from .cerebras import *
46
+ from .lepton import *
47
+ from .geminiapi import *
48
+ from .elmo import *
49
+ from .genspark import *
50
+ from .upstage import *
51
+ from .Bing import *
52
+ from .GPTWeb import *
53
+ # from .UNFINISHED.aigames import *
54
+ from .llamatutor import *
55
+ from .promptrefine import *
56
+ from .twitterclone import *
57
+ from .tutorai import *
58
+ from .ChatGPTES import *
59
+ from .Amigo import *
60
+ from .prefind import *
61
+ from .bagoodex import *
62
+ # from .UNFINISHED.ChatHub import *
63
+ from .aimathgpt import *
64
+ from .gaurish import *
65
+ from .geminiprorealtime import *
66
+ from .NinjaChat import *
67
+ from .llmchat import *
68
+ from .talkai import *
69
+ from .askmyai import *
70
+ from .llama3mitril import *
71
+ from .Marcus import *
72
+ from .typegpt import *
73
+ from .mhystical import *
74
+ __all__ = [
75
+ 'Farfalle',
76
+ 'LLAMA',
77
+ 'Cohere',
78
+ 'REKA',
79
+ 'GROQ',
80
+ 'AsyncGROQ',
81
+ 'OPENAI',
82
+ 'AsyncOPENAI',
83
+ 'KOBOLDAI',
84
+ 'AsyncKOBOLDAI',
85
+ 'Perplexity',
86
+ 'PerplexityLabs',
87
+ 'BLACKBOXAI',
88
+ 'PhindSearch',
89
+ 'Felo',
90
+ 'GEMINI',
91
+ 'DeepSeek',
92
+ 'DeepInfra',
93
+ 'AI4Chat',
94
+ 'Phindv2',
95
+ 'OLLAMA',
96
+ 'AndiSearch',
97
+ 'PIZZAGPT',
98
+ 'LLAMA3',
99
+ 'DARKAI',
100
+ 'KOALA',
101
+ 'RUBIKSAI',
102
+ 'Meta',
103
+ 'AskMyAI',
104
+ 'DiscordRocks',
105
+ 'PiAI',
106
+ 'Julius',
107
+ 'YouChat',
108
+ 'YEPCHAT',
109
+ 'Cloudflare',
110
+ 'TurboSeek',
111
+ 'Editee',
112
+ 'TeachAnything',
113
+ 'AI21',
114
+ 'Chatify',
115
+ 'X0GPT',
116
+ 'Cerebras',
117
+ 'Lepton',
118
+ 'GEMINIAPI',
119
+ 'Cleeai',
120
+ 'Elmo',
121
+ 'Genspark',
122
+ 'Upstage',
123
+ 'Free2GPT',
124
+ 'Bing',
125
+ 'GPTWeb',
126
+ # 'AIGameIO',
127
+ 'LlamaTutor',
128
+ 'PromptRefine',
129
+ 'AIUncensored',
130
+ 'TutorAI',
131
+ 'ChatGPTES',
132
+ 'AmigoChat',
133
+ 'PrefindAI',
134
+ 'Bagoodex',
135
+ # 'ChatHub',
136
+ 'AIMathGPT',
137
+ 'GaurishCerebras',
138
+ 'GeminiPro',
139
+ 'NinjaChat',
140
+ 'LLMChat',
141
+ 'Talkai',
142
+ 'Llama3Mitril',
143
+ 'Marcus',
144
+ 'RoboCoders',
145
+ 'TypeGPT',
146
+ 'Mhystical',
140
147
  ]
@@ -8,7 +8,7 @@ from webscout.AIutel import Conversation
8
8
  from webscout.AIutel import AwesomePrompts
9
9
  from webscout.AIbase import Provider
10
10
  from webscout import exceptions
11
-
11
+ from fake_useragent import UserAgent
12
12
 
13
13
  class AskMyAI(Provider):
14
14
  """
@@ -41,7 +41,7 @@ class AskMyAI(Provider):
41
41
  "Accept": "*/*",
42
42
  "Accept-Encoding": "gzip, deflate, br",
43
43
  "Accept-Language": "en-US,en;q=0.9",
44
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
44
+ 'user-agent': UserAgent().random
45
45
  }
46
46
  self.__available_optimizers = (
47
47
  method