webscout 5.0__py3-none-any.whl → 5.2__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.

@@ -0,0 +1,114 @@
1
+ import requests
2
+ import json
3
+ import pygame
4
+ import time
5
+ from pathlib import Path
6
+ from typing import Generator
7
+
8
+ from webscout import exceptions
9
+ from webscout.AIbase import TTSProvider
10
+
11
+ class Voicepods(TTSProvider):
12
+ """
13
+ A class to interact with the Voicepods text-to-speech API.
14
+ """
15
+
16
+ def __init__(self, timeout: int = 20, proxies: dict = None):
17
+ """
18
+ Initializes the Voicepods API client.
19
+ """
20
+ self.api_endpoint = "https://voicepods-stream.vercel.app/api/resemble"
21
+ self.headers = {
22
+ 'Accept': '*/*',
23
+ 'Accept-Encoding': 'gzip, deflate, br, zstd',
24
+ 'Accept-Language': 'en-US,en;q=0.9,en-IN;q=0.8',
25
+ 'Content-Type': 'application/json',
26
+ 'DNT': '1',
27
+ 'Origin': 'https://voicepods-stream.vercel.app',
28
+ 'Referer': 'https://voicepods-stream.vercel.app/',
29
+ 'Sec-CH-UA': '"Chromium";v="128", "Not;A=Brand";v="24", "Microsoft Edge";v="128"',
30
+ 'Sec-CH-UA-Mobile': '?0',
31
+ 'Sec-CH-UA-Platform': '"Windows"',
32
+ 'Sec-Fetch-Dest': 'empty',
33
+ 'Sec-Fetch-Mode': 'cors',
34
+ 'Sec-Fetch-Site': 'same-origin',
35
+ 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0',
36
+ }
37
+ self.session = requests.Session()
38
+ self.session.headers.update(self.headers)
39
+ if proxies:
40
+ self.session.proxies.update(proxies)
41
+ self.timeout = timeout
42
+ self.audio_cache_dir = Path("./audio_cache")
43
+
44
+ def tts(self, text: str) -> str:
45
+ """
46
+ Converts text to speech using the Voicepods API.
47
+
48
+ Args:
49
+ text (str): The text to be converted to speech.
50
+
51
+ Returns:
52
+ str: The filename of the saved audio file.
53
+
54
+ Raises:
55
+ exceptions.FailedToGenerateResponseError: If there is an error generating or saving the audio.
56
+ """
57
+ payload = json.dumps({"query": text})
58
+ filename = self.audio_cache_dir / f"{int(time.time())}.wav" # Using timestamp for filename
59
+
60
+ try:
61
+ response = self.session.post(self.api_endpoint, data=payload, timeout=self.timeout)
62
+ response.raise_for_status()
63
+
64
+ content_type = response.headers.get('Content-Type', '')
65
+ if 'audio' not in content_type.lower():
66
+ raise ValueError(f"Unexpected content type: {content_type}")
67
+
68
+ audio_data = response.content
69
+ self._save_audio(audio_data, filename)
70
+ return filename.as_posix() # Return the filename as a string
71
+
72
+ except requests.exceptions.RequestException as e:
73
+ raise exceptions.FailedToGenerateResponseError(f"Error generating audio: {e}")
74
+
75
+ def _save_audio(self, audio_data: bytes, filename: Path):
76
+ """Saves the audio data to a WAV file in the audio cache directory."""
77
+ try:
78
+ # Create the audio_cache directory if it doesn't exist
79
+ self.audio_cache_dir.mkdir(parents=True, exist_ok=True)
80
+
81
+ riff_start = audio_data.find(b'RIFF')
82
+ if riff_start == -1:
83
+ raise ValueError("RIFF header not found in audio data")
84
+
85
+ trimmed_audio_data = audio_data[riff_start:]
86
+
87
+ with open(filename, "wb") as f:
88
+ f.write(trimmed_audio_data)
89
+
90
+ except Exception as e:
91
+ raise exceptions.FailedToGenerateResponseError(f"Error saving audio: {e}")
92
+
93
+ def play_audio(self, filename: str):
94
+ """Plays the audio file using pygame."""
95
+ try:
96
+ pygame.mixer.init()
97
+ pygame.mixer.music.load(filename)
98
+ pygame.mixer.music.play()
99
+ while pygame.mixer.music.get_busy():
100
+ pygame.time.Clock().tick(10)
101
+ except Exception as e:
102
+ raise RuntimeError(f"Error playing audio: {e}")
103
+
104
+ # Example usage
105
+ if __name__ == "__main__":
106
+
107
+ voicepods = Voicepods()
108
+ text = "Hello, this is a test of the Voicepods text-to-speech system."
109
+
110
+ print("Generating audio...")
111
+ audio_file = voicepods.tts(text)
112
+
113
+ print("Playing audio...")
114
+ voicepods.play_audio(audio_file)
@@ -0,0 +1,177 @@
1
+ import requests
2
+ from requests.exceptions import RequestException
3
+ from typing import Any, Dict
4
+ import logging
5
+ import random
6
+
7
+ from webscout.AIutel import Conversation, Optimizers
8
+
9
+ class TeachAnything:
10
+ """
11
+ A class to interact with the Teach-Anything API.
12
+ """
13
+
14
+
15
+ def __init__(
16
+ self,
17
+ is_conversation: bool = True,
18
+ max_tokens: int = 600,
19
+ timeout: int = 30,
20
+ intro: str = None,
21
+ filepath: str = None,
22
+ update_file: bool = True,
23
+ proxies: dict = {},
24
+ history_offset: int = 10250,
25
+ act: str = None,
26
+ ) -> None:
27
+ """
28
+ Initializes the Teach-Anything API with given parameters.
29
+
30
+ Args:
31
+ is_conversation (bool, optional): Flag for chatting conversationally. Defaults to True.
32
+ max_tokens (int, optional): Maximum number of tokens to be generated upon completion. Defaults to 600.
33
+ timeout (int, optional): Http request timeout. Defaults to 30.
34
+ intro (str, optional): Conversation introductory prompt. Defaults to None.
35
+ filepath (str, optional): Path to file containing conversation history. Defaults to None.
36
+ update_file (bool, optional): Add new prompts and responses to the file. Defaults to True.
37
+ proxies (dict, optional): Http request proxies. Defaults to {}.
38
+ history_offset (int, optional): Limit conversation history to this number of last texts. Defaults to 10250.
39
+ act (str|int, optional): Awesome prompt key or index. (Used as intro). Defaults to None.
40
+ model (str, optional): AI model to use for text generation. Defaults to "gpt4".
41
+ """
42
+
43
+
44
+ self.session = requests.Session()
45
+ self.is_conversation = is_conversation
46
+ self.max_tokens_to_sample = max_tokens
47
+ self.api_endpoint = "https://www.teach-anything.com/api/generate"
48
+ self.timeout = timeout
49
+ self.last_response = {}
50
+ self.headers = {
51
+ "authority": "www.teach-anything.com",
52
+ "path": "/api/generate",
53
+ "scheme": "https",
54
+ "accept": "*/*",
55
+ "accept-encoding": "gzip, deflate, br, zstd",
56
+ "accept-language": "en-US,en;q=0.9,en-IN;q=0.8",
57
+ "content-type": "application/json",
58
+ "origin": "https://www.teach-anything.com",
59
+ "referer": "https://www.teach-anything.com/",
60
+ "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 Edg/127.0.0.0",
61
+ }
62
+ self.session.headers.update(self.headers)
63
+ self.conversation = Conversation(
64
+ is_conversation, self.max_tokens_to_sample, filepath, update_file
65
+ )
66
+ self.conversation.history_offset = history_offset
67
+ self.session.proxies = proxies
68
+
69
+ def ask(
70
+ self,
71
+ prompt: str,
72
+ stream: bool = False,
73
+ raw: bool = False,
74
+ optimizer: str = None,
75
+ conversationally: bool = False,
76
+ ) -> dict:
77
+ """Chat with AI
78
+
79
+ Args:
80
+ prompt (str): Prompt to be send.
81
+ stream (bool, optional): Whether to stream the response. Defaults to False.
82
+ raw (bool, optional): Whether to return the raw response. Defaults to False.
83
+ optimizer (str, optional): The name of the optimizer to use. Defaults to None.
84
+ conversationally (bool, optional): Whether to chat conversationally. Defaults to False.
85
+
86
+ Returns:
87
+ The response from the API.
88
+ """
89
+ conversation_prompt = self.conversation.gen_complete_prompt(prompt)
90
+ if optimizer:
91
+ if optimizer in self.__available_optimizers:
92
+ conversation_prompt = getattr(Optimizers, optimizer)(
93
+ conversation_prompt if conversationally else prompt
94
+ )
95
+ else:
96
+ raise Exception(
97
+ f"Optimizer is not one of {self.__available_optimizers}"
98
+ )
99
+
100
+ payload = {
101
+ "prompt": conversation_prompt
102
+ }
103
+ def for_stream():
104
+ response = self.session.post(self.api_endpoint, headers=self.headers, json=payload, timeout=self.timeout)
105
+ if not response.ok:
106
+ raise RequestException(
107
+ f"Failed to generate response - ({response.status_code}, {response.reason}) - {response.text}"
108
+ )
109
+
110
+ resp = response.text
111
+ self.last_response.update(dict(text=resp))
112
+ self.conversation.update_chat_history(
113
+ prompt, self.get_message(self.last_response)
114
+ )
115
+ return self.last_response
116
+
117
+ def for_non_stream():
118
+ for _ in for_stream():
119
+ pass
120
+ return self.last_response
121
+
122
+ return for_stream() if stream else for_non_stream()
123
+
124
+ def chat(
125
+ self,
126
+ prompt: str,
127
+ stream: bool = False,
128
+ optimizer: str = None,
129
+ conversationally: bool = False,
130
+ ) -> str:
131
+ """Generate response `str`
132
+ Args:
133
+ prompt (str): Prompt to be send.
134
+ stream (bool, optional): Flag for streaming response. Defaults to False.
135
+ optimizer (str, optional): Prompt optimizer name - `[code, shell_command]`. Defaults to None.
136
+ conversationally (bool, optional): Chat conversationally when using optimizer. Defaults to False.
137
+ Returns:
138
+ str: Response generated
139
+ """
140
+
141
+ def for_stream():
142
+ for response in self.ask(
143
+ prompt, True, optimizer=optimizer, conversationally=conversationally
144
+ ):
145
+ yield self.get_message(response)
146
+
147
+ def for_non_stream():
148
+ return self.get_message(
149
+ self.ask(
150
+ prompt,
151
+ False,
152
+ optimizer=optimizer,
153
+ conversationally=conversationally,
154
+ )
155
+ )
156
+
157
+ return for_stream() if stream else for_non_stream()
158
+
159
+ def get_message(self, response: dict) -> str:
160
+ """Retrieves message only from response
161
+
162
+ Args:
163
+ response (dict): Response generated by `self.ask`
164
+
165
+ Returns:
166
+ str: Message extracted
167
+ """
168
+ assert isinstance(response, dict), "Response should be of dict data-type only"
169
+ return response["text"]
170
+
171
+
172
+ if __name__ == '__main__':
173
+ from rich import print
174
+ ai = TeachAnything()
175
+ response = ai.chat(input(">>> "))
176
+ for chunk in response:
177
+ print(chunk, end="", flush=True)
@@ -43,6 +43,10 @@ from .Youchat import *
43
43
  from .yep import *
44
44
  from .Cloudflare import *
45
45
  from .turboseek import *
46
+ from .NetFly import *
47
+ from .EDITEE import *
48
+ from .TeachAnything import *
49
+ from .AI21 import *
46
50
  __all__ = [
47
51
  'ThinkAnyAI',
48
52
  'Farfalle',
@@ -89,4 +93,8 @@ __all__ = [
89
93
  'YEPCHAT',
90
94
  'Cloudflare',
91
95
  'TurboSeek',
96
+ 'NetFly',
97
+ 'Editee',
98
+ 'TeachAnything',
99
+ 'AI21',
92
100
  ]
webscout/__init__.py CHANGED
@@ -11,6 +11,8 @@ from .Bing_search import *
11
11
  import g4f
12
12
  from .YTdownloader import *
13
13
  from .Provider import *
14
+ from .Provider.TTI import *
15
+ from .Provider.TTS import *
14
16
  from .Extra import gguf
15
17
  from .Extra import autollama
16
18
  from .Extra import weather_ascii, weather
webscout/version.py CHANGED
@@ -1,2 +1,2 @@
1
- __version__ = "4.8"
1
+ __version__ = "5.2"
2
2
  __prog__ = "webscout"
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: webscout
3
- Version: 5.0
4
- Summary: Search for anything using Google, DuckDuckGo, brave, qwant, 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
3
+ Version: 5.2
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
7
7
  License: HelpingAI
@@ -66,6 +66,8 @@ Requires-Dist: requests-html
66
66
  Requires-Dist: bson
67
67
  Requires-Dist: cloudscraper
68
68
  Requires-Dist: emoji
69
+ Requires-Dist: colorlog
70
+ Requires-Dist: openai
69
71
  Provides-Extra: dev
70
72
  Requires-Dist: ruff >=0.1.6 ; extra == 'dev'
71
73
  Requires-Dist: pytest >=7.4.2 ; extra == 'dev'
@@ -404,7 +406,7 @@ for result in results:
404
406
  from webscout import BingS
405
407
  from rich import print
406
408
  searcher = BingS()
407
- results = searcher.search("Python development tools", max_results=30)
409
+ results = searcher.search("HelpingAI-9B", max_results=20, extract_webpage_text=True, max_extract_characters=1000)
408
410
  for result in results:
409
411
  print(result)
410
412
  ```
@@ -903,14 +905,34 @@ print(result)
903
905
  ___
904
906
  </details>
905
907
 
906
- ## usage of webscout AI
907
- ### 0. `Duckchat` - chat with LLM
908
+ ### Text to images - DeepInfraImager, PollinationsAI
909
+ ```python
910
+ from webscout import DeepInfraImager
911
+ bot = DeepInfraImager()
912
+ resp = bot.generate("AI-generated image - webscout", 1)
913
+ print(bot.save(resp))
914
+ ```
915
+
916
+ ### Text to Speach - Voicepods, StreamElements
917
+ ```python
918
+ from webscout import Voicepods
919
+ voicepods = Voicepods()
920
+ text = "Hello, this is a test of the Voicepods text-to-speech"
921
+
922
+ print("Generating audio...")
923
+ audio_file = voicepods.tts(text)
924
+
925
+ print("Playing audio...")
926
+ voicepods.play_audio(audio_file)
927
+ ```
928
+
929
+ ### `Duckchat` - chat with LLM
908
930
  ```python
909
931
  from webscout import WEBS as w
910
932
  R = w().chat("Who are you", model='gpt-4o-mini') # GPT-3.5 Turbo, mixtral-8x7b, llama-3-70b, claude-3-haiku, gpt-4o-mini
911
933
  print(R)
912
934
  ```
913
- ### 1. `PhindSearch` - Search using Phind.com
935
+ ### `PhindSearch` - Search using Phind.com
914
936
 
915
937
  ```python
916
938
  from webscout import PhindSearch
@@ -947,7 +969,7 @@ print(message)
947
969
  ```
948
970
 
949
971
 
950
- ### . `You.com` - search/chat with you.com - Not working
972
+ ### `You.com` - search/chat with you.com - Not working
951
973
  ```python
952
974
 
953
975
  from webscout import YouChat
@@ -974,7 +996,7 @@ message = ai.get_message(response)
974
996
  print(message)
975
997
  ```
976
998
 
977
- ### . `Gemini` - search with google gemini
999
+ ### `Gemini` - search with google gemini
978
1000
 
979
1001
  ```python
980
1002
  import webscout
@@ -992,7 +1014,7 @@ gemini = GEMINI(cookie_file=COOKIE_FILE, proxy=PROXIES)
992
1014
  response = gemini.chat("websearch about HelpingAI and who is its developer")
993
1015
  print(response)
994
1016
  ```
995
- ### . `Berlin4h` - chat with Berlin4h
1017
+ ### `Berlin4h` - chat with Berlin4h
996
1018
  ```python
997
1019
  from webscout import Berlin4h
998
1020
 
@@ -1013,7 +1035,7 @@ prompt = "Explain the concept of recursion in simple terms."
1013
1035
  response = ai.chat(prompt)
1014
1036
  print(response)
1015
1037
  ```
1016
- ### . `BlackBox` - Search/chat With BlackBox
1038
+ ### `BlackBox` - Search/chat With BlackBox
1017
1039
  ```python
1018
1040
  from webscout import BLACKBOXAI
1019
1041
  from rich import print
@@ -1044,7 +1066,7 @@ while True:
1044
1066
  r = ai.chat(prompt)
1045
1067
  print(r)
1046
1068
  ```
1047
- ### . `PERPLEXITY` - Search With PERPLEXITY
1069
+ ### `PERPLEXITY` - Search With PERPLEXITY
1048
1070
  ```python
1049
1071
  from webscout import Perplexity
1050
1072
  from rich import print
@@ -1470,7 +1492,7 @@ if "error" not in function_call_data:
1470
1492
  else:
1471
1493
  print(f"Error: {function_call_data['error']}")
1472
1494
  ```
1473
- ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, XDASH, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek,
1495
+ ### LLAMA3, pizzagpt, RUBIKSAI, Koala, Darkai, AI4Chat, Farfalle, PIAI, Felo, XDASH, Julius, YouChat, YEPCHAT, Cloudflare, TurboSeek, NetFly, Editee
1474
1496
  code similar to other provider
1475
1497
  ### `LLM`
1476
1498
  ```python
@@ -1645,15 +1667,13 @@ gguf.convert(
1645
1667
 
1646
1668
  Webscout's `autollama` utility download model from huggingface and then automatically makes it ollama ready
1647
1669
 
1648
- **Example:**
1649
-
1650
1670
  ```python
1651
1671
  from webscout import autollama
1652
1672
 
1653
- autollama(
1654
- model_path="OEvortex/HelpingAI-Lite-1.5T", # Hugging Face model ID
1655
- gguf_file="HelpingAI-Lite-1.5T.q4_k_m.gguf" # GGUF file ID
1656
- )
1673
+ model_path = "Vortex4ai/Jarvis-0.5B"
1674
+ gguf_file = "test2-q4_k_m.gguf"
1675
+
1676
+ autollama.main(model_path, gguf_file)
1657
1677
  ```
1658
1678
 
1659
1679
  **Command Line Usage:**
@@ -1,14 +1,13 @@
1
- webscout/AIauto.py,sha256=gC01wLPpnqONf9DwKqkmbC_gIWo5Lh5V8YPu4OmYnhE,19923
2
- webscout/AIbase.py,sha256=GoHbN8r0gq2saYRZv6LA-Fr9Jlcjv80STKFXUq2ZeGU,4710
3
- webscout/AIutel.py,sha256=e1RbQHMMPL_sB_P_lNk8DKWDNiTGteMiCK-_uUKagbw,34248
1
+ webscout/AIauto.py,sha256=_1gkCv8J02kADGOPTlhsjr0CVfWXJYJnc7-ACrMXPrI,12116
2
+ webscout/AIbase.py,sha256=vv0N8sDYaZKkKD9fkLpK1CA51ksZl0_PQ82tB431c-4,9215
3
+ webscout/AIutel.py,sha256=sd3C2qg0Bb0e8feA-RfZeKBVHAe0ms3VVVdpwFm4xZo,35355
4
4
  webscout/Bard.py,sha256=8XkV_j0gJ-krYYR7bd5UORWMk7VlyTd3z66RPYBtdxg,13134
5
- webscout/Bing_search.py,sha256=cjlmQtD1OrumLiWUdv1UN7X-VE__4-HxfD_HdvnuL9g,4647
5
+ webscout/Bing_search.py,sha256=8pW3ZxFDfVsrtayEoAsAAoXoOCAGv2Jk_-HvOBNfCV4,6228
6
6
  webscout/DWEBS.py,sha256=9Jtq6weBAYfAy0bMenPn1fdJyzCPHyptc6hGywrB2Ro,6203
7
7
  webscout/LLM.py,sha256=LbGCZdJf8A5dwfoGS4tyy39tAh5BDdhMZP0ScKaaQfU,4184
8
8
  webscout/YTdownloader.py,sha256=uWpUWnw9pxeEGw9KJ_3XDyQ5gd38gH1dJpr-HJo4vzU,39144
9
- webscout/__init__.py,sha256=6nDNd2K22SOVYGpMBoDZnpdXHV624oAi0HLco7iKtwA,1254
9
+ webscout/__init__.py,sha256=JsKjYyLtQMl46oriHg_aPoxYOpBDHjIBrEyiwiKzYWU,1312
10
10
  webscout/__main__.py,sha256=ZtTRgsRjUi2JOvYFLF1ZCh55Sdoz94I-BS-TlJC7WDU,126
11
- webscout/async_providers.py,sha256=MRj0klEhBYVQXnzZGG_15d0e-TPA0nOc2nn735H-wR4,622
12
11
  webscout/cli.py,sha256=RlBKeS9CSIsiBMqlzxevWtKjbY9htkZvA7J0bM_hHE8,14999
13
12
  webscout/exceptions.py,sha256=GMeOdYqWKmuFU6Uq8MHKCInXQmJc7a_7AanKdyVcYTM,607
14
13
  webscout/g4f.py,sha256=NNcnlOtIWV9R93UsBN4jBGBEJ9sJ-Np1WbgjkGVDcYc,24487
@@ -16,45 +15,49 @@ webscout/models.py,sha256=5iQIdtedT18YuTZ3npoG7kLMwcrKwhQ7928dl_7qZW0,692
16
15
  webscout/tempid.py,sha256=5oc3UbXhPGKxrMRTfRABT-V-dNzH_hOKWtLYM6iCWd4,5896
17
16
  webscout/transcriber.py,sha256=EddvTSq7dPJ42V3pQVnGuEiYQ7WjJ9uyeR9kMSxN7uY,20622
18
17
  webscout/utils.py,sha256=2O8_lftBKsv5OEvVaXCN-h0sipup0m3jxzhFdWQrdY8,2873
19
- webscout/version.py,sha256=IrNwMqWVqgJwvU8urh9gOuJhepKmqzR9y-ntbY_Eh0k,44
18
+ webscout/version.py,sha256=kYEBR9-iTYFuCIx_LnCClbTsANOXCfjXQq9O8i5H-GA,44
20
19
  webscout/voice.py,sha256=AHyeb3D8rYuAa-zBJsuMDgHq_Zvi98ROMKAUnEsKldo,1169
21
20
  webscout/webai.py,sha256=76AhP-vbPd5OW6To03I_6B18KOGEUvfi4Rbn4CqsA10,87745
22
21
  webscout/webscout_search.py,sha256=AOHkaMLmFvM1mS--wVyLiPrDAb5BPLaURBHjleWOi4w,43743
23
22
  webscout/webscout_search_async.py,sha256=dooKGwLm0cwTml55Vy6NHPPY-nymEqX2h8laX94Zg5A,14537
24
23
  webscout/websx_search.py,sha256=5hfkkmGFhyQzojUpvMzIOJ3DBZIBNS90UReaacsfu6s,521
25
- webscout/Agents/Onlinesearcher.py,sha256=GzF2JcMfj07d74mxQEoaxwtxahgLHl3b_ugTbXjOwq4,7113
26
- webscout/Agents/__init__.py,sha256=VbGyW5pulh3LRqbVTv54n5TwWsrTqOANRioG18xtdJ0,58
27
- webscout/Agents/functioncall.py,sha256=qH1Tofi4h5CK5RhXaLQhXu8swEUmcyK9R5xpS6jMLrs,5784
24
+ webscout/Agents/Onlinesearcher.py,sha256=FbQTdfNgdZb99q12gE0y8h1DUR8y2_vucrsQExByTQU,6827
25
+ webscout/Agents/__init__.py,sha256=5_vUBtBf5Nz5LRKXRRjw7Dk1m0Vnon_y545qKF0gdXs,77
26
+ webscout/Agents/ai.py,sha256=UnSWyBMSkp4WAxU4zNI9VNsZY0aAOHvT7AK0xJlJW90,7559
27
+ webscout/Agents/functioncall.py,sha256=aZN_WWznronMmVG1txJEvBrIPRDBhfOyzhUCAoMWIb0,7246
28
28
  webscout/Extra/__init__.py,sha256=GG1qUwS-HspT4TeeAIT4qFpM8PaO1ZdQhpelctaM7Rs,99
29
- webscout/Extra/autollama.py,sha256=8lyodIWAgJABzlMMHytlolPCgvUKh8ynkZD6MMEltXs,5970
29
+ webscout/Extra/autollama.py,sha256=qM8alxlWzg10BGIYKZBUtIEAXrkvEOWBwSxdPp3zq9I,6226
30
30
  webscout/Extra/gguf.py,sha256=RvSp7xuaD6epAA9iAzthUnAQ3HA5N-svMyKUadAVnw8,7009
31
31
  webscout/Extra/weather.py,sha256=wdSrQxZRpbNfyaux0BeLdaDWyde5KwxZjSUM13820X0,2460
32
32
  webscout/Extra/weather_ascii.py,sha256=Aed-_EUzvTEjBXbOpNRxkJBLa6fXsclknXP06HnQD18,808
33
33
  webscout/Local/__init__.py,sha256=RN6klpbabPGNX2YzPm_hdeUcQvieUwvJt22uAO2RKSM,238
34
- webscout/Local/_version.py,sha256=KYEVk6X3iKPM4P1cIHZJQ7pBE_UY18RRgQTg7wZ9NQg,83
34
+ webscout/Local/_version.py,sha256=QBgSP4kqSY-dGvVIyNWgv7Qs_UyS5r4SGP_WEBgE7V4,83
35
35
  webscout/Local/formats.py,sha256=BiZZSoN3e8S6-S-ykBL9ogSUs0vK11GaZ3ghc9U8GRk,18994
36
36
  webscout/Local/model.py,sha256=T_bzNNrxEyOyLyhp6fKwiuVBBkXC2a37LzJVCxFIxOU,30710
37
37
  webscout/Local/rawdog.py,sha256=ojY_O8Vb1KvR34OwWdfLgllgaAK_7HMf64ElMATvCXs,36689
38
38
  webscout/Local/samplers.py,sha256=qXwU4eLXER-2aCYzcJcTgA6BeFmi5GMpTDUX1C9pTN4,4372
39
39
  webscout/Local/thread.py,sha256=Lyf_N2CaGAn2usSWSiUXLPAgpWub8vUu_tgFgtnvZVA,27408
40
40
  webscout/Local/utils.py,sha256=CSt9IqHhVGk_nJEnKvSFbLhC5nNf01e0MtwpgMmF9pA,6197
41
+ webscout/Provider/AI21.py,sha256=JBh-xnspxTZNMcl-Gd0Cgseqht9gTM64TUv9I4Imc9k,6218
41
42
  webscout/Provider/Andi.py,sha256=uBME1v8lZbvpPHq5e_IOiOUC766uGTWMfNx9lWACssU,10681
42
43
  webscout/Provider/BasedGPT.py,sha256=pQd6_eDgdjv5_J0HZGugZ5ghqPLv2Hs18szq1G0bIh8,8905
43
44
  webscout/Provider/Berlin4h.py,sha256=-mO-ljQUV6pCnm-nKEeV7sePDn7wiGO_WG9XgVh2z10,8774
44
45
  webscout/Provider/Blackboxai.py,sha256=OXq8rF0EDHkTK65HVXPXLrJ9sp950h4c56sc-YxbsjU,17378
45
- webscout/Provider/Cloudflare.py,sha256=yIjsHsIvJjnZebTLhJBH3yfg-zJ2dKJLsuhkpJlpGaM,11530
46
+ webscout/Provider/Cloudflare.py,sha256=4KAyGtpCkNyzFh5mjUcBOQ9wXIuhk92mxs13ahYnkKE,11368
46
47
  webscout/Provider/Cohere.py,sha256=OZ7-0iaJ8L5e4Sy-L2UGm8SnBmS7CbaFIj6a08bABVw,8941
47
48
  webscout/Provider/DARKAI.py,sha256=JpfFcPfd2kp15KSJ7GJ5Zy4zrwYQ_zHpqdFD2904Ii0,9065
48
49
  webscout/Provider/Deepinfra.py,sha256=tdST5aQjaCs9_B5mrnrXmihDei73MjB-F8cpES-noc4,18756
49
50
  webscout/Provider/Deepseek.py,sha256=jp8cZhbmscDjlXLCGI8MhDGORkbbxyeUlCqu5Z5GGSI,9210
50
51
  webscout/Provider/DiscordRocks.py,sha256=AgpAofgHY8MMKYhuqhtwLM8qGiYatStc2Aa1XX-3PPU,15028
52
+ webscout/Provider/EDITEE.py,sha256=lwzMHVC9bvn_xkjOmahANuoRnP5t-an0LJdrqKOtRiQ,8362
51
53
  webscout/Provider/Farfalle.py,sha256=zl2AD5NomuHCkW21tDfI1Z-KIlhiuQ32eiNM-1B4KWQ,9010
52
54
  webscout/Provider/Gemini.py,sha256=V79nIi5vhPfvjlGYg5XuH6RfY7AyNnBqnJM-OBK99hE,8453
53
55
  webscout/Provider/Groq.py,sha256=h_dPKwqXRwmgvmEmkDYKdXwrlI4Zm2vZuCnSMItoa2w,28662
54
56
  webscout/Provider/Koboldai.py,sha256=KwWx2yPlvT9BGx37iNvSbgzWkJ9I8kSOmeg7sL1hb0M,15806
55
57
  webscout/Provider/Llama.py,sha256=pqjpB09MFufImzTav1PwTWsukSCr3QiB-yFGJIIBAu8,8293
56
- webscout/Provider/Llama3.py,sha256=qO5R5mNznrobi7eKZR8opb_UekmO0_PUEOkPTnNw9nE,7583
57
- webscout/Provider/OLLAMA.py,sha256=Modmkp_WiZaBYsv4-_5y7fHpqBJY20zWxyZZwtSfqVs,7117
58
+ webscout/Provider/Llama3.py,sha256=UnSWyBMSkp4WAxU4zNI9VNsZY0aAOHvT7AK0xJlJW90,7559
59
+ webscout/Provider/NetFly.py,sha256=5lWjxe83lzXRJN5lAzntlWY7A0-NCiZiS2K7ZoyZc8w,10243
60
+ webscout/Provider/OLLAMA.py,sha256=g8ejBjEZN0zya-10-v_njADZ796Uxu4Nbj_gaNrlj5I,7374
58
61
  webscout/Provider/Openai.py,sha256=SjfVOwY94unVnXhvN0Fkome-q2-wi4mPJk_vCGq5Fjc,20617
59
62
  webscout/Provider/PI.py,sha256=IodVvGR_RIZpGJ0ypFF4U6NBMZAZ5O1BlRFMelot8so,8364
60
63
  webscout/Provider/Perplexity.py,sha256=gUnXyVNbl6tWAqirwHEoPkjCzxpORcKxL77aoFKepBk,21485
@@ -63,9 +66,10 @@ webscout/Provider/PizzaGPT.py,sha256=EiHSt0sK9kgmcIbBmkVtuniDvOrlhdi6zim5t_EZo30
63
66
  webscout/Provider/Poe.py,sha256=ObUxa-Fa2Dq7sJcV0hc65m09StS9uWsB2-bR2rSjXDY,7510
64
67
  webscout/Provider/RUBIKSAI.py,sha256=HPY8klGBNVVkfAXb-RziNrEtJGItjiqbSyXKXTOIHW4,7954
65
68
  webscout/Provider/Reka.py,sha256=F0ZXENkhARprj5biK3mRxwiuPH0BW3ga7EWsi8agbtE,8917
69
+ webscout/Provider/TeachAnything.py,sha256=-gx3wiqywMVmVKvVwU9mL6HTSTmux3fvI6tIiCZ22fU,6785
66
70
  webscout/Provider/ThinkAnyAI.py,sha256=_qFjj0djxxrranyEY33w14oizyRjzlVwMv_hzvVtwNc,11616
67
71
  webscout/Provider/Youchat.py,sha256=p4rIodsNP3qxA78VpzZwUymSAs-uADQ_9CKuf_Nf9Ng,9582
68
- webscout/Provider/__init__.py,sha256=7M8o6_tqIrjI6G2XF3PYToZq9kWcp9JLsyk1qkJzGiQ,2038
72
+ webscout/Provider/__init__.py,sha256=wUZ-XESz9WQDR7jg418pTT_7TDV00pDCTCaWLO5ZR1c,2200
69
73
  webscout/Provider/ai4chat.py,sha256=UB77kWH5vxSqSpz7PPgM4FH0aDpGOpwHJEv42Fa1W_U,7798
70
74
  webscout/Provider/felo_search.py,sha256=mYi1xW9egUMZ47bJb0MOD9364VLYgGJsOW2NQUbe190,9314
71
75
  webscout/Provider/julius.py,sha256=ffm-9oeHYwuQMMkSXu_3ly0Xqvj-0Dh7DlatebCl1ls,10331
@@ -75,9 +79,15 @@ webscout/Provider/meta.py,sha256=3iBylmAk9d673Axvw6hFi0-0x_Fq7ZgtH_1j2_rcDwY,307
75
79
  webscout/Provider/turboseek.py,sha256=BNx_urbs6Ixr7SEOgL4Uo1iZdjYC7CxoefJcsN4LK6I,9138
76
80
  webscout/Provider/xdash.py,sha256=KUDTEX8I0z72bIDi-w5Se7xmB_lbmaX7KlCmIl2ad4c,7925
77
81
  webscout/Provider/yep.py,sha256=RbEBzHeEFxgfdnHXHuBny6NKHcYYYNA6bvTggvAzoLk,10399
78
- webscout-5.0.dist-info/LICENSE.md,sha256=9P0imsudI7MEvZe2pOcg8rKBn6E5FGHQ-riYozZI-Bk,2942
79
- webscout-5.0.dist-info/METADATA,sha256=anlsD-HmXJT4_UV8LyrT5mxdnEKznprEDn2oPcf-Ucg,50819
80
- webscout-5.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
81
- webscout-5.0.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
82
- webscout-5.0.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
83
- webscout-5.0.dist-info/RECORD,,
82
+ webscout/Provider/TTI/PollinationsAI.py,sha256=ELMc92hYXzS1uFZtRB-tbFb39C3YqpxnfM8dVcucPE0,5485
83
+ webscout/Provider/TTI/__init__.py,sha256=AjvFaww2xI7_8CHgxfBZwSd0KyXK9CnWqOOfxJqe31s,55
84
+ webscout/Provider/TTI/deepinfra.py,sha256=o54__jLrP0OaiW7CHPCJISWQTuSwA8g-mSn60gRmTXA,5967
85
+ webscout/Provider/TTS/__init__.py,sha256=g19AOO1X9Qb-MNFpwhx5lODDWQiG7HxZCO9TmOYOHGc,54
86
+ webscout/Provider/TTS/streamElements.py,sha256=MpxAARlRpPbW7x3kA02YDHp7SCZueYYimoKlq-79N4k,8047
87
+ webscout/Provider/TTS/voicepod.py,sha256=S0u3-cAKCEIO36y21TRIYdnLAPv6Ey9y8E79bkLdx1E,4327
88
+ webscout-5.2.dist-info/LICENSE.md,sha256=9P0imsudI7MEvZe2pOcg8rKBn6E5FGHQ-riYozZI-Bk,2942
89
+ webscout-5.2.dist-info/METADATA,sha256=pn01cYo70uaTRHyBmkPZjCszS8RN6ayFb8s8a5OxnvQ,51351
90
+ webscout-5.2.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
91
+ webscout-5.2.dist-info/entry_points.txt,sha256=Hh4YIIjvkqB9SVxZ2ri4DZUkgEu_WF_5_r_nZDIvfG8,73
92
+ webscout-5.2.dist-info/top_level.txt,sha256=nYIw7OKBQDr_Z33IzZUKidRD3zQEo8jOJYkMVMeN334,9
93
+ webscout-5.2.dist-info/RECORD,,
@@ -1,21 +0,0 @@
1
- from webscout import AsyncPhindSearch
2
- from webscout import AsyncYEPCHAT
3
- from webscout import AsyncOPENGPT
4
- from webscout import AsyncOPENAI
5
- from webscout import AsyncLEO
6
- from webscout import AsyncKOBOLDAI
7
- from webscout import AsyncGROQ
8
- from webscout import AsyncBLACKBOXAI
9
- from webscout.g4f import AsyncGPT4FREE
10
-
11
- mapper: dict[str, object] = {
12
- "phind": AsyncPhindSearch,
13
- "opengpt": AsyncOPENGPT,
14
- "koboldai": AsyncKOBOLDAI,
15
- "blackboxai": AsyncBLACKBOXAI,
16
- "gpt4free": AsyncGPT4FREE,
17
- "yepchat": AsyncYEPCHAT,
18
- "leo": AsyncLEO,
19
- "groq": AsyncGROQ,
20
- "openai": AsyncOPENAI,
21
- }
File without changes