webscout 8.2.6__py3-none-any.whl → 8.2.8__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.
- webscout/AIauto.py +1 -1
- webscout/AIutel.py +298 -239
- webscout/Extra/Act.md +309 -0
- webscout/Extra/GitToolkit/gitapi/README.md +110 -0
- webscout/Extra/YTToolkit/README.md +375 -0
- webscout/Extra/YTToolkit/ytapi/README.md +44 -0
- webscout/Extra/YTToolkit/ytapi/extras.py +92 -19
- webscout/Extra/autocoder/autocoder.py +309 -114
- webscout/Extra/autocoder/autocoder_utiles.py +15 -15
- webscout/Extra/gguf.md +430 -0
- webscout/Extra/tempmail/README.md +488 -0
- webscout/Extra/weather.md +281 -0
- webscout/Litlogger/Readme.md +175 -0
- webscout/Provider/AISEARCH/DeepFind.py +41 -37
- webscout/Provider/AISEARCH/README.md +279 -0
- webscout/Provider/AISEARCH/__init__.py +0 -1
- webscout/Provider/AISEARCH/genspark_search.py +228 -86
- webscout/Provider/AISEARCH/hika_search.py +11 -11
- webscout/Provider/AISEARCH/scira_search.py +324 -322
- webscout/Provider/AllenAI.py +7 -14
- webscout/Provider/Blackboxai.py +518 -74
- webscout/Provider/Cloudflare.py +0 -1
- webscout/Provider/Deepinfra.py +23 -21
- webscout/Provider/Flowith.py +217 -0
- webscout/Provider/FreeGemini.py +250 -0
- webscout/Provider/GizAI.py +15 -5
- webscout/Provider/Glider.py +11 -8
- webscout/Provider/HeckAI.py +80 -52
- webscout/Provider/Koboldai.py +7 -4
- webscout/Provider/LambdaChat.py +2 -2
- webscout/Provider/Marcus.py +10 -18
- webscout/Provider/OPENAI/BLACKBOXAI.py +735 -0
- webscout/Provider/OPENAI/Cloudflare.py +378 -0
- webscout/Provider/OPENAI/FreeGemini.py +282 -0
- webscout/Provider/OPENAI/NEMOTRON.py +244 -0
- webscout/Provider/OPENAI/README.md +1253 -0
- webscout/Provider/OPENAI/__init__.py +8 -0
- webscout/Provider/OPENAI/ai4chat.py +293 -286
- webscout/Provider/OPENAI/api.py +810 -0
- webscout/Provider/OPENAI/base.py +217 -14
- webscout/Provider/OPENAI/c4ai.py +373 -367
- webscout/Provider/OPENAI/chatgpt.py +7 -0
- webscout/Provider/OPENAI/chatgptclone.py +7 -0
- webscout/Provider/OPENAI/chatsandbox.py +172 -0
- webscout/Provider/OPENAI/deepinfra.py +30 -20
- webscout/Provider/OPENAI/e2b.py +6 -0
- webscout/Provider/OPENAI/exaai.py +7 -0
- webscout/Provider/OPENAI/exachat.py +6 -0
- webscout/Provider/OPENAI/flowith.py +162 -0
- webscout/Provider/OPENAI/freeaichat.py +359 -352
- webscout/Provider/OPENAI/glider.py +323 -316
- webscout/Provider/OPENAI/groq.py +361 -354
- webscout/Provider/OPENAI/heckai.py +30 -64
- webscout/Provider/OPENAI/llmchatco.py +8 -0
- webscout/Provider/OPENAI/mcpcore.py +7 -0
- webscout/Provider/OPENAI/multichat.py +8 -0
- webscout/Provider/OPENAI/netwrck.py +356 -350
- webscout/Provider/OPENAI/opkfc.py +8 -0
- webscout/Provider/OPENAI/scirachat.py +471 -462
- webscout/Provider/OPENAI/sonus.py +9 -0
- webscout/Provider/OPENAI/standardinput.py +9 -1
- webscout/Provider/OPENAI/textpollinations.py +339 -329
- webscout/Provider/OPENAI/toolbaz.py +7 -0
- webscout/Provider/OPENAI/typefully.py +355 -0
- webscout/Provider/OPENAI/typegpt.py +358 -346
- webscout/Provider/OPENAI/uncovrAI.py +7 -0
- webscout/Provider/OPENAI/utils.py +103 -7
- webscout/Provider/OPENAI/venice.py +12 -0
- webscout/Provider/OPENAI/wisecat.py +19 -19
- webscout/Provider/OPENAI/writecream.py +7 -0
- webscout/Provider/OPENAI/x0gpt.py +7 -0
- webscout/Provider/OPENAI/yep.py +50 -21
- webscout/Provider/OpenGPT.py +1 -1
- webscout/Provider/TTI/AiForce/README.md +159 -0
- webscout/Provider/TTI/FreeAIPlayground/README.md +99 -0
- webscout/Provider/TTI/ImgSys/README.md +174 -0
- webscout/Provider/TTI/MagicStudio/README.md +101 -0
- webscout/Provider/TTI/Nexra/README.md +155 -0
- webscout/Provider/TTI/PollinationsAI/README.md +146 -0
- webscout/Provider/TTI/README.md +128 -0
- webscout/Provider/TTI/aiarta/README.md +134 -0
- webscout/Provider/TTI/artbit/README.md +100 -0
- webscout/Provider/TTI/fastflux/README.md +129 -0
- webscout/Provider/TTI/huggingface/README.md +114 -0
- webscout/Provider/TTI/piclumen/README.md +161 -0
- webscout/Provider/TTI/pixelmuse/README.md +79 -0
- webscout/Provider/TTI/talkai/README.md +139 -0
- webscout/Provider/TTS/README.md +192 -0
- webscout/Provider/TTS/__init__.py +2 -1
- webscout/Provider/TTS/speechma.py +500 -100
- webscout/Provider/TTS/sthir.py +94 -0
- webscout/Provider/TeachAnything.py +3 -7
- webscout/Provider/TextPollinationsAI.py +4 -2
- webscout/Provider/{aimathgpt.py → UNFINISHED/ChatHub.py} +88 -68
- webscout/Provider/UNFINISHED/liner_api_request.py +263 -0
- webscout/Provider/UNFINISHED/oivscode.py +351 -0
- webscout/Provider/UNFINISHED/test_lmarena.py +119 -0
- webscout/Provider/Writecream.py +11 -2
- webscout/Provider/__init__.py +8 -14
- webscout/Provider/ai4chat.py +4 -58
- webscout/Provider/asksteve.py +17 -9
- webscout/Provider/cerebras.py +3 -1
- webscout/Provider/koala.py +170 -268
- webscout/Provider/llmchat.py +3 -0
- webscout/Provider/lmarena.py +198 -0
- webscout/Provider/meta.py +7 -4
- webscout/Provider/samurai.py +223 -0
- webscout/Provider/scira_chat.py +4 -2
- webscout/Provider/typefully.py +23 -151
- webscout/__init__.py +4 -2
- webscout/cli.py +3 -28
- webscout/conversation.py +35 -35
- webscout/litagent/Readme.md +276 -0
- webscout/scout/README.md +402 -0
- webscout/swiftcli/Readme.md +323 -0
- webscout/version.py +1 -1
- webscout/webscout_search.py +2 -182
- webscout/webscout_search_async.py +1 -179
- webscout/zeroart/README.md +89 -0
- webscout/zeroart/__init__.py +134 -54
- webscout/zeroart/base.py +19 -13
- webscout/zeroart/effects.py +101 -99
- webscout/zeroart/fonts.py +1239 -816
- {webscout-8.2.6.dist-info → webscout-8.2.8.dist-info}/METADATA +116 -74
- {webscout-8.2.6.dist-info → webscout-8.2.8.dist-info}/RECORD +130 -103
- {webscout-8.2.6.dist-info → webscout-8.2.8.dist-info}/WHEEL +1 -1
- webscout-8.2.8.dist-info/entry_points.txt +3 -0
- webscout-8.2.8.dist-info/top_level.txt +1 -0
- webscout/Provider/AISEARCH/ISou.py +0 -256
- webscout/Provider/ElectronHub.py +0 -773
- webscout/Provider/Free2GPT.py +0 -241
- webscout/Provider/GPTWeb.py +0 -249
- webscout/Provider/bagoodex.py +0 -145
- webscout/Provider/geminiprorealtime.py +0 -160
- webscout/scout/core.py +0 -881
- webscout-8.2.6.dist-info/entry_points.txt +0 -3
- webscout-8.2.6.dist-info/top_level.txt +0 -2
- webstoken/__init__.py +0 -30
- webstoken/classifier.py +0 -189
- webstoken/keywords.py +0 -216
- webstoken/language.py +0 -128
- webstoken/ner.py +0 -164
- webstoken/normalizer.py +0 -35
- webstoken/processor.py +0 -77
- webstoken/sentiment.py +0 -206
- webstoken/stemmer.py +0 -73
- webstoken/tagger.py +0 -60
- webstoken/tokenizer.py +0 -158
- /webscout/Provider/{Youchat.py → UNFINISHED/Youchat.py} +0 -0
- {webscout-8.2.6.dist-info → webscout-8.2.8.dist-info}/licenses/LICENSE.md +0 -0
webstoken/tokenizer.py
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Tokenization utilities for sentence and word-level tokenization.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from typing import List, Dict, Set, Pattern
|
|
6
|
-
import re
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class SentenceTokenizer:
|
|
10
|
-
"""Advanced sentence tokenizer with support for complex cases and proper formatting."""
|
|
11
|
-
|
|
12
|
-
def __init__(self) -> None:
|
|
13
|
-
# Common abbreviations by category
|
|
14
|
-
self.TITLES: Set[str] = {
|
|
15
|
-
'mr', 'mrs', 'ms', 'dr', 'prof', 'rev', 'sr', 'jr', 'esq',
|
|
16
|
-
'hon', 'pres', 'gov', 'atty', 'supt', 'det', 'rev', 'col','maj', 'gen', 'capt', 'cmdr',
|
|
17
|
-
'lt', 'sgt', 'cpl', 'pvt'
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
self.ACADEMIC: Set[str] = {
|
|
21
|
-
'ph.d', 'phd', 'm.d', 'md', 'b.a', 'ba', 'm.a', 'ma', 'd.d.s', 'dds',
|
|
22
|
-
'm.b.a', 'mba', 'b.sc', 'bsc', 'm.sc', 'msc', 'llb', 'll.b', 'bl'
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
self.ORGANIZATIONS: Set[str] = {
|
|
26
|
-
'inc', 'ltd', 'co', 'corp', 'llc', 'llp', 'assn', 'bros', 'plc', 'cos',
|
|
27
|
-
'intl', 'dept', 'est', 'dist', 'mfg', 'div'
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
self.MONTHS: Set[str] = {
|
|
31
|
-
'jan', 'feb', 'mar', 'apr', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
self.UNITS: Set[str] = {
|
|
35
|
-
'oz', 'pt', 'qt', 'gal', 'ml', 'cc', 'km', 'cm', 'mm', 'ft', 'in',
|
|
36
|
-
'kg', 'lb', 'lbs', 'hz', 'khz', 'mhz', 'ghz', 'kb', 'mb', 'gb', 'tb'
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
self.TECHNOLOGY: Set[str] = {
|
|
40
|
-
'v', 'ver', 'app', 'sys', 'dir', 'exe', 'lib', 'api', 'sdk', 'url',
|
|
41
|
-
'cpu', 'gpu', 'ram', 'rom', 'hdd', 'ssd', 'lan', 'wan', 'sql', 'html'
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
self.MISC: Set[str] = {
|
|
45
|
-
'vs', 'etc', 'ie', 'eg', 'no', 'al', 'ca', 'cf', 'pp', 'est', 'st',
|
|
46
|
-
'approx', 'appt', 'apt', 'dept', 'depts', 'min', 'max', 'avg'
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
# Combine all abbreviations
|
|
50
|
-
self.all_abbreviations: Set[str] = (
|
|
51
|
-
self.TITLES | self.ACADEMIC | self.ORGANIZATIONS |
|
|
52
|
-
self.MONTHS | self.UNITS | self.TECHNOLOGY | self.MISC
|
|
53
|
-
)
|
|
54
|
-
|
|
55
|
-
# Special patterns
|
|
56
|
-
self.ELLIPSIS: str = r'\.{2,}|…'
|
|
57
|
-
self.URL_PATTERN: str = (
|
|
58
|
-
r'(?:https?:\/\/|www\.)[\w\-\.]+\.[a-zA-Z]{2,}(?:\/[^\s]*)?'
|
|
59
|
-
)
|
|
60
|
-
self.EMAIL_PATTERN: str = r'[\w\.-]+@[\w\.-]+\.\w+'
|
|
61
|
-
self.NUMBER_PATTERN: str = (
|
|
62
|
-
r'\d+(?:\.\d+)?(?:%|°|km|cm|mm|m|kg|g|lb|ft|in|mph|kmh|hz|mhz|ghz)?'
|
|
63
|
-
)
|
|
64
|
-
|
|
65
|
-
# Quote and bracket pairs
|
|
66
|
-
self.QUOTE_PAIRS: Dict[str, str] = {
|
|
67
|
-
'"': '"', "'": "'", '"': '"', "「": "」", "『": "』",
|
|
68
|
-
"«": "»", "‹": "›", "'": "'", "‚": "'"
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
self.BRACKETS: Dict[str, str] = {
|
|
72
|
-
'(': ')', '[': ']', '{': '}', '⟨': '⟩', '「': '」',
|
|
73
|
-
'『': '』', '【': '】', '〖': '〗', '「': '」'
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
# Compile regex patterns
|
|
77
|
-
self._compile_patterns()
|
|
78
|
-
|
|
79
|
-
def _compile_patterns(self) -> None:
|
|
80
|
-
"""Compile regex patterns for better performance."""
|
|
81
|
-
# Pattern for finding potential sentence boundaries
|
|
82
|
-
self.SENTENCE_END: Pattern = re.compile(
|
|
83
|
-
r'''
|
|
84
|
-
# Group for sentence endings
|
|
85
|
-
(?:
|
|
86
|
-
# Standard endings with optional quotes/brackets
|
|
87
|
-
(?<=[.!?])[\"\'\)\]\}»›」』\s]*
|
|
88
|
-
|
|
89
|
-
# Ellipsis
|
|
90
|
-
|(?:\.{2,}|…)
|
|
91
|
-
|
|
92
|
-
# Asian-style endings
|
|
93
|
-
|(?<=[。!?」』】\s])
|
|
94
|
-
)
|
|
95
|
-
|
|
96
|
-
# Must be followed by whitespace and capital letter or number
|
|
97
|
-
(?=\s+(?:[A-Z0-9]|["'({[\[「『《‹〈][A-Z]))
|
|
98
|
-
''',
|
|
99
|
-
re.VERBOSE
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
# Pattern for abbreviations
|
|
103
|
-
abbrev_pattern = '|'.join(re.escape(abbr) for abbr in self.all_abbreviations)
|
|
104
|
-
self.ABBREV_PATTERN: Pattern = re.compile(
|
|
105
|
-
fr'\b(?:{abbrev_pattern})\.?',
|
|
106
|
-
re.IGNORECASE
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
def tokenize(self, text: str) -> List[str]:
|
|
110
|
-
"""Split text into sentences while handling complex cases."""
|
|
111
|
-
if not text or not text.strip():
|
|
112
|
-
return []
|
|
113
|
-
|
|
114
|
-
# Initial split on potential sentence boundaries
|
|
115
|
-
sentences = self.SENTENCE_END.split(text)
|
|
116
|
-
|
|
117
|
-
# Clean and validate sentences
|
|
118
|
-
final_sentences = []
|
|
119
|
-
for sentence in sentences:
|
|
120
|
-
sentence = sentence.strip()
|
|
121
|
-
if sentence:
|
|
122
|
-
final_sentences.append(sentence)
|
|
123
|
-
|
|
124
|
-
return final_sentences
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
class WordTokenizer:
|
|
128
|
-
"""Simple but effective word tokenizer with support for contractions and special cases."""
|
|
129
|
-
|
|
130
|
-
def __init__(self):
|
|
131
|
-
self.contractions = {
|
|
132
|
-
"n't": "not", "'ll": "will", "'re": "are", "'s": "is",
|
|
133
|
-
"'m": "am", "'ve": "have", "'d": "would"
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
self.word_pattern = re.compile(r"""
|
|
137
|
-
(?:[A-Za-z]+(?:[''][A-Za-z]+)*)| # Words with optional internal apostrophes
|
|
138
|
-
(?:\d+(?:,\d{3})*(?:\.\d+)?)| # Numbers with commas and decimals
|
|
139
|
-
(?:[@#]?\w+)| # Hashtags and mentions
|
|
140
|
-
(?:[^\w\s]) # Punctuation and symbols
|
|
141
|
-
""", re.VERBOSE)
|
|
142
|
-
|
|
143
|
-
def tokenize(self, text: str) -> List[str]:
|
|
144
|
-
"""Split text into words while handling contractions and special cases."""
|
|
145
|
-
tokens = []
|
|
146
|
-
for match in self.word_pattern.finditer(text):
|
|
147
|
-
word = match.group()
|
|
148
|
-
# Handle contractions
|
|
149
|
-
for contraction, expansion in self.contractions.items():
|
|
150
|
-
if word.endswith(contraction):
|
|
151
|
-
base = word[:-len(contraction)]
|
|
152
|
-
if base:
|
|
153
|
-
tokens.append(base)
|
|
154
|
-
tokens.append(expansion)
|
|
155
|
-
break
|
|
156
|
-
else:
|
|
157
|
-
tokens.append(word)
|
|
158
|
-
return tokens
|
|
File without changes
|
|
File without changes
|