webscout 7.4__py3-none-any.whl → 7.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of webscout might be problematic. Click here for more details.

Files changed (137) 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/autocoder_utiles.py +0 -4
  9. webscout/Extra/autocoder/rawdog.py +13 -41
  10. webscout/Extra/gguf.py +652 -428
  11. webscout/Extra/weather.py +178 -156
  12. webscout/Extra/weather_ascii.py +70 -17
  13. webscout/Litlogger/core/logger.py +1 -2
  14. webscout/Litlogger/handlers/file.py +1 -1
  15. webscout/Litlogger/styles/formats.py +0 -2
  16. webscout/Litlogger/utils/detectors.py +0 -1
  17. webscout/Provider/AISEARCH/DeepFind.py +0 -1
  18. webscout/Provider/AISEARCH/ISou.py +1 -1
  19. webscout/Provider/AISEARCH/felo_search.py +0 -1
  20. webscout/Provider/AllenAI.py +24 -9
  21. webscout/Provider/C4ai.py +432 -0
  22. webscout/Provider/ChatGPTGratis.py +24 -56
  23. webscout/Provider/Cloudflare.py +18 -21
  24. webscout/Provider/DeepSeek.py +27 -48
  25. webscout/Provider/Deepinfra.py +129 -53
  26. webscout/Provider/Gemini.py +1 -1
  27. webscout/Provider/GithubChat.py +362 -0
  28. webscout/Provider/Glider.py +25 -8
  29. webscout/Provider/HF_space/qwen_qwen2.py +2 -2
  30. webscout/Provider/HeckAI.py +38 -5
  31. webscout/Provider/HuggingFaceChat.py +462 -0
  32. webscout/Provider/Jadve.py +20 -5
  33. webscout/Provider/Marcus.py +7 -50
  34. webscout/Provider/Netwrck.py +43 -67
  35. webscout/Provider/PI.py +4 -2
  36. webscout/Provider/Perplexitylabs.py +26 -6
  37. webscout/Provider/Phind.py +29 -3
  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 +206 -206
  43. webscout/Provider/TTI/FreeAIPlayground/sync_freeaiplayground.py +192 -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/__init__.py +2 -0
  51. webscout/Provider/TTI/aiarta/async_aiarta.py +482 -0
  52. webscout/Provider/TTI/aiarta/sync_aiarta.py +440 -0
  53. webscout/Provider/TTI/fastflux/__init__.py +22 -0
  54. webscout/Provider/TTI/fastflux/async_fastflux.py +257 -0
  55. webscout/Provider/TTI/fastflux/sync_fastflux.py +247 -0
  56. webscout/Provider/TTS/__init__.py +2 -2
  57. webscout/Provider/TTS/deepgram.py +12 -39
  58. webscout/Provider/TTS/elevenlabs.py +14 -40
  59. webscout/Provider/TTS/gesserit.py +11 -35
  60. webscout/Provider/TTS/murfai.py +13 -39
  61. webscout/Provider/TTS/parler.py +17 -40
  62. webscout/Provider/TTS/speechma.py +180 -0
  63. webscout/Provider/TTS/streamElements.py +17 -44
  64. webscout/Provider/TextPollinationsAI.py +39 -59
  65. webscout/Provider/Venice.py +217 -200
  66. webscout/Provider/WiseCat.py +27 -5
  67. webscout/Provider/Youchat.py +63 -36
  68. webscout/Provider/__init__.py +13 -8
  69. webscout/Provider/akashgpt.py +28 -10
  70. webscout/Provider/copilot.py +416 -0
  71. webscout/Provider/flowith.py +196 -0
  72. webscout/Provider/freeaichat.py +32 -45
  73. webscout/Provider/granite.py +17 -53
  74. webscout/Provider/koala.py +20 -5
  75. webscout/Provider/llamatutor.py +7 -47
  76. webscout/Provider/llmchat.py +36 -53
  77. webscout/Provider/multichat.py +92 -98
  78. webscout/Provider/talkai.py +1 -0
  79. webscout/Provider/turboseek.py +3 -0
  80. webscout/Provider/tutorai.py +2 -0
  81. webscout/Provider/typegpt.py +154 -64
  82. webscout/Provider/x0gpt.py +3 -1
  83. webscout/Provider/yep.py +102 -20
  84. webscout/__init__.py +3 -0
  85. webscout/cli.py +4 -40
  86. webscout/conversation.py +1 -10
  87. webscout/exceptions.py +19 -9
  88. webscout/litagent/__init__.py +2 -2
  89. webscout/litagent/agent.py +351 -20
  90. webscout/litagent/constants.py +34 -5
  91. webscout/litprinter/__init__.py +0 -3
  92. webscout/models.py +181 -0
  93. webscout/optimizers.py +1 -1
  94. webscout/prompt_manager.py +2 -8
  95. webscout/scout/core/scout.py +1 -4
  96. webscout/scout/core/search_result.py +1 -1
  97. webscout/scout/core/text_utils.py +1 -1
  98. webscout/scout/core.py +2 -5
  99. webscout/scout/element.py +1 -1
  100. webscout/scout/parsers/html_parser.py +1 -1
  101. webscout/scout/utils.py +0 -1
  102. webscout/swiftcli/__init__.py +1 -3
  103. webscout/tempid.py +1 -1
  104. webscout/update_checker.py +55 -95
  105. webscout/version.py +1 -1
  106. webscout/webscout_search_async.py +1 -2
  107. webscout/yep_search.py +297 -297
  108. webscout-7.6.dist-info/LICENSE.md +146 -0
  109. {webscout-7.4.dist-info → webscout-7.6.dist-info}/METADATA +104 -514
  110. {webscout-7.4.dist-info → webscout-7.6.dist-info}/RECORD +113 -120
  111. webscout/Extra/autollama.py +0 -231
  112. webscout/Local/__init__.py +0 -10
  113. webscout/Local/_version.py +0 -3
  114. webscout/Local/formats.py +0 -747
  115. webscout/Local/model.py +0 -1368
  116. webscout/Local/samplers.py +0 -125
  117. webscout/Local/thread.py +0 -539
  118. webscout/Local/ui.py +0 -401
  119. webscout/Local/utils.py +0 -388
  120. webscout/Provider/Amigo.py +0 -274
  121. webscout/Provider/Bing.py +0 -243
  122. webscout/Provider/DiscordRocks.py +0 -253
  123. webscout/Provider/TTI/blackbox/__init__.py +0 -4
  124. webscout/Provider/TTI/blackbox/async_blackbox.py +0 -212
  125. webscout/Provider/TTI/blackbox/sync_blackbox.py +0 -199
  126. webscout/Provider/TTI/deepinfra/__init__.py +0 -4
  127. webscout/Provider/TTI/deepinfra/async_deepinfra.py +0 -227
  128. webscout/Provider/TTI/deepinfra/sync_deepinfra.py +0 -199
  129. webscout/Provider/TTI/imgninza/__init__.py +0 -4
  130. webscout/Provider/TTI/imgninza/async_ninza.py +0 -214
  131. webscout/Provider/TTI/imgninza/sync_ninza.py +0 -209
  132. webscout/Provider/TTS/voicepod.py +0 -117
  133. webscout/Provider/dgaf.py +0 -214
  134. webscout-7.4.dist-info/LICENSE.md +0 -211
  135. {webscout-7.4.dist-info → webscout-7.6.dist-info}/WHEEL +0 -0
  136. {webscout-7.4.dist-info → webscout-7.6.dist-info}/entry_points.txt +0 -0
  137. {webscout-7.4.dist-info → webscout-7.6.dist-info}/top_level.txt +0 -0
webscout/cli.py CHANGED
@@ -1,34 +1,12 @@
1
- import os
2
1
  import sys
3
- from concurrent.futures import ThreadPoolExecutor, as_completed
4
- from datetime import datetime
5
- from urllib.parse import unquote
6
- from pathlib import Path
7
- from .swiftcli import CLI, option, argument, group
8
- from curl_cffi import requests
9
- import pyreqwest_impersonate as pri
2
+ from .swiftcli import CLI, option
10
3
  from .webscout_search import WEBS
11
- from .utils import json_dumps, json_loads
12
4
  from .version import __version__
13
- from .Litlogger import LitLogger, LogFormat, ColorScheme
14
5
  from rich.console import Console
15
6
  from rich.panel import Panel
16
- from rich.markdown import Markdown
17
7
  from rich.table import Table
18
- from rich.style import Style
19
8
  from rich.text import Text
20
- from rich.align import Align
21
- from rich.progress import track, Progress
22
- from rich.prompt import Prompt, Confirm
23
- from rich.columns import Columns
24
- from pyfiglet import figlet_format
25
9
 
26
- logger = LitLogger(
27
- name="webscout",
28
- format=LogFormat.MODERN_EMOJI,
29
- color_scheme=ColorScheme.CYBERPUNK,
30
- console_output=True
31
- )
32
10
 
33
11
  COLORS = {
34
12
  0: "black",
@@ -89,7 +67,7 @@ def chat(proxy: str = None, model: str = "gpt-4o-mini"):
89
67
  console = Console()
90
68
 
91
69
  # Display header
92
- console.print(f"[bold blue]{figlet_format('Webscout Chat')}[/]\n", justify="center")
70
+ # console.print(f"[bold blue]{figlet_format('Webscout Chat')}[/]\n", justify="center")
93
71
  console.print(f"[bold green]Using model:[/] {model}\n")
94
72
  console.print("[cyan]Type your message and press Enter. Press Ctrl+C or type 'exit' to quit.[/]\n")
95
73
 
@@ -97,23 +75,18 @@ def chat(proxy: str = None, model: str = "gpt-4o-mini"):
97
75
  try:
98
76
  while True:
99
77
  try:
100
- user_input = input("You: ").strip()
78
+ user_input = input(">>> ").strip()
101
79
  if not user_input or user_input.lower() in ['exit', 'quit']:
102
80
  break
103
81
 
104
- logger.info(f"Sending message to {model}")
105
82
  response = webs.chat(keywords=user_input, model=model)
106
83
  console.print(f"\nAI: {response}\n")
107
- logger.success("Received response from AI")
108
84
 
109
85
  except Exception as e:
110
- logger.error(f"Error in chat: {str(e)}")
111
86
  console.print(f"[bold red]Error:[/] {str(e)}\n")
112
87
 
113
88
  except KeyboardInterrupt:
114
- logger.info("Chat session terminated by user")
115
-
116
- console.print("\n[cyan]Chat session ended. Goodbye![/]")
89
+ console.print("\n[bold red]Chat session interrupted. Exiting...[/]")
117
90
 
118
91
  @app.command()
119
92
  @option("--keywords", "-k", help="Search keywords", required=True)
@@ -130,7 +103,6 @@ def text(keywords: str, region: str, safesearch: str, timelimit: str, backend: s
130
103
  results = webs.text(keywords, region, safesearch, timelimit, backend, max_results)
131
104
  _print_data(results)
132
105
  except Exception as e:
133
- logger.error(f"Error in text search: {e}")
134
106
  raise e
135
107
 
136
108
  @app.command()
@@ -143,7 +115,6 @@ def answers(keywords: str, proxy: str = None):
143
115
  results = webs.answers(keywords)
144
116
  _print_data(results)
145
117
  except Exception as e:
146
- logger.error(f"Error in answers search: {e}")
147
118
  raise e
148
119
 
149
120
  @app.command()
@@ -177,7 +148,6 @@ def images(
177
148
  results = webs.images(keywords, region, safesearch, timelimit, size, color, type, layout, license, max_results)
178
149
  _print_data(results)
179
150
  except Exception as e:
180
- logger.error(f"Error in images search: {e}")
181
151
  raise e
182
152
 
183
153
  @app.command()
@@ -207,7 +177,6 @@ def videos(
207
177
  results = webs.videos(keywords, region, safesearch, timelimit, resolution, duration, license, max_results)
208
178
  _print_data(results)
209
179
  except Exception as e:
210
- logger.error(f"Error in videos search: {e}")
211
180
  raise e
212
181
 
213
182
  @app.command()
@@ -224,7 +193,6 @@ def news(keywords: str, region: str, safesearch: str, timelimit: str, max_result
224
193
  results = webs.news(keywords, region, safesearch, timelimit, max_results)
225
194
  _print_data(results)
226
195
  except Exception as e:
227
- logger.error(f"Error in news search: {e}")
228
196
  raise e
229
197
 
230
198
  @app.command()
@@ -275,7 +243,6 @@ def maps(
275
243
  )
276
244
  _print_data(results)
277
245
  except Exception as e:
278
- logger.error(f"Error in maps search: {e}")
279
246
  raise e
280
247
 
281
248
  @app.command()
@@ -290,7 +257,6 @@ def translate(keywords: str, from_: str, to: str, proxy: str = None):
290
257
  results = webs.translate(keywords, from_, to)
291
258
  _print_data(results)
292
259
  except Exception as e:
293
- logger.error(f"Error in translation: {e}")
294
260
  raise e
295
261
 
296
262
  @app.command()
@@ -304,7 +270,6 @@ def suggestions(keywords: str, region: str, proxy: str = None):
304
270
  results = webs.suggestions(keywords, region)
305
271
  _print_data(results)
306
272
  except Exception as e:
307
- logger.error(f"Error in suggestions search: {e}")
308
273
  raise e
309
274
 
310
275
  def main():
@@ -312,7 +277,6 @@ def main():
312
277
  try:
313
278
  app.run()
314
279
  except Exception as e:
315
- logger.error(f"Error: {e}")
316
280
  sys.exit(1)
317
281
 
318
282
  if __name__ == "__main__":
webscout/conversation.py CHANGED
@@ -1,13 +1,6 @@
1
1
  import os
2
- import logging
3
2
  from typing import Optional
4
- from .Litlogger import Logger, LogFormat
5
3
 
6
- # Create a logger instance for this module
7
- logger = Logger(
8
- name="Conversation",
9
- format=LogFormat.MODERN_EMOJI,
10
- )
11
4
 
12
5
  class Conversation:
13
6
  """Handles prompt generation based on history and maintains chat context.
@@ -79,11 +72,9 @@ class Conversation:
79
72
  ), f"File '{filepath}' does not exist"
80
73
 
81
74
  if not os.path.isfile(filepath):
82
- logging.debug(f"Creating new chat-history file - '{filepath}'")
83
75
  with open(filepath, "w", encoding="utf-8") as fh:
84
76
  fh.write(self.intro)
85
77
  else:
86
- logging.debug(f"Loading conversation from '{filepath}'")
87
78
  with open(filepath, encoding="utf-8") as fh:
88
79
  file_contents = fh.readlines()
89
80
  if file_contents:
@@ -221,7 +212,7 @@ class Conversation:
221
212
  if role in role_formats:
222
213
  self.chat_history += f"\n{role_formats[role]} : {content}"
223
214
  else:
224
- logger.warning(f"Unknown role '{role}' for message: {content}")
215
+ raise ValueError(f"Invalid role: {role}. Must be one of {list(role_formats.keys())}")
225
216
 
226
217
  # # Enhanced logging for message addition
227
218
  # logger.info(f"Added message from {role}: {content}")
webscout/exceptions.py CHANGED
@@ -11,7 +11,7 @@ class WebscoutE(Exception):
11
11
  pass
12
12
 
13
13
 
14
- class APIConnectionError(Exception):
14
+ class APIConnectionError(WebscoutE):
15
15
  """
16
16
  Exception raised when there are issues connecting to an API.
17
17
 
@@ -21,7 +21,17 @@ class APIConnectionError(Exception):
21
21
  pass
22
22
 
23
23
 
24
- class RatelimitE(Exception):
24
+ class AuthenticationError(WebscoutE):
25
+ """
26
+ Exception raised when authentication to a service fails.
27
+
28
+ This exception is raised when the provided credentials are invalid or expired.
29
+ It indicates that the application cannot authenticate with the service.
30
+ """
31
+ pass
32
+
33
+
34
+ class RatelimitE(WebscoutE):
25
35
  """
26
36
  Exception raised when an API rate limit is exceeded.
27
37
 
@@ -31,7 +41,7 @@ class RatelimitE(Exception):
31
41
  pass
32
42
 
33
43
 
34
- class ConversationLimitException(Exception):
44
+ class ConversationLimitException(WebscoutE):
35
45
  """
36
46
  Exception raised when a conversation limit is exceeded.
37
47
 
@@ -41,7 +51,7 @@ class ConversationLimitException(Exception):
41
51
  pass
42
52
 
43
53
 
44
- class TimeoutE(Exception):
54
+ class TimeoutE(WebscoutE):
45
55
  """
46
56
  Exception raised when a request to an API times out.
47
57
 
@@ -51,7 +61,7 @@ class TimeoutE(Exception):
51
61
  pass
52
62
 
53
63
 
54
- class FailedToGenerateResponseError(Exception):
64
+ class FailedToGenerateResponseError(WebscoutE):
55
65
  """
56
66
  Exception raised when a provider fails to generate a response.
57
67
 
@@ -61,7 +71,7 @@ class FailedToGenerateResponseError(Exception):
61
71
  pass
62
72
 
63
73
 
64
- class AllProvidersFailure(Exception):
74
+ class AllProvidersFailure(WebscoutE):
65
75
  """
66
76
  Exception raised when all providers fail to generate a response.
67
77
 
@@ -71,7 +81,7 @@ class AllProvidersFailure(Exception):
71
81
  pass
72
82
 
73
83
 
74
- class FacebookInvalidCredentialsException(Exception):
84
+ class FacebookInvalidCredentialsException(WebscoutE):
75
85
  """
76
86
  Exception raised when Facebook credentials are invalid.
77
87
 
@@ -81,7 +91,7 @@ class FacebookInvalidCredentialsException(Exception):
81
91
  pass
82
92
 
83
93
 
84
- class FacebookRegionBlocked(Exception):
94
+ class FacebookRegionBlocked(WebscoutE):
85
95
  """
86
96
  Exception raised when Facebook access is blocked due to region restrictions.
87
97
 
@@ -91,7 +101,7 @@ class FacebookRegionBlocked(Exception):
91
101
  pass
92
102
 
93
103
 
94
- class ModelUnloadedException(Exception):
104
+ class ModelUnloadedException(WebscoutE):
95
105
  """
96
106
  Exception raised when a model is unloaded.
97
107
 
@@ -22,8 +22,8 @@ Examples:
22
22
  """
23
23
 
24
24
  from .agent import LitAgent
25
- from .constants import BROWSERS, OS_VERSIONS, DEVICES
25
+ from .constants import BROWSERS, OS_VERSIONS, DEVICES, FINGERPRINTS
26
26
 
27
27
  agent = LitAgent()
28
28
 
29
- __all__ = ['LitAgent', 'agent', 'BROWSERS', 'OS_VERSIONS', 'DEVICES']
29
+ __all__ = ['LitAgent', 'agent', 'BROWSERS', 'OS_VERSIONS', 'DEVICES', 'FINGERPRINTS']