webscout 5.4__tar.gz → 5.5__tar.gz

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 (105) hide show
  1. {webscout-5.4/webscout.egg-info → webscout-5.5}/PKG-INFO +3 -2
  2. {webscout-5.4 → webscout-5.5}/setup.py +2 -1
  3. {webscout-5.4 → webscout-5.5}/webscout/Provider/Reka.py +0 -1
  4. webscout-5.5/webscout/Provider/TTI/__init__.py +3 -0
  5. webscout-5.5/webscout/Provider/TTI/aiforce.py +137 -0
  6. {webscout-5.4 → webscout-5.5}/webscout/tempid.py +46 -2
  7. {webscout-5.4 → webscout-5.5}/webscout/version.py +1 -1
  8. {webscout-5.4 → webscout-5.5}/webscout/webscout_search_async.py +9 -9
  9. {webscout-5.4 → webscout-5.5/webscout.egg-info}/PKG-INFO +3 -2
  10. {webscout-5.4 → webscout-5.5}/webscout.egg-info/SOURCES.txt +1 -0
  11. {webscout-5.4 → webscout-5.5}/webscout.egg-info/requires.txt +2 -1
  12. webscout-5.4/webscout/Provider/TTI/__init__.py +0 -2
  13. {webscout-5.4 → webscout-5.5}/LICENSE.md +0 -0
  14. {webscout-5.4 → webscout-5.5}/README.md +0 -0
  15. {webscout-5.4 → webscout-5.5}/setup.cfg +0 -0
  16. {webscout-5.4 → webscout-5.5}/webscout/AIauto.py +0 -0
  17. {webscout-5.4 → webscout-5.5}/webscout/AIbase.py +0 -0
  18. {webscout-5.4 → webscout-5.5}/webscout/AIutel.py +0 -0
  19. {webscout-5.4 → webscout-5.5}/webscout/Agents/Onlinesearcher.py +0 -0
  20. {webscout-5.4 → webscout-5.5}/webscout/Agents/__init__.py +0 -0
  21. {webscout-5.4 → webscout-5.5}/webscout/Agents/ai.py +0 -0
  22. {webscout-5.4 → webscout-5.5}/webscout/Agents/functioncall.py +0 -0
  23. {webscout-5.4 → webscout-5.5}/webscout/Bard.py +0 -0
  24. {webscout-5.4 → webscout-5.5}/webscout/Bing_search.py +0 -0
  25. {webscout-5.4 → webscout-5.5}/webscout/DWEBS.py +0 -0
  26. {webscout-5.4 → webscout-5.5}/webscout/Extra/__init__.py +0 -0
  27. {webscout-5.4 → webscout-5.5}/webscout/Extra/autollama.py +0 -0
  28. {webscout-5.4 → webscout-5.5}/webscout/Extra/gguf.py +0 -0
  29. {webscout-5.4 → webscout-5.5}/webscout/Extra/weather.py +0 -0
  30. {webscout-5.4 → webscout-5.5}/webscout/Extra/weather_ascii.py +0 -0
  31. {webscout-5.4 → webscout-5.5}/webscout/LLM.py +0 -0
  32. {webscout-5.4 → webscout-5.5}/webscout/Local/__init__.py +0 -0
  33. {webscout-5.4 → webscout-5.5}/webscout/Local/_version.py +0 -0
  34. {webscout-5.4 → webscout-5.5}/webscout/Local/formats.py +0 -0
  35. {webscout-5.4 → webscout-5.5}/webscout/Local/model.py +0 -0
  36. {webscout-5.4 → webscout-5.5}/webscout/Local/rawdog.py +0 -0
  37. {webscout-5.4 → webscout-5.5}/webscout/Local/samplers.py +0 -0
  38. {webscout-5.4 → webscout-5.5}/webscout/Local/thread.py +0 -0
  39. {webscout-5.4 → webscout-5.5}/webscout/Local/utils.py +0 -0
  40. {webscout-5.4 → webscout-5.5}/webscout/Provider/AI21.py +0 -0
  41. {webscout-5.4 → webscout-5.5}/webscout/Provider/Andi.py +0 -0
  42. {webscout-5.4 → webscout-5.5}/webscout/Provider/BasedGPT.py +0 -0
  43. {webscout-5.4 → webscout-5.5}/webscout/Provider/Blackboxai.py +0 -0
  44. {webscout-5.4 → webscout-5.5}/webscout/Provider/Chatify.py +0 -0
  45. {webscout-5.4 → webscout-5.5}/webscout/Provider/Cloudflare.py +0 -0
  46. {webscout-5.4 → webscout-5.5}/webscout/Provider/Cohere.py +0 -0
  47. {webscout-5.4 → webscout-5.5}/webscout/Provider/DARKAI.py +0 -0
  48. {webscout-5.4 → webscout-5.5}/webscout/Provider/Deepinfra.py +0 -0
  49. {webscout-5.4 → webscout-5.5}/webscout/Provider/Deepseek.py +0 -0
  50. {webscout-5.4 → webscout-5.5}/webscout/Provider/DiscordRocks.py +0 -0
  51. {webscout-5.4 → webscout-5.5}/webscout/Provider/EDITEE.py +0 -0
  52. {webscout-5.4 → webscout-5.5}/webscout/Provider/Farfalle.py +0 -0
  53. {webscout-5.4 → webscout-5.5}/webscout/Provider/Gemini.py +0 -0
  54. {webscout-5.4 → webscout-5.5}/webscout/Provider/Groq.py +0 -0
  55. {webscout-5.4 → webscout-5.5}/webscout/Provider/Koboldai.py +0 -0
  56. {webscout-5.4 → webscout-5.5}/webscout/Provider/Llama.py +0 -0
  57. {webscout-5.4 → webscout-5.5}/webscout/Provider/Llama3.py +0 -0
  58. {webscout-5.4 → webscout-5.5}/webscout/Provider/NetFly.py +0 -0
  59. {webscout-5.4 → webscout-5.5}/webscout/Provider/OLLAMA.py +0 -0
  60. {webscout-5.4 → webscout-5.5}/webscout/Provider/Openai.py +0 -0
  61. {webscout-5.4 → webscout-5.5}/webscout/Provider/PI.py +0 -0
  62. {webscout-5.4 → webscout-5.5}/webscout/Provider/Perplexity.py +0 -0
  63. {webscout-5.4 → webscout-5.5}/webscout/Provider/Phind.py +0 -0
  64. {webscout-5.4 → webscout-5.5}/webscout/Provider/PizzaGPT.py +0 -0
  65. {webscout-5.4 → webscout-5.5}/webscout/Provider/Poe.py +0 -0
  66. {webscout-5.4 → webscout-5.5}/webscout/Provider/RUBIKSAI.py +0 -0
  67. {webscout-5.4 → webscout-5.5}/webscout/Provider/TTI/PollinationsAI.py +0 -0
  68. {webscout-5.4 → webscout-5.5}/webscout/Provider/TTI/deepinfra.py +0 -0
  69. {webscout-5.4 → webscout-5.5}/webscout/Provider/TTS/__init__.py +0 -0
  70. {webscout-5.4 → webscout-5.5}/webscout/Provider/TTS/streamElements.py +0 -0
  71. {webscout-5.4 → webscout-5.5}/webscout/Provider/TTS/voicepod.py +0 -0
  72. {webscout-5.4 → webscout-5.5}/webscout/Provider/TeachAnything.py +0 -0
  73. {webscout-5.4 → webscout-5.5}/webscout/Provider/ThinkAnyAI.py +0 -0
  74. {webscout-5.4 → webscout-5.5}/webscout/Provider/Youchat.py +0 -0
  75. {webscout-5.4 → webscout-5.5}/webscout/Provider/__init__.py +0 -0
  76. {webscout-5.4 → webscout-5.5}/webscout/Provider/ai4chat.py +0 -0
  77. {webscout-5.4 → webscout-5.5}/webscout/Provider/cerebras.py +0 -0
  78. {webscout-5.4 → webscout-5.5}/webscout/Provider/cleeai.py +0 -0
  79. {webscout-5.4 → webscout-5.5}/webscout/Provider/elmo.py +0 -0
  80. {webscout-5.4 → webscout-5.5}/webscout/Provider/felo_search.py +0 -0
  81. {webscout-5.4 → webscout-5.5}/webscout/Provider/geminiapi.py +0 -0
  82. {webscout-5.4 → webscout-5.5}/webscout/Provider/genspark.py +0 -0
  83. {webscout-5.4 → webscout-5.5}/webscout/Provider/julius.py +0 -0
  84. {webscout-5.4 → webscout-5.5}/webscout/Provider/koala.py +0 -0
  85. {webscout-5.4 → webscout-5.5}/webscout/Provider/lepton.py +0 -0
  86. {webscout-5.4 → webscout-5.5}/webscout/Provider/meta.py +0 -0
  87. {webscout-5.4 → webscout-5.5}/webscout/Provider/turboseek.py +0 -0
  88. {webscout-5.4 → webscout-5.5}/webscout/Provider/x0gpt.py +0 -0
  89. {webscout-5.4 → webscout-5.5}/webscout/Provider/xdash.py +0 -0
  90. {webscout-5.4 → webscout-5.5}/webscout/Provider/yep.py +0 -0
  91. {webscout-5.4 → webscout-5.5}/webscout/YTdownloader.py +0 -0
  92. {webscout-5.4 → webscout-5.5}/webscout/__init__.py +0 -0
  93. {webscout-5.4 → webscout-5.5}/webscout/__main__.py +0 -0
  94. {webscout-5.4 → webscout-5.5}/webscout/cli.py +0 -0
  95. {webscout-5.4 → webscout-5.5}/webscout/exceptions.py +0 -0
  96. {webscout-5.4 → webscout-5.5}/webscout/g4f.py +0 -0
  97. {webscout-5.4 → webscout-5.5}/webscout/models.py +0 -0
  98. {webscout-5.4 → webscout-5.5}/webscout/transcriber.py +0 -0
  99. {webscout-5.4 → webscout-5.5}/webscout/utils.py +0 -0
  100. {webscout-5.4 → webscout-5.5}/webscout/webai.py +0 -0
  101. {webscout-5.4 → webscout-5.5}/webscout/webscout_search.py +0 -0
  102. {webscout-5.4 → webscout-5.5}/webscout/websx_search.py +0 -0
  103. {webscout-5.4 → webscout-5.5}/webscout.egg-info/dependency_links.txt +0 -0
  104. {webscout-5.4 → webscout-5.5}/webscout.egg-info/entry_points.txt +0 -0
  105. {webscout-5.4 → webscout-5.5}/webscout.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webscout
3
- Version: 5.4
3
+ Version: 5.5
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
@@ -27,7 +27,6 @@ License-File: LICENSE.md
27
27
  Requires-Dist: docstring_inheritance
28
28
  Requires-Dist: click
29
29
  Requires-Dist: curl_cffi
30
- Requires-Dist: lxml
31
30
  Requires-Dist: nest-asyncio
32
31
  Requires-Dist: g4f>=0.2.2.3
33
32
  Requires-Dist: g4f[webdriver]
@@ -36,6 +35,8 @@ Requires-Dist: beautifulsoup4
36
35
  Requires-Dist: markdownify
37
36
  Requires-Dist: pydantic
38
37
  Requires-Dist: requests
38
+ Requires-Dist: google-generativeai
39
+ Requires-Dist: lxml>=5.2.2
39
40
  Requires-Dist: termcolor
40
41
  Requires-Dist: orjson
41
42
  Requires-Dist: PyYAML
@@ -31,7 +31,6 @@ setup(
31
31
  "docstring_inheritance",
32
32
  "click",
33
33
  "curl_cffi",
34
- "lxml",
35
34
  "nest-asyncio",
36
35
  "g4f>=0.2.2.3",
37
36
  "g4f[webdriver]",
@@ -40,6 +39,8 @@ setup(
40
39
  "markdownify",
41
40
  "pydantic",
42
41
  "requests",
42
+ "google-generativeai",
43
+ "lxml>=5.2.2",
43
44
  "termcolor",
44
45
  "orjson",
45
46
  "PyYAML",
@@ -8,7 +8,6 @@ from ..AIutel import Optimizers
8
8
  from ..AIutel import Conversation
9
9
  from ..AIutel import AwesomePrompts, sanitize_stream
10
10
  from ..AIbase import Provider, AsyncProvider
11
- from Helpingai_T2 import Perplexity
12
11
  from webscout import exceptions
13
12
 
14
13
  #-----------------------------------------------REKA-----------------------------------------------
@@ -0,0 +1,3 @@
1
+ from .deepinfra import *
2
+ from .PollinationsAI import *
3
+ from .aiforce import *
@@ -0,0 +1,137 @@
1
+ import requests
2
+ import os
3
+ import time
4
+ from typing import List
5
+ from string import punctuation
6
+ from random import choice
7
+ from requests.exceptions import RequestException
8
+
9
+ from webscout.AIbase import ImageProvider
10
+
11
+ class AiForceimagger(ImageProvider):
12
+ """Image provider for pollinations.ai"""
13
+
14
+ def __init__(self, timeout: int = 60, proxies: dict = {}):
15
+ """Initializes the PollinationsAI class.
16
+
17
+ Args:
18
+ timeout (int, optional): HTTP request timeout in seconds. Defaults to 60.
19
+ proxies (dict, optional): HTTP request proxies (socks). Defaults to {}.
20
+ """
21
+ self.image_gen_endpoint = "https://api.airforce/v1/imagine2?prompt={prompt}"
22
+ self.headers = {
23
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
24
+ "Accept-Language": "en-US,en;q=0.5",
25
+ "Accept-Encoding": "gzip, deflate",
26
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0",
27
+ }
28
+ self.session = requests.Session()
29
+ self.session.headers.update(self.headers)
30
+ self.session.proxies.update(proxies)
31
+ self.timeout = timeout
32
+ self.prompt: str = "AI-generated image - webscout"
33
+ self.image_extension: str = "png"
34
+
35
+ def generate(
36
+ self, prompt: str, amount: int = 1, additives: bool = True,
37
+ max_retries: int = 3, retry_delay: int = 5
38
+ ) -> List[bytes]:
39
+ """Generate image from prompt
40
+
41
+ Args:
42
+ prompt (str): Image description.
43
+ amount (int): Total images to be generated. Defaults to 1.
44
+ additives (bool, optional): Try to make each prompt unique. Defaults to True.
45
+ width (int, optional): Width of the generated image. Defaults to 768.
46
+ height (int, optional): Height of the generated image. Defaults to 768.
47
+ model (str, optional): The model to use for image generation. Defaults to "flux".
48
+ max_retries (int, optional): Maximum number of retry attempts. Defaults to 3.
49
+ retry_delay (int, optional): Delay between retries in seconds. Defaults to 5.
50
+
51
+ Returns:
52
+ List[bytes]: List of generated images as bytes.
53
+ """
54
+ assert bool(prompt), "Prompt cannot be null"
55
+ assert isinstance(amount, int), f"Amount should be an integer only not {type(amount)}"
56
+ assert amount > 0, "Amount should be greater than 0"
57
+
58
+ ads = lambda: (
59
+ ""
60
+ if not additives
61
+ else choice(punctuation)
62
+ + choice(punctuation)
63
+ + choice(punctuation)
64
+ + choice(punctuation)
65
+ + choice(punctuation)
66
+ )
67
+
68
+ self.prompt = prompt
69
+ response = []
70
+ for _ in range(amount):
71
+ url = self.image_gen_endpoint.format(
72
+ prompt=prompt
73
+ )
74
+
75
+ for attempt in range(max_retries):
76
+ try:
77
+ resp = self.session.get(url, timeout=self.timeout)
78
+ resp.raise_for_status()
79
+ response.append(resp.content)
80
+ break
81
+ except RequestException as e:
82
+ if attempt == max_retries - 1:
83
+ print(f"Failed to generate image after {max_retries} attempts: {e}")
84
+ raise
85
+ else:
86
+ print(f"Attempt {attempt + 1} failed. Retrying in {retry_delay} seconds...")
87
+ time.sleep(retry_delay)
88
+
89
+ return response
90
+
91
+ def save(
92
+ self,
93
+ response: List[bytes],
94
+ name: str = None,
95
+ dir: str = os.getcwd(),
96
+ filenames_prefix: str = "",
97
+ ) -> List[str]:
98
+ """Save generated images
99
+
100
+ Args:
101
+ response (List[bytes]): List of generated images as bytes.
102
+ name (str): Filename for the images. Defaults to the last prompt.
103
+ dir (str, optional): Directory for saving images. Defaults to os.getcwd().
104
+ filenames_prefix (str, optional): String to be prefixed at each filename to be returned.
105
+
106
+ Returns:
107
+ List[str]: List of saved filenames.
108
+ """
109
+ assert isinstance(response, list), f"Response should be of {list} not {type(response)}"
110
+ name = self.prompt if name is None else name
111
+
112
+ filenames = []
113
+ count = 0
114
+ for image in response:
115
+ def complete_path():
116
+ count_value = "" if count == 0 else f"_{count}"
117
+ return os.path.join(dir, name + count_value + "." + self.image_extension)
118
+
119
+ while os.path.isfile(complete_path()):
120
+ count += 1
121
+
122
+ absolute_path_to_file = complete_path()
123
+ filenames.append(filenames_prefix + os.path.split(absolute_path_to_file)[1])
124
+
125
+ with open(absolute_path_to_file, "wb") as fh:
126
+ fh.write(image)
127
+
128
+ return filenames
129
+
130
+
131
+ if __name__ == "__main__":
132
+ bot = AiForceimagger()
133
+ try:
134
+ resp = bot.generate("AI-generated image - webscout", 1)
135
+ print(bot.save(resp))
136
+ except Exception as e:
137
+ print(f"An error occurred: {e}")
@@ -3,7 +3,8 @@ from dataclasses import dataclass
3
3
  from bs4 import BeautifulSoup
4
4
  import tls_client
5
5
  import random
6
-
6
+ from typing import ClassVar, NoReturn, List, Dict, Any
7
+ import requests
7
8
 
8
9
  @dataclass
9
10
  class DomainModel:
@@ -148,7 +149,50 @@ class TemporaryPhoneNumber:
148
149
  message = {"content": None, "frm": "", "time": ""}
149
150
 
150
151
  return messages
151
-
152
+
153
+ class VNEngine:
154
+ def __init__(self) -> NoReturn:
155
+ self.lang: str = "?lang=en"
156
+ self.base: str = "https://onlinesim.io/"
157
+ self.endpoint: str = "api/v1/free_numbers_content/"
158
+ self.country_url: str = f"{self.base}{self.endpoint}countries"
159
+
160
+ def get_online_countries(self) -> List[Dict[str, str]]:
161
+ response: Any = requests.get(url=self.country_url).json()
162
+ if response["response"] == "1":
163
+ all_countries: List[Dict[str, str]] = response["counties"]
164
+ online_countries: List[Dict[str, str]] = list(
165
+ filter(lambda x: x["online"] == True, all_countries)
166
+ )
167
+ return online_countries
168
+ return []
169
+
170
+ def get_country_numbers(self, country: str) -> List[Dict[str, str]]:
171
+ numbers_url: str = f"{self.country_url}/{country}{self.lang}"
172
+ response: Any = requests.get(url=numbers_url).json()
173
+ if response["response"] == "1":
174
+ numbers: List[Dict[str, str]] = list(
175
+ map(lambda x: {"data_humans": x["data_humans"], "full_number": x["full_number"]}, response["numbers"])
176
+ )
177
+ return numbers
178
+ return []
179
+
180
+ def get_number_inbox(self, country: str, number: str) -> Dict[str, str]:
181
+ number_detail_url: str = f"{self.country_url}/{country}/{number}{self.lang}"
182
+ response: Any = requests.get(url=number_detail_url).json()
183
+ if response["response"] != "1" or not response["online"]:
184
+ print(f"Error: Unable to retrieve inbox messages for {country} - {number}")
185
+ return {}
186
+
187
+ messages: List[Dict[str, str]] = []
188
+ for msg_data in response["messages"]["data"]:
189
+ try:
190
+ msg = {"data_humans": msg_data["data_humans"], "text": msg_data["text"]}
191
+ messages.append(msg)
192
+ except KeyError as e:
193
+ print(f"Warning: Missing key '{str(e)}' in message data")
194
+
195
+ return {"messages": messages}
152
196
 
153
197
  class sms_message:
154
198
  def __init__(self, content, frm, time):
@@ -1,2 +1,2 @@
1
- __version__ = "5.4"
1
+ __version__ = "5.5"
2
2
  __prog__ = "webscout"
@@ -37,7 +37,7 @@ class AsyncWEBS(WEBS):
37
37
  pass
38
38
 
39
39
  async def achat(self, keywords: str, model: str = "gpt-3.5") -> str:
40
- """Initiates async chat session with DuckDuckGo AI.
40
+ """Initiates async chat session with webscout AI.
41
41
 
42
42
  Args:
43
43
  keywords (str): The initial message or question to send to the AI.
@@ -59,7 +59,7 @@ class AsyncWEBS(WEBS):
59
59
  backend: str = "api",
60
60
  max_results: Optional[int] = None,
61
61
  ) -> List[Dict[str, str]]:
62
- """DuckDuckGo async text search. Query params: https://duckduckgo.com/params.
62
+ """webscout async text search. Query params: https://duckduckgo.com/params.
63
63
 
64
64
  Args:
65
65
  keywords: keywords for query.
@@ -98,7 +98,7 @@ class AsyncWEBS(WEBS):
98
98
  license_image: Optional[str] = None,
99
99
  max_results: Optional[int] = None,
100
100
  ) -> List[Dict[str, str]]:
101
- """DuckDuckGo async images search. Query params: https://duckduckgo.com/params.
101
+ """webscout async images search. Query params: https://duckduckgo.com/params.
102
102
 
103
103
  Args:
104
104
  keywords: keywords for query.
@@ -152,7 +152,7 @@ class AsyncWEBS(WEBS):
152
152
  license_videos: Optional[str] = None,
153
153
  max_results: Optional[int] = None,
154
154
  ) -> List[Dict[str, str]]:
155
- """DuckDuckGo async videos search. Query params: https://duckduckgo.com/params.
155
+ """webscout async videos search. Query params: https://duckduckgo.com/params.
156
156
 
157
157
  Args:
158
158
  keywords: keywords for query.
@@ -194,7 +194,7 @@ class AsyncWEBS(WEBS):
194
194
  timelimit: Optional[str] = None,
195
195
  max_results: Optional[int] = None,
196
196
  ) -> List[Dict[str, str]]:
197
- """DuckDuckGo async news search. Query params: https://duckduckgo.com/params.
197
+ """webscout async news search. Query params: https://duckduckgo.com/params.
198
198
 
199
199
  Args:
200
200
  keywords: keywords for query.
@@ -226,7 +226,7 @@ class AsyncWEBS(WEBS):
226
226
  self,
227
227
  keywords: str,
228
228
  ) -> List[Dict[str, str]]:
229
- """DuckDuckGo async instant answers. Query params: https://duckduckgo.com/params.
229
+ """webscout async instant answers. Query params: https://duckduckgo.com/params.
230
230
 
231
231
  Args:
232
232
  keywords: keywords for query,
@@ -251,7 +251,7 @@ class AsyncWEBS(WEBS):
251
251
  keywords: str,
252
252
  region: str = "wt-wt",
253
253
  ) -> List[Dict[str, str]]:
254
- """DuckDuckGo async suggestions. Query params: https://duckduckgo.com/params.
254
+ """webscout async suggestions. Query params: https://duckduckgo.com/params.
255
255
 
256
256
  Args:
257
257
  keywords: keywords for query.
@@ -288,7 +288,7 @@ class AsyncWEBS(WEBS):
288
288
  radius: int = 0,
289
289
  max_results: Optional[int] = None,
290
290
  ) -> List[Dict[str, str]]:
291
- """DuckDuckGo async maps search. Query params: https://duckduckgo.com/params.
291
+ """webscout async maps search. Query params: https://duckduckgo.com/params.
292
292
 
293
293
  Args:
294
294
  keywords: keywords for query
@@ -337,7 +337,7 @@ class AsyncWEBS(WEBS):
337
337
  from_: Optional[str] = None,
338
338
  to: str = "en",
339
339
  ) -> List[Dict[str, str]]:
340
- """DuckDuckGo async translate.
340
+ """webscout async translate.
341
341
 
342
342
  Args:
343
343
  keywords: string or list of strings to translate.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webscout
3
- Version: 5.4
3
+ Version: 5.5
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
@@ -27,7 +27,6 @@ License-File: LICENSE.md
27
27
  Requires-Dist: docstring_inheritance
28
28
  Requires-Dist: click
29
29
  Requires-Dist: curl_cffi
30
- Requires-Dist: lxml
31
30
  Requires-Dist: nest-asyncio
32
31
  Requires-Dist: g4f>=0.2.2.3
33
32
  Requires-Dist: g4f[webdriver]
@@ -36,6 +35,8 @@ Requires-Dist: beautifulsoup4
36
35
  Requires-Dist: markdownify
37
36
  Requires-Dist: pydantic
38
37
  Requires-Dist: requests
38
+ Requires-Dist: google-generativeai
39
+ Requires-Dist: lxml>=5.2.2
39
40
  Requires-Dist: termcolor
40
41
  Requires-Dist: orjson
41
42
  Requires-Dist: PyYAML
@@ -95,6 +95,7 @@ webscout/Provider/xdash.py
95
95
  webscout/Provider/yep.py
96
96
  webscout/Provider/TTI/PollinationsAI.py
97
97
  webscout/Provider/TTI/__init__.py
98
+ webscout/Provider/TTI/aiforce.py
98
99
  webscout/Provider/TTI/deepinfra.py
99
100
  webscout/Provider/TTS/__init__.py
100
101
  webscout/Provider/TTS/streamElements.py
@@ -1,7 +1,6 @@
1
1
  docstring_inheritance
2
2
  click
3
3
  curl_cffi
4
- lxml
5
4
  nest-asyncio
6
5
  g4f>=0.2.2.3
7
6
  g4f[webdriver]
@@ -10,6 +9,8 @@ beautifulsoup4
10
9
  markdownify
11
10
  pydantic
12
11
  requests
12
+ google-generativeai
13
+ lxml>=5.2.2
13
14
  termcolor
14
15
  orjson
15
16
  PyYAML
@@ -1,2 +0,0 @@
1
- from .deepinfra import *
2
- from .PollinationsAI import *
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes