webscout 7.5__py3-none-any.whl → 7.7__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 (132) hide show
  1. webscout/AIauto.py +5 -53
  2. webscout/AIutel.py +8 -318
  3. webscout/DWEBS.py +460 -489
  4. webscout/Extra/YTToolkit/YTdownloader.py +14 -53
  5. webscout/Extra/YTToolkit/transcriber.py +12 -13
  6. webscout/Extra/YTToolkit/ytapi/video.py +0 -1
  7. webscout/Extra/__init__.py +0 -1
  8. webscout/Extra/autocoder/__init__.py +9 -9
  9. webscout/Extra/autocoder/autocoder_utiles.py +193 -199
  10. webscout/Extra/autocoder/rawdog.py +789 -677
  11. webscout/Extra/gguf.py +682 -428
  12. webscout/Extra/weather.py +178 -156
  13. webscout/Extra/weather_ascii.py +70 -17
  14. webscout/Litlogger/core/logger.py +1 -2
  15. webscout/Litlogger/handlers/file.py +1 -1
  16. webscout/Litlogger/styles/formats.py +0 -2
  17. webscout/Litlogger/utils/detectors.py +0 -1
  18. webscout/Provider/AISEARCH/DeepFind.py +0 -1
  19. webscout/Provider/AISEARCH/ISou.py +1 -22
  20. webscout/Provider/AISEARCH/felo_search.py +0 -1
  21. webscout/Provider/AllenAI.py +28 -30
  22. webscout/Provider/C4ai.py +29 -11
  23. webscout/Provider/ChatGPTClone.py +226 -0
  24. webscout/Provider/ChatGPTGratis.py +24 -56
  25. webscout/Provider/DeepSeek.py +25 -17
  26. webscout/Provider/Deepinfra.py +115 -48
  27. webscout/Provider/Gemini.py +1 -1
  28. webscout/Provider/Glider.py +33 -12
  29. webscout/Provider/HF_space/qwen_qwen2.py +2 -2
  30. webscout/Provider/HeckAI.py +23 -7
  31. webscout/Provider/Hunyuan.py +272 -0
  32. webscout/Provider/Jadve.py +20 -5
  33. webscout/Provider/LambdaChat.py +391 -0
  34. webscout/Provider/Netwrck.py +42 -19
  35. webscout/Provider/OLLAMA.py +256 -32
  36. webscout/Provider/PI.py +4 -2
  37. webscout/Provider/Perplexitylabs.py +26 -6
  38. webscout/Provider/PizzaGPT.py +10 -51
  39. webscout/Provider/TTI/AiForce/async_aiforce.py +4 -37
  40. webscout/Provider/TTI/AiForce/sync_aiforce.py +41 -38
  41. webscout/Provider/TTI/FreeAIPlayground/__init__.py +9 -9
  42. webscout/Provider/TTI/FreeAIPlayground/async_freeaiplayground.py +179 -206
  43. webscout/Provider/TTI/FreeAIPlayground/sync_freeaiplayground.py +180 -192
  44. webscout/Provider/TTI/MagicStudio/__init__.py +2 -0
  45. webscout/Provider/TTI/MagicStudio/async_magicstudio.py +111 -0
  46. webscout/Provider/TTI/MagicStudio/sync_magicstudio.py +109 -0
  47. webscout/Provider/TTI/PollinationsAI/async_pollinations.py +5 -24
  48. webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +2 -22
  49. webscout/Provider/TTI/__init__.py +2 -3
  50. webscout/Provider/TTI/aiarta/async_aiarta.py +14 -14
  51. webscout/Provider/TTI/aiarta/sync_aiarta.py +52 -21
  52. webscout/Provider/TTI/artbit/async_artbit.py +3 -32
  53. webscout/Provider/TTI/artbit/sync_artbit.py +3 -31
  54. webscout/Provider/TTI/fastflux/__init__.py +22 -0
  55. webscout/Provider/TTI/fastflux/async_fastflux.py +261 -0
  56. webscout/Provider/TTI/fastflux/sync_fastflux.py +252 -0
  57. webscout/Provider/TTI/piclumen/__init__.py +22 -22
  58. webscout/Provider/TTI/piclumen/sync_piclumen.py +232 -232
  59. webscout/Provider/TTS/__init__.py +2 -2
  60. webscout/Provider/TTS/deepgram.py +12 -39
  61. webscout/Provider/TTS/elevenlabs.py +14 -40
  62. webscout/Provider/TTS/gesserit.py +11 -35
  63. webscout/Provider/TTS/murfai.py +13 -39
  64. webscout/Provider/TTS/parler.py +17 -40
  65. webscout/Provider/TTS/speechma.py +180 -0
  66. webscout/Provider/TTS/streamElements.py +17 -44
  67. webscout/Provider/TextPollinationsAI.py +39 -59
  68. webscout/Provider/Venice.py +25 -8
  69. webscout/Provider/WebSim.py +227 -0
  70. webscout/Provider/WiseCat.py +27 -5
  71. webscout/Provider/Youchat.py +64 -37
  72. webscout/Provider/__init__.py +12 -7
  73. webscout/Provider/akashgpt.py +20 -5
  74. webscout/Provider/flowith.py +33 -7
  75. webscout/Provider/freeaichat.py +32 -45
  76. webscout/Provider/koala.py +20 -5
  77. webscout/Provider/labyrinth.py +239 -0
  78. webscout/Provider/learnfastai.py +28 -15
  79. webscout/Provider/llamatutor.py +1 -1
  80. webscout/Provider/llmchat.py +30 -8
  81. webscout/Provider/multichat.py +65 -9
  82. webscout/Provider/sonus.py +208 -0
  83. webscout/Provider/talkai.py +1 -0
  84. webscout/Provider/turboseek.py +3 -0
  85. webscout/Provider/tutorai.py +2 -0
  86. webscout/Provider/typegpt.py +155 -65
  87. webscout/Provider/uncovr.py +297 -0
  88. webscout/Provider/x0gpt.py +3 -1
  89. webscout/Provider/yep.py +102 -20
  90. webscout/__init__.py +3 -0
  91. webscout/cli.py +53 -40
  92. webscout/conversation.py +1 -10
  93. webscout/litagent/__init__.py +2 -2
  94. webscout/litagent/agent.py +356 -20
  95. webscout/litagent/constants.py +34 -5
  96. webscout/litprinter/__init__.py +0 -3
  97. webscout/models.py +181 -0
  98. webscout/optimizers.py +1 -1
  99. webscout/prompt_manager.py +2 -8
  100. webscout/scout/core/scout.py +1 -4
  101. webscout/scout/core/search_result.py +1 -1
  102. webscout/scout/core/text_utils.py +1 -1
  103. webscout/scout/core.py +2 -5
  104. webscout/scout/element.py +1 -1
  105. webscout/scout/parsers/html_parser.py +1 -1
  106. webscout/scout/utils.py +0 -1
  107. webscout/swiftcli/__init__.py +1 -3
  108. webscout/tempid.py +1 -1
  109. webscout/update_checker.py +1 -3
  110. webscout/version.py +1 -1
  111. webscout/webscout_search_async.py +1 -2
  112. webscout/yep_search.py +297 -297
  113. {webscout-7.5.dist-info → webscout-7.7.dist-info}/LICENSE.md +4 -4
  114. {webscout-7.5.dist-info → webscout-7.7.dist-info}/METADATA +127 -405
  115. {webscout-7.5.dist-info → webscout-7.7.dist-info}/RECORD +118 -117
  116. webscout/Extra/autollama.py +0 -231
  117. webscout/Provider/Amigo.py +0 -274
  118. webscout/Provider/Bing.py +0 -243
  119. webscout/Provider/DiscordRocks.py +0 -253
  120. webscout/Provider/TTI/blackbox/__init__.py +0 -4
  121. webscout/Provider/TTI/blackbox/async_blackbox.py +0 -212
  122. webscout/Provider/TTI/blackbox/sync_blackbox.py +0 -199
  123. webscout/Provider/TTI/deepinfra/__init__.py +0 -4
  124. webscout/Provider/TTI/deepinfra/async_deepinfra.py +0 -227
  125. webscout/Provider/TTI/deepinfra/sync_deepinfra.py +0 -199
  126. webscout/Provider/TTI/imgninza/__init__.py +0 -4
  127. webscout/Provider/TTI/imgninza/async_ninza.py +0 -214
  128. webscout/Provider/TTI/imgninza/sync_ninza.py +0 -209
  129. webscout/Provider/TTS/voicepod.py +0 -117
  130. {webscout-7.5.dist-info → webscout-7.7.dist-info}/WHEEL +0 -0
  131. {webscout-7.5.dist-info → webscout-7.7.dist-info}/entry_points.txt +0 -0
  132. {webscout-7.5.dist-info → webscout-7.7.dist-info}/top_level.txt +0 -0
@@ -9,15 +9,8 @@ from aiohttp import ClientError
9
9
  from pathlib import Path
10
10
 
11
11
  from webscout.AIbase import AsyncImageProvider
12
- from webscout.Litlogger import Logger, LogFormat
13
12
  from webscout.litagent import LitAgent
14
13
 
15
- # Initialize our fire logger and agent 🔥
16
- logger = Logger(
17
- "AsyncAiForce",
18
- format=LogFormat.MODERN_EMOJI,
19
-
20
- )
21
14
  agent = LitAgent()
22
15
 
23
16
  class AsyncAiForceimager(AsyncImageProvider):
@@ -46,8 +39,6 @@ class AsyncAiForceimager(AsyncImageProvider):
46
39
  AVAILABLE_MODELS = [
47
40
  "stable-diffusion-xl-lightning",
48
41
  "stable-diffusion-xl-base",
49
- "Flux-1.1-Pro",
50
- "ideogram",
51
42
  "flux",
52
43
  "flux-realism",
53
44
  "flux-anime",
@@ -58,13 +49,12 @@ class AsyncAiForceimager(AsyncImageProvider):
58
49
  "any-dark"
59
50
  ]
60
51
 
61
- def __init__(self, timeout: int = 60, proxies: dict = {}, logging: bool = True):
52
+ def __init__(self, timeout: int = 60, proxies: dict = {}):
62
53
  """Initialize your async AiForce provider with custom settings! ⚙️
63
54
 
64
55
  Args:
65
56
  timeout (int): Request timeout in seconds (default: 60)
66
57
  proxies (dict): Proxy settings for requests (default: {})
67
- logging (bool): Enable fire logging (default: True)
68
58
  """
69
59
  self.api_endpoint = "https://api.airforce/imagine2"
70
60
  self.headers = {
@@ -77,16 +67,13 @@ class AsyncAiForceimager(AsyncImageProvider):
77
67
  self.proxies = proxies
78
68
  self.prompt: str = "AI-generated image - webscout"
79
69
  self.image_extension: str = "png"
80
- self.logging = logging
81
- if self.logging:
82
- logger.info("AsyncAiForce provider initialized! 🚀")
83
70
 
84
71
  async def generate(
85
72
  self,
86
73
  prompt: str,
87
74
  amount: int = 1,
88
75
  additives: bool = True,
89
- model: str = "Flux-1.1-Pro",
76
+ model: str = "flux-3d",
90
77
  width: int = 768,
91
78
  height: int = 768,
92
79
  seed: Optional[int] = None,
@@ -104,7 +91,7 @@ class AsyncAiForceimager(AsyncImageProvider):
104
91
  ... images = await provider.generate(
105
92
  ... prompt="Epic dragon",
106
93
  ... amount=3,
107
- ... model="Flux-1.1-Pro"
94
+ ... model="flux-3d"
108
95
  ... )
109
96
 
110
97
  Args:
@@ -143,9 +130,6 @@ class AsyncAiForceimager(AsyncImageProvider):
143
130
  self.prompt = prompt
144
131
  response = []
145
132
 
146
- if self.logging:
147
- logger.info(f"Generating {amount} images with {model}... 🎨")
148
-
149
133
  async with aiohttp.ClientSession(headers=self.headers) as session:
150
134
  for i in range(amount):
151
135
  url = f"{self.api_endpoint}?model={model}&prompt={prompt}&size={width}:{height}"
@@ -157,21 +141,13 @@ class AsyncAiForceimager(AsyncImageProvider):
157
141
  async with session.get(url, timeout=self.timeout, proxy=self.proxies.get('http')) as resp:
158
142
  resp.raise_for_status()
159
143
  response.append(await resp.read())
160
- if self.logging:
161
- logger.success(f"Generated image {i + 1}/{amount}! 🎨")
162
144
  break
163
145
  except ClientError as e:
164
146
  if attempt == max_retries - 1:
165
- if self.logging:
166
- logger.error(f"Failed to generate image after {max_retries} attempts: {e} 😢")
167
147
  raise
168
148
  else:
169
- if self.logging:
170
- logger.warning(f"Attempt {attempt + 1} failed. Retrying in {retry_delay} seconds... 🔄")
171
149
  await asyncio.sleep(retry_delay)
172
150
 
173
- if self.logging:
174
- logger.success("Images generated successfully! 🎉")
175
151
  return response
176
152
 
177
153
  async def save(
@@ -209,16 +185,11 @@ class AsyncAiForceimager(AsyncImageProvider):
209
185
  save_dir = dir if dir else os.getcwd()
210
186
  if not os.path.exists(save_dir):
211
187
  os.makedirs(save_dir)
212
- if self.logging:
213
- logger.info(f"Created directory: {save_dir} 📁")
214
188
 
215
189
  name = self.prompt if name is None else name
216
190
  saved_paths = []
217
191
  timestamp = int(time.time())
218
192
 
219
- if self.logging:
220
- logger.info(f"Saving {len(response)} images... 💾")
221
-
222
193
  async def save_single_image(image_bytes: bytes, index: int) -> str:
223
194
  filename = f"{filenames_prefix}{name}_{index}.{self.image_extension}"
224
195
  filepath = os.path.join(save_dir, filename)
@@ -228,8 +199,6 @@ class AsyncAiForceimager(AsyncImageProvider):
228
199
  with open(filepath, "wb") as f:
229
200
  f.write(image_bytes)
230
201
 
231
- if self.logging:
232
- logger.success(f"Saved image to: {filepath} 💾")
233
202
  return filepath
234
203
 
235
204
  # Handle both List[bytes] and AsyncGenerator
@@ -240,8 +209,6 @@ class AsyncAiForceimager(AsyncImageProvider):
240
209
 
241
210
  tasks = [save_single_image(img, i) for i, img in enumerate(image_list)]
242
211
  saved_paths = await asyncio.gather(*tasks)
243
- if self.logging:
244
- logger.success(f"Images saved successfully! Check {dir} 🎉")
245
212
  return saved_paths
246
213
 
247
214
  if __name__ == "__main__":
@@ -252,6 +219,6 @@ if __name__ == "__main__":
252
219
  paths = await bot.save(resp)
253
220
  print(paths)
254
221
  except Exception as e:
255
- logger.error(f"An error occurred: {e} 😢")
222
+ print(f"An error occurred: {e}")
256
223
 
257
224
  asyncio.run(main())
@@ -8,15 +8,10 @@ from requests.exceptions import RequestException
8
8
  from pathlib import Path
9
9
 
10
10
  from webscout.AIbase import ImageProvider
11
- from webscout.Litlogger import Logger, LogFormat
11
+
12
12
  from webscout.litagent import LitAgent
13
13
 
14
- # Initialize our fire logger and agent 🔥
15
- logger = Logger(
16
- "AiForce",
17
- format=LogFormat.MODERN_EMOJI,
18
14
 
19
- )
20
15
  agent = LitAgent()
21
16
 
22
17
  class AiForceimager(ImageProvider):
@@ -43,8 +38,6 @@ class AiForceimager(ImageProvider):
43
38
  AVAILABLE_MODELS = [
44
39
  "stable-diffusion-xl-lightning",
45
40
  "stable-diffusion-xl-base",
46
- "Flux-1.1-Pro",
47
- "ideogram",
48
41
  "flux",
49
42
  "flux-realism",
50
43
  "flux-anime",
@@ -55,13 +48,12 @@ class AiForceimager(ImageProvider):
55
48
  "any-dark"
56
49
  ]
57
50
 
58
- def __init__(self, timeout: int = 60, proxies: dict = {}, logging: bool = True):
51
+ def __init__(self, timeout: int = 60, proxies: dict = {}):
59
52
  """Initialize your AiForce provider with custom settings! ⚙️
60
53
 
61
54
  Args:
62
55
  timeout (int): Request timeout in seconds (default: 60)
63
56
  proxies (dict): Proxy settings for requests (default: {})
64
- logging (bool): Enable fire logging (default: True)
65
57
  """
66
58
  self.api_endpoint = "https://api.airforce/imagine2"
67
59
  self.headers = {
@@ -76,16 +68,14 @@ class AiForceimager(ImageProvider):
76
68
  self.timeout = timeout
77
69
  self.prompt: str = "AI-generated image - webscout"
78
70
  self.image_extension: str = "png"
79
- self.logging = logging
80
- if self.logging:
81
- logger.info("AiForce provider initialized! 🚀")
71
+
82
72
 
83
73
  def generate(
84
74
  self,
85
75
  prompt: str,
86
76
  amount: int = 1,
87
77
  additives: bool = True,
88
- model: str = "Flux-1.1-Pro",
78
+ model: str = "flux-3d",
89
79
  width: int = 768,
90
80
  height: int = 768,
91
81
  seed: Optional[int] = None,
@@ -139,8 +129,6 @@ class AiForceimager(ImageProvider):
139
129
  )
140
130
 
141
131
  self.prompt = prompt
142
- if self.logging:
143
- logger.info(f"Generating {amount} images with {model}... 🎨")
144
132
  response = []
145
133
  for _ in range(amount):
146
134
  url = f"{self.api_endpoint}?model={model}&prompt={prompt}&size={width}:{height}"
@@ -152,21 +140,13 @@ class AiForceimager(ImageProvider):
152
140
  resp = self.session.get(url, timeout=self.timeout)
153
141
  resp.raise_for_status()
154
142
  response.append(resp.content)
155
- if self.logging:
156
- logger.success(f"Generated image {_ + 1}/{amount}! 🎨")
157
143
  break
158
144
  except RequestException as e:
159
145
  if attempt == max_retries - 1:
160
- if self.logging:
161
- logger.error(f"Failed to generate image after {max_retries} attempts: {e} 😢")
162
146
  raise
163
147
  else:
164
- if self.logging:
165
- logger.warning(f"Attempt {attempt + 1} failed. Retrying in {retry_delay} seconds... 🔄")
166
148
  time.sleep(retry_delay)
167
149
 
168
- if self.logging:
169
- logger.success("Images generated successfully! 🎉")
170
150
  return response
171
151
 
172
152
  def save(
@@ -203,12 +183,8 @@ class AiForceimager(ImageProvider):
203
183
  save_dir = dir if dir else os.getcwd()
204
184
  if not os.path.exists(save_dir):
205
185
  os.makedirs(save_dir)
206
- if self.logging:
207
- logger.info(f"Created directory: {save_dir} 📁")
208
186
 
209
187
  name = self.prompt if name is None else name
210
- if self.logging:
211
- logger.info(f"Saving {len(response)} images... 💾")
212
188
  filenames = []
213
189
  count = 0
214
190
 
@@ -225,18 +201,45 @@ class AiForceimager(ImageProvider):
225
201
 
226
202
  with open(absolute_path_to_file, "wb") as fh:
227
203
  fh.write(image)
228
- if self.logging:
229
- logger.success(f"Saved image to: {absolute_path_to_file} 💾")
230
204
 
231
- if self.logging:
232
- logger.success(f"Images saved successfully! Check {dir} 🎉")
233
205
  return filenames
234
206
 
235
207
  if __name__ == "__main__":
236
208
  bot = AiForceimager()
237
- try:
238
- resp = bot.generate("A shiny red sports car speeding down a scenic mountain road", 1)
239
- print(bot.save(resp))
240
- except Exception as e:
241
- if bot.logging:
242
- logger.error(f"An error occurred: {e} 😢")
209
+ test_prompt = "A shiny red sports car speeding down a scenic mountain road"
210
+
211
+ print(f"Testing all available models with prompt: '{test_prompt}'")
212
+ print("-" * 50)
213
+
214
+ # Create a directory for test images if it doesn't exist
215
+ test_dir = "model_test_images"
216
+ if not os.path.exists(test_dir):
217
+ os.makedirs(test_dir)
218
+
219
+ for model in bot.AVAILABLE_MODELS:
220
+ print(f"Testing model: {model}")
221
+ try:
222
+ # Generate an image with the current model
223
+ resp = bot.generate(
224
+ prompt=test_prompt,
225
+ amount=1,
226
+ model=model,
227
+ width=768,
228
+ height=768
229
+ )
230
+
231
+ # Save the image with model name as prefix
232
+ saved_paths = bot.save(
233
+ resp,
234
+ name=f"{model}_test",
235
+ dir=test_dir,
236
+ filenames_prefix=f"{model}_"
237
+ )
238
+
239
+ print(f"✓ Success! Saved image: {saved_paths[0]}")
240
+ except Exception as e:
241
+ print(f"✗ Failed with model {model}: {str(e)}")
242
+
243
+ print("-" * 30)
244
+
245
+ print("All model tests completed!")
@@ -1,9 +1,9 @@
1
- """
2
- FreeAI Provider Package
3
- Provides access to various AI models for image generation including DALL-E 3 and Flux models
4
- """
5
-
6
- from .sync_freeaiplayground import FreeAIImager
7
- from .async_freeaiplayground import AsyncFreeAIImager
8
-
9
- __all__ = ['FreeAIImager', 'AsyncFreeAIImager']
1
+ """
2
+ FreeAI Provider Package
3
+ Provides access to various AI models for image generation including DALL-E 3 and Flux models
4
+ """
5
+
6
+ from .sync_freeaiplayground import FreeAIImager
7
+ from .async_freeaiplayground import AsyncFreeAIImager
8
+
9
+ __all__ = ['FreeAIImager', 'AsyncFreeAIImager']