webscout 8.3.6__py3-none-any.whl → 2025.10.11__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 +250 -250
- webscout/AIbase.py +379 -379
- webscout/AIutel.py +60 -58
- webscout/Bard.py +1012 -1012
- webscout/Bing_search.py +417 -417
- webscout/DWEBS.py +529 -529
- webscout/Extra/Act.md +309 -309
- webscout/Extra/GitToolkit/__init__.py +10 -10
- webscout/Extra/GitToolkit/gitapi/README.md +110 -110
- webscout/Extra/GitToolkit/gitapi/__init__.py +11 -11
- webscout/Extra/GitToolkit/gitapi/repository.py +195 -195
- webscout/Extra/GitToolkit/gitapi/user.py +96 -96
- webscout/Extra/GitToolkit/gitapi/utils.py +61 -61
- webscout/Extra/YTToolkit/README.md +375 -375
- webscout/Extra/YTToolkit/YTdownloader.py +956 -956
- webscout/Extra/YTToolkit/__init__.py +2 -2
- webscout/Extra/YTToolkit/transcriber.py +475 -475
- webscout/Extra/YTToolkit/ytapi/README.md +44 -44
- webscout/Extra/YTToolkit/ytapi/__init__.py +6 -6
- webscout/Extra/YTToolkit/ytapi/channel.py +307 -307
- webscout/Extra/YTToolkit/ytapi/errors.py +13 -13
- webscout/Extra/YTToolkit/ytapi/extras.py +118 -118
- webscout/Extra/YTToolkit/ytapi/https.py +88 -88
- webscout/Extra/YTToolkit/ytapi/patterns.py +61 -61
- webscout/Extra/YTToolkit/ytapi/playlist.py +58 -58
- webscout/Extra/YTToolkit/ytapi/pool.py +7 -7
- webscout/Extra/YTToolkit/ytapi/query.py +39 -39
- webscout/Extra/YTToolkit/ytapi/stream.py +62 -62
- webscout/Extra/YTToolkit/ytapi/utils.py +62 -62
- webscout/Extra/YTToolkit/ytapi/video.py +232 -232
- webscout/Extra/autocoder/__init__.py +9 -9
- webscout/Extra/autocoder/autocoder.py +1105 -1105
- webscout/Extra/autocoder/autocoder_utiles.py +332 -332
- webscout/Extra/gguf.md +429 -429
- webscout/Extra/gguf.py +1213 -1213
- webscout/Extra/tempmail/README.md +487 -487
- webscout/Extra/tempmail/__init__.py +27 -27
- webscout/Extra/tempmail/async_utils.py +140 -140
- webscout/Extra/tempmail/base.py +160 -160
- webscout/Extra/tempmail/cli.py +186 -186
- webscout/Extra/tempmail/emailnator.py +84 -84
- webscout/Extra/tempmail/mail_tm.py +360 -360
- webscout/Extra/tempmail/temp_mail_io.py +291 -291
- webscout/Extra/weather.md +281 -281
- webscout/Extra/weather.py +193 -193
- webscout/Litlogger/README.md +10 -10
- webscout/Litlogger/__init__.py +15 -15
- webscout/Litlogger/formats.py +13 -13
- webscout/Litlogger/handlers.py +121 -121
- webscout/Litlogger/levels.py +13 -13
- webscout/Litlogger/logger.py +134 -134
- webscout/Provider/AISEARCH/Perplexity.py +332 -332
- webscout/Provider/AISEARCH/README.md +279 -279
- webscout/Provider/AISEARCH/__init__.py +33 -11
- webscout/Provider/AISEARCH/felo_search.py +206 -206
- webscout/Provider/AISEARCH/genspark_search.py +323 -323
- webscout/Provider/AISEARCH/hika_search.py +185 -185
- webscout/Provider/AISEARCH/iask_search.py +410 -410
- webscout/Provider/AISEARCH/monica_search.py +219 -219
- webscout/Provider/AISEARCH/scira_search.py +316 -314
- webscout/Provider/AISEARCH/stellar_search.py +177 -177
- webscout/Provider/AISEARCH/webpilotai_search.py +255 -255
- webscout/Provider/Aitopia.py +314 -315
- webscout/Provider/Andi.py +3 -3
- webscout/Provider/Apriel.py +306 -0
- webscout/Provider/ChatGPTClone.py +236 -236
- webscout/Provider/ChatSandbox.py +343 -342
- webscout/Provider/Cloudflare.py +324 -324
- webscout/Provider/Cohere.py +208 -207
- webscout/Provider/Deepinfra.py +370 -369
- webscout/Provider/ExaAI.py +260 -260
- webscout/Provider/ExaChat.py +308 -387
- webscout/Provider/Flowith.py +221 -221
- webscout/Provider/GMI.py +293 -0
- webscout/Provider/Gemini.py +164 -162
- webscout/Provider/GeminiProxy.py +167 -166
- webscout/Provider/GithubChat.py +371 -370
- webscout/Provider/Groq.py +800 -800
- webscout/Provider/HeckAI.py +383 -379
- webscout/Provider/Jadve.py +282 -297
- webscout/Provider/K2Think.py +308 -0
- webscout/Provider/Koboldai.py +206 -384
- webscout/Provider/LambdaChat.py +423 -425
- webscout/Provider/Nemotron.py +244 -245
- webscout/Provider/Netwrck.py +248 -247
- webscout/Provider/OLLAMA.py +395 -394
- webscout/Provider/OPENAI/Cloudflare.py +394 -395
- webscout/Provider/OPENAI/FalconH1.py +452 -457
- webscout/Provider/OPENAI/FreeGemini.py +297 -299
- webscout/Provider/OPENAI/{monochat.py → K2Think.py} +432 -329
- webscout/Provider/OPENAI/NEMOTRON.py +241 -244
- webscout/Provider/OPENAI/PI.py +428 -427
- webscout/Provider/OPENAI/README.md +959 -959
- webscout/Provider/OPENAI/TogetherAI.py +345 -345
- webscout/Provider/OPENAI/TwoAI.py +466 -467
- webscout/Provider/OPENAI/__init__.py +33 -59
- webscout/Provider/OPENAI/ai4chat.py +313 -303
- webscout/Provider/OPENAI/base.py +249 -269
- webscout/Provider/OPENAI/chatglm.py +528 -0
- webscout/Provider/OPENAI/chatgpt.py +593 -588
- webscout/Provider/OPENAI/chatgptclone.py +521 -524
- webscout/Provider/OPENAI/chatsandbox.py +202 -177
- webscout/Provider/OPENAI/deepinfra.py +319 -315
- webscout/Provider/OPENAI/e2b.py +1665 -1665
- webscout/Provider/OPENAI/exaai.py +420 -420
- webscout/Provider/OPENAI/exachat.py +452 -452
- webscout/Provider/OPENAI/friendli.py +232 -232
- webscout/Provider/OPENAI/{refact.py → gmi.py} +324 -274
- webscout/Provider/OPENAI/groq.py +364 -364
- webscout/Provider/OPENAI/heckai.py +314 -311
- webscout/Provider/OPENAI/llmchatco.py +337 -337
- webscout/Provider/OPENAI/netwrck.py +355 -354
- webscout/Provider/OPENAI/oivscode.py +290 -290
- webscout/Provider/OPENAI/opkfc.py +518 -518
- webscout/Provider/OPENAI/pydantic_imports.py +1 -1
- webscout/Provider/OPENAI/scirachat.py +535 -529
- webscout/Provider/OPENAI/sonus.py +308 -308
- webscout/Provider/OPENAI/standardinput.py +442 -442
- webscout/Provider/OPENAI/textpollinations.py +340 -348
- webscout/Provider/OPENAI/toolbaz.py +419 -413
- webscout/Provider/OPENAI/typefully.py +362 -362
- webscout/Provider/OPENAI/utils.py +295 -295
- webscout/Provider/OPENAI/venice.py +436 -436
- webscout/Provider/OPENAI/wisecat.py +387 -387
- webscout/Provider/OPENAI/writecream.py +166 -166
- webscout/Provider/OPENAI/x0gpt.py +378 -378
- webscout/Provider/OPENAI/yep.py +389 -389
- webscout/Provider/OpenGPT.py +230 -230
- webscout/Provider/Openai.py +244 -496
- webscout/Provider/PI.py +405 -404
- webscout/Provider/Perplexitylabs.py +430 -431
- webscout/Provider/QwenLM.py +272 -254
- webscout/Provider/STT/__init__.py +32 -2
- webscout/Provider/{Llama3.py → Sambanova.py} +257 -258
- webscout/Provider/StandardInput.py +309 -309
- webscout/Provider/TTI/README.md +82 -82
- webscout/Provider/TTI/__init__.py +33 -12
- webscout/Provider/TTI/aiarta.py +413 -413
- webscout/Provider/TTI/base.py +136 -136
- webscout/Provider/TTI/bing.py +243 -243
- webscout/Provider/TTI/gpt1image.py +149 -149
- webscout/Provider/TTI/imagen.py +196 -196
- webscout/Provider/TTI/infip.py +211 -211
- webscout/Provider/TTI/magicstudio.py +232 -232
- webscout/Provider/TTI/monochat.py +219 -219
- webscout/Provider/TTI/piclumen.py +214 -214
- webscout/Provider/TTI/pixelmuse.py +232 -232
- webscout/Provider/TTI/pollinations.py +232 -232
- webscout/Provider/TTI/together.py +288 -288
- webscout/Provider/TTI/utils.py +12 -12
- webscout/Provider/TTI/venice.py +367 -367
- webscout/Provider/TTS/README.md +192 -192
- webscout/Provider/TTS/__init__.py +33 -10
- webscout/Provider/TTS/parler.py +110 -110
- webscout/Provider/TTS/streamElements.py +333 -333
- webscout/Provider/TTS/utils.py +280 -280
- webscout/Provider/TeachAnything.py +237 -236
- webscout/Provider/TextPollinationsAI.py +311 -318
- webscout/Provider/TogetherAI.py +356 -357
- webscout/Provider/TwoAI.py +313 -569
- webscout/Provider/TypliAI.py +312 -311
- webscout/Provider/UNFINISHED/ChatHub.py +208 -208
- webscout/Provider/UNFINISHED/ChutesAI.py +313 -313
- webscout/Provider/{GizAI.py → UNFINISHED/GizAI.py} +294 -294
- webscout/Provider/{Marcus.py → UNFINISHED/Marcus.py} +198 -198
- webscout/Provider/{Qodo.py → UNFINISHED/Qodo.py} +477 -477
- webscout/Provider/UNFINISHED/VercelAIGateway.py +338 -338
- webscout/Provider/{XenAI.py → UNFINISHED/XenAI.py} +324 -324
- webscout/Provider/UNFINISHED/Youchat.py +330 -330
- webscout/Provider/UNFINISHED/liner.py +334 -0
- webscout/Provider/UNFINISHED/liner_api_request.py +262 -262
- webscout/Provider/UNFINISHED/puterjs.py +634 -634
- webscout/Provider/UNFINISHED/samurai.py +223 -223
- webscout/Provider/UNFINISHED/test_lmarena.py +119 -119
- webscout/Provider/Venice.py +251 -250
- webscout/Provider/VercelAI.py +256 -255
- webscout/Provider/WiseCat.py +232 -231
- webscout/Provider/WrDoChat.py +367 -366
- webscout/Provider/__init__.py +33 -86
- webscout/Provider/ai4chat.py +174 -174
- webscout/Provider/akashgpt.py +331 -334
- webscout/Provider/cerebras.py +446 -340
- webscout/Provider/chatglm.py +394 -214
- webscout/Provider/cleeai.py +211 -212
- webscout/Provider/deepseek_assistant.py +1 -1
- webscout/Provider/elmo.py +282 -282
- webscout/Provider/geminiapi.py +208 -208
- webscout/Provider/granite.py +261 -261
- webscout/Provider/hermes.py +263 -265
- webscout/Provider/julius.py +223 -222
- webscout/Provider/learnfastai.py +309 -309
- webscout/Provider/llama3mitril.py +214 -214
- webscout/Provider/llmchat.py +243 -243
- webscout/Provider/llmchatco.py +290 -290
- webscout/Provider/meta.py +801 -801
- webscout/Provider/oivscode.py +309 -309
- webscout/Provider/scira_chat.py +384 -457
- webscout/Provider/searchchat.py +292 -291
- webscout/Provider/sonus.py +258 -258
- webscout/Provider/toolbaz.py +370 -364
- webscout/Provider/turboseek.py +274 -265
- webscout/Provider/typefully.py +208 -207
- webscout/Provider/x0gpt.py +1 -0
- webscout/Provider/yep.py +372 -371
- webscout/__init__.py +30 -31
- webscout/__main__.py +5 -5
- webscout/auth/api_key_manager.py +189 -189
- webscout/auth/config.py +175 -175
- webscout/auth/models.py +185 -185
- webscout/auth/routes.py +664 -664
- webscout/auth/simple_logger.py +236 -236
- webscout/cli.py +523 -523
- webscout/conversation.py +438 -438
- webscout/exceptions.py +361 -361
- webscout/litagent/Readme.md +298 -298
- webscout/litagent/__init__.py +28 -28
- webscout/litagent/agent.py +581 -581
- webscout/litagent/constants.py +59 -59
- webscout/litprinter/__init__.py +58 -58
- webscout/models.py +181 -181
- webscout/optimizers.py +419 -419
- webscout/prompt_manager.py +288 -288
- webscout/sanitize.py +1078 -1078
- webscout/scout/README.md +401 -401
- webscout/scout/__init__.py +8 -8
- webscout/scout/core/__init__.py +6 -6
- webscout/scout/core/crawler.py +297 -297
- webscout/scout/core/scout.py +706 -706
- webscout/scout/core/search_result.py +95 -95
- webscout/scout/core/text_analyzer.py +62 -62
- webscout/scout/core/text_utils.py +277 -277
- webscout/scout/core/web_analyzer.py +51 -51
- webscout/scout/element.py +599 -599
- webscout/scout/parsers/__init__.py +69 -69
- webscout/scout/parsers/html5lib_parser.py +172 -172
- webscout/scout/parsers/html_parser.py +236 -236
- webscout/scout/parsers/lxml_parser.py +178 -178
- webscout/scout/utils.py +37 -37
- webscout/swiftcli/Readme.md +323 -323
- webscout/swiftcli/__init__.py +95 -95
- webscout/swiftcli/core/__init__.py +7 -7
- webscout/swiftcli/core/cli.py +308 -308
- webscout/swiftcli/core/context.py +104 -104
- webscout/swiftcli/core/group.py +241 -241
- webscout/swiftcli/decorators/__init__.py +28 -28
- webscout/swiftcli/decorators/command.py +221 -221
- webscout/swiftcli/decorators/options.py +220 -220
- webscout/swiftcli/decorators/output.py +302 -302
- webscout/swiftcli/exceptions.py +21 -21
- webscout/swiftcli/plugins/__init__.py +9 -9
- webscout/swiftcli/plugins/base.py +135 -135
- webscout/swiftcli/plugins/manager.py +269 -269
- webscout/swiftcli/utils/__init__.py +59 -59
- webscout/swiftcli/utils/formatting.py +252 -252
- webscout/swiftcli/utils/parsing.py +267 -267
- webscout/update_checker.py +117 -117
- webscout/version.py +1 -1
- webscout/webscout_search.py +1183 -1183
- webscout/webscout_search_async.py +649 -649
- webscout/yep_search.py +346 -346
- webscout/zeroart/README.md +89 -89
- webscout/zeroart/__init__.py +134 -134
- webscout/zeroart/base.py +66 -66
- webscout/zeroart/effects.py +100 -100
- webscout/zeroart/fonts.py +1238 -1238
- {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/METADATA +937 -936
- webscout-2025.10.11.dist-info/RECORD +300 -0
- webscout/Provider/AISEARCH/DeepFind.py +0 -254
- webscout/Provider/AllenAI.py +0 -440
- webscout/Provider/Blackboxai.py +0 -793
- webscout/Provider/FreeGemini.py +0 -250
- webscout/Provider/GptOss.py +0 -207
- webscout/Provider/Hunyuan.py +0 -283
- webscout/Provider/Kimi.py +0 -445
- webscout/Provider/MCPCore.py +0 -322
- webscout/Provider/MiniMax.py +0 -207
- webscout/Provider/OPENAI/BLACKBOXAI.py +0 -1045
- webscout/Provider/OPENAI/MiniMax.py +0 -298
- webscout/Provider/OPENAI/Qwen3.py +0 -304
- webscout/Provider/OPENAI/autoproxy.py +0 -1067
- webscout/Provider/OPENAI/copilot.py +0 -321
- webscout/Provider/OPENAI/gptoss.py +0 -288
- webscout/Provider/OPENAI/kimi.py +0 -469
- webscout/Provider/OPENAI/mcpcore.py +0 -431
- webscout/Provider/OPENAI/multichat.py +0 -378
- webscout/Provider/OPENAI/qodo.py +0 -630
- webscout/Provider/OPENAI/xenai.py +0 -514
- webscout/Provider/Reka.py +0 -214
- webscout/Provider/UNFINISHED/fetch_together_models.py +0 -90
- webscout/Provider/asksteve.py +0 -220
- webscout/Provider/copilot.py +0 -441
- webscout/Provider/freeaichat.py +0 -294
- webscout/Provider/koala.py +0 -182
- webscout/Provider/lmarena.py +0 -198
- webscout/Provider/monochat.py +0 -275
- webscout/Provider/multichat.py +0 -375
- webscout/Provider/scnet.py +0 -244
- webscout/Provider/talkai.py +0 -194
- webscout/tempid.py +0 -128
- webscout-8.3.6.dist-info/RECORD +0 -327
- {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/WHEEL +0 -0
- {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/entry_points.txt +0 -0
- {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/licenses/LICENSE.md +0 -0
- {webscout-8.3.6.dist-info → webscout-2025.10.11.dist-info}/top_level.txt +0 -0
webscout/zeroart/README.md
CHANGED
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
# 🎨 ZeroArt: Zero-Dependency ASCII Art Generator
|
|
2
|
-
|
|
3
|
-
## 🚀 Overview
|
|
4
|
-
|
|
5
|
-
ZeroArt is a powerful, lightweight Python library for generating stunning ASCII art text with zero external dependencies. Transform your plain text into eye-catching, stylized art with just a few lines of code!
|
|
6
|
-
|
|
7
|
-
## ✨ Features
|
|
8
|
-
|
|
9
|
-
- **Multiple Font Styles**
|
|
10
|
-
- Block Font
|
|
11
|
-
- Slant Font
|
|
12
|
-
- Neon Font
|
|
13
|
-
- Cyber Font
|
|
14
|
-
|
|
15
|
-
- **Zero Dependencies**
|
|
16
|
-
- Completely standalone library
|
|
17
|
-
- No external package requirements
|
|
18
|
-
|
|
19
|
-
- **Easy to Use**
|
|
20
|
-
- Simple, intuitive API
|
|
21
|
-
- Minimal setup needed
|
|
22
|
-
|
|
23
|
-
- **Text Effects**
|
|
24
|
-
- Rainbow coloring
|
|
25
|
-
- Glitch effect
|
|
26
|
-
- Text wrapping
|
|
27
|
-
- Outline generation
|
|
28
|
-
|
|
29
|
-
## 🛠 Installation
|
|
30
|
-
|
|
31
|
-
No installation required! Just copy the `zeroart` directory into your project.
|
|
32
|
-
|
|
33
|
-
## 💻 Usage Examples
|
|
34
|
-
|
|
35
|
-
### Basic ASCII Art
|
|
36
|
-
|
|
37
|
-
```python
|
|
38
|
-
from webscout import zeroart
|
|
39
|
-
|
|
40
|
-
# Generate ASCII art
|
|
41
|
-
art = zeroart.figlet_format("PYTHON", font='block')
|
|
42
|
-
print(art)
|
|
43
|
-
|
|
44
|
-
# Directly print ASCII art
|
|
45
|
-
zeroart.print_figlet("CODING", font='slant')
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
### Font Styles
|
|
49
|
-
|
|
50
|
-
```python
|
|
51
|
-
from webscout import zeroart
|
|
52
|
-
|
|
53
|
-
# Different font styles
|
|
54
|
-
print(zeroart.figlet_format("AWESOME", font='block')) # Block style
|
|
55
|
-
print(zeroart.figlet_format("CODING", font='slant')) # Slant style
|
|
56
|
-
print(zeroart.figlet_format("NEON", font='neon')) # Neon style
|
|
57
|
-
print(zeroart.figlet_format("CYBER", font='cyber')) # Cyber style
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Text Effects
|
|
61
|
-
|
|
62
|
-
```python
|
|
63
|
-
from webscout import zeroart
|
|
64
|
-
|
|
65
|
-
# Rainbow effect
|
|
66
|
-
print(zeroart.rainbow("COLORFUL", font='neon'))
|
|
67
|
-
|
|
68
|
-
# Glitch effect
|
|
69
|
-
print(zeroart.glitch("GLITCH", font='cyber'))
|
|
70
|
-
|
|
71
|
-
# Outline effect
|
|
72
|
-
print(zeroart.outline("BORDER", font='block'))
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## 🎨 Available Fonts
|
|
76
|
-
|
|
77
|
-
1. **Block Font**: Classic, bold block-style letters
|
|
78
|
-
2. **Slant Font**: Elegant, slanted text
|
|
79
|
-
3. **Neon Font**: Glowing, pixel-style art
|
|
80
|
-
4. **Cyber Font**: Cyberpunk-inspired rendering
|
|
81
|
-
|
|
82
|
-
## 🤝 Contributing
|
|
83
|
-
|
|
84
|
-
Contributions are welcome!
|
|
85
|
-
|
|
86
|
-
- Fork the repository
|
|
87
|
-
- Create a new font
|
|
88
|
-
- Add text effects
|
|
89
|
-
- Improve existing code
|
|
1
|
+
# 🎨 ZeroArt: Zero-Dependency ASCII Art Generator
|
|
2
|
+
|
|
3
|
+
## 🚀 Overview
|
|
4
|
+
|
|
5
|
+
ZeroArt is a powerful, lightweight Python library for generating stunning ASCII art text with zero external dependencies. Transform your plain text into eye-catching, stylized art with just a few lines of code!
|
|
6
|
+
|
|
7
|
+
## ✨ Features
|
|
8
|
+
|
|
9
|
+
- **Multiple Font Styles**
|
|
10
|
+
- Block Font
|
|
11
|
+
- Slant Font
|
|
12
|
+
- Neon Font
|
|
13
|
+
- Cyber Font
|
|
14
|
+
|
|
15
|
+
- **Zero Dependencies**
|
|
16
|
+
- Completely standalone library
|
|
17
|
+
- No external package requirements
|
|
18
|
+
|
|
19
|
+
- **Easy to Use**
|
|
20
|
+
- Simple, intuitive API
|
|
21
|
+
- Minimal setup needed
|
|
22
|
+
|
|
23
|
+
- **Text Effects**
|
|
24
|
+
- Rainbow coloring
|
|
25
|
+
- Glitch effect
|
|
26
|
+
- Text wrapping
|
|
27
|
+
- Outline generation
|
|
28
|
+
|
|
29
|
+
## 🛠 Installation
|
|
30
|
+
|
|
31
|
+
No installation required! Just copy the `zeroart` directory into your project.
|
|
32
|
+
|
|
33
|
+
## 💻 Usage Examples
|
|
34
|
+
|
|
35
|
+
### Basic ASCII Art
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
from webscout import zeroart
|
|
39
|
+
|
|
40
|
+
# Generate ASCII art
|
|
41
|
+
art = zeroart.figlet_format("PYTHON", font='block')
|
|
42
|
+
print(art)
|
|
43
|
+
|
|
44
|
+
# Directly print ASCII art
|
|
45
|
+
zeroart.print_figlet("CODING", font='slant')
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Font Styles
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from webscout import zeroart
|
|
52
|
+
|
|
53
|
+
# Different font styles
|
|
54
|
+
print(zeroart.figlet_format("AWESOME", font='block')) # Block style
|
|
55
|
+
print(zeroart.figlet_format("CODING", font='slant')) # Slant style
|
|
56
|
+
print(zeroart.figlet_format("NEON", font='neon')) # Neon style
|
|
57
|
+
print(zeroart.figlet_format("CYBER", font='cyber')) # Cyber style
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Text Effects
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from webscout import zeroart
|
|
64
|
+
|
|
65
|
+
# Rainbow effect
|
|
66
|
+
print(zeroart.rainbow("COLORFUL", font='neon'))
|
|
67
|
+
|
|
68
|
+
# Glitch effect
|
|
69
|
+
print(zeroart.glitch("GLITCH", font='cyber'))
|
|
70
|
+
|
|
71
|
+
# Outline effect
|
|
72
|
+
print(zeroart.outline("BORDER", font='block'))
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## 🎨 Available Fonts
|
|
76
|
+
|
|
77
|
+
1. **Block Font**: Classic, bold block-style letters
|
|
78
|
+
2. **Slant Font**: Elegant, slanted text
|
|
79
|
+
3. **Neon Font**: Glowing, pixel-style art
|
|
80
|
+
4. **Cyber Font**: Cyberpunk-inspired rendering
|
|
81
|
+
|
|
82
|
+
## 🤝 Contributing
|
|
83
|
+
|
|
84
|
+
Contributions are welcome!
|
|
85
|
+
|
|
86
|
+
- Fork the repository
|
|
87
|
+
- Create a new font
|
|
88
|
+
- Add text effects
|
|
89
|
+
- Improve existing code
|
webscout/zeroart/__init__.py
CHANGED
|
@@ -1,135 +1,135 @@
|
|
|
1
|
-
"""
|
|
2
|
-
ZeroArt: A zero-dependency ASCII art text generator
|
|
3
|
-
|
|
4
|
-
Create awesome ASCII art text without external dependencies!
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from typing import Dict, List, Literal, Optional, Union
|
|
8
|
-
from .base import ZeroArtFont
|
|
9
|
-
from .fonts import BlockFont, SlantFont, NeonFont, CyberFont, DottedFont, ShadowFont
|
|
10
|
-
from .effects import AsciiArtEffects
|
|
11
|
-
|
|
12
|
-
FontType = Literal['block', 'slant', 'neon', 'cyber', 'dotted', 'shadow']
|
|
13
|
-
|
|
14
|
-
def figlet_format(text: str, font: Union[str, ZeroArtFont] = 'block') -> str:
|
|
15
|
-
"""
|
|
16
|
-
Generate ASCII art text
|
|
17
|
-
|
|
18
|
-
:param text: Text to convert
|
|
19
|
-
:param font: Font style (default: 'block')
|
|
20
|
-
:return: ASCII art representation of text
|
|
21
|
-
"""
|
|
22
|
-
font_map: Dict[str, ZeroArtFont] = {
|
|
23
|
-
'block': BlockFont(),
|
|
24
|
-
'slant': SlantFont(),
|
|
25
|
-
'neon': NeonFont(),
|
|
26
|
-
'cyber': CyberFont(),
|
|
27
|
-
'dotted': DottedFont(),
|
|
28
|
-
'shadow': ShadowFont()
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if isinstance(font, str):
|
|
32
|
-
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
33
|
-
else:
|
|
34
|
-
selected_font = font
|
|
35
|
-
return selected_font.render(text)
|
|
36
|
-
|
|
37
|
-
def print_figlet(text: str, font: Union[str, ZeroArtFont] = 'block') -> None:
|
|
38
|
-
"""
|
|
39
|
-
Print ASCII art text directly
|
|
40
|
-
|
|
41
|
-
:param text: Text to convert and print
|
|
42
|
-
:param font: Font style (default: 'block')
|
|
43
|
-
"""
|
|
44
|
-
print(figlet_format(text, font))
|
|
45
|
-
|
|
46
|
-
# Expose additional effects with font handling
|
|
47
|
-
def rainbow(text: str, font: Union[str, ZeroArtFont] = 'block') -> str:
|
|
48
|
-
"""
|
|
49
|
-
Apply a rainbow-like color effect to ASCII art
|
|
50
|
-
|
|
51
|
-
:param text: Text to render
|
|
52
|
-
:param font: Font style (default: 'block')
|
|
53
|
-
:return: Rainbow-styled ASCII art
|
|
54
|
-
"""
|
|
55
|
-
font_map: Dict[str, ZeroArtFont] = {
|
|
56
|
-
'block': BlockFont(),
|
|
57
|
-
'slant': SlantFont(),
|
|
58
|
-
'neon': NeonFont(),
|
|
59
|
-
'cyber': CyberFont(),
|
|
60
|
-
'dotted': DottedFont(),
|
|
61
|
-
'shadow': ShadowFont()
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if isinstance(font, str):
|
|
65
|
-
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
66
|
-
else:
|
|
67
|
-
selected_font = font
|
|
68
|
-
return AsciiArtEffects.rainbow_effect(text, selected_font)
|
|
69
|
-
|
|
70
|
-
def glitch(text: str, font: Union[str, ZeroArtFont] = 'block', glitch_intensity: float = 0.1) -> str:
|
|
71
|
-
"""
|
|
72
|
-
Apply a glitch-like distortion to ASCII art
|
|
73
|
-
|
|
74
|
-
:param text: Text to render
|
|
75
|
-
:param font: Font style (default: 'block')
|
|
76
|
-
:param glitch_intensity: Probability of character distortion
|
|
77
|
-
:return: Glitched ASCII art
|
|
78
|
-
"""
|
|
79
|
-
font_map: Dict[str, ZeroArtFont] = {
|
|
80
|
-
'block': BlockFont(),
|
|
81
|
-
'slant': SlantFont(),
|
|
82
|
-
'neon': NeonFont(),
|
|
83
|
-
'cyber': CyberFont(),
|
|
84
|
-
'dotted': DottedFont(),
|
|
85
|
-
'shadow': ShadowFont()
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if isinstance(font, str):
|
|
89
|
-
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
90
|
-
else:
|
|
91
|
-
selected_font = font
|
|
92
|
-
return AsciiArtEffects.glitch_effect(text, selected_font, glitch_intensity)
|
|
93
|
-
|
|
94
|
-
wrap_text = AsciiArtEffects.wrap_text
|
|
95
|
-
|
|
96
|
-
def outline(text: str, font: Union[str, ZeroArtFont] = 'block', outline_char: str = '*') -> str:
|
|
97
|
-
"""
|
|
98
|
-
Add an outline effect to ASCII art
|
|
99
|
-
|
|
100
|
-
:param text: Text to render
|
|
101
|
-
:param font: Font style (default: 'block')
|
|
102
|
-
:param outline_char: Character to use for outline
|
|
103
|
-
:return: ASCII art with outline
|
|
104
|
-
"""
|
|
105
|
-
font_map: Dict[str, ZeroArtFont] = {
|
|
106
|
-
'block': BlockFont(),
|
|
107
|
-
'slant': SlantFont(),
|
|
108
|
-
'neon': NeonFont(),
|
|
109
|
-
'cyber': CyberFont(),
|
|
110
|
-
'dotted': DottedFont(),
|
|
111
|
-
'shadow': ShadowFont()
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if isinstance(font, str):
|
|
115
|
-
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
116
|
-
else:
|
|
117
|
-
selected_font = font
|
|
118
|
-
return AsciiArtEffects.outline_effect(text, selected_font, outline_char)
|
|
119
|
-
|
|
120
|
-
__all__ = [
|
|
121
|
-
'figlet_format',
|
|
122
|
-
'print_figlet',
|
|
123
|
-
'rainbow',
|
|
124
|
-
'glitch',
|
|
125
|
-
'wrap_text',
|
|
126
|
-
'outline',
|
|
127
|
-
'BlockFont',
|
|
128
|
-
'SlantFont',
|
|
129
|
-
'NeonFont',
|
|
130
|
-
'CyberFont',
|
|
131
|
-
'DottedFont',
|
|
132
|
-
'ShadowFont',
|
|
133
|
-
'ZeroArtFont',
|
|
134
|
-
'FontType'
|
|
1
|
+
"""
|
|
2
|
+
ZeroArt: A zero-dependency ASCII art text generator
|
|
3
|
+
|
|
4
|
+
Create awesome ASCII art text without external dependencies!
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from typing import Dict, List, Literal, Optional, Union
|
|
8
|
+
from .base import ZeroArtFont
|
|
9
|
+
from .fonts import BlockFont, SlantFont, NeonFont, CyberFont, DottedFont, ShadowFont
|
|
10
|
+
from .effects import AsciiArtEffects
|
|
11
|
+
|
|
12
|
+
FontType = Literal['block', 'slant', 'neon', 'cyber', 'dotted', 'shadow']
|
|
13
|
+
|
|
14
|
+
def figlet_format(text: str, font: Union[str, ZeroArtFont] = 'block') -> str:
|
|
15
|
+
"""
|
|
16
|
+
Generate ASCII art text
|
|
17
|
+
|
|
18
|
+
:param text: Text to convert
|
|
19
|
+
:param font: Font style (default: 'block')
|
|
20
|
+
:return: ASCII art representation of text
|
|
21
|
+
"""
|
|
22
|
+
font_map: Dict[str, ZeroArtFont] = {
|
|
23
|
+
'block': BlockFont(),
|
|
24
|
+
'slant': SlantFont(),
|
|
25
|
+
'neon': NeonFont(),
|
|
26
|
+
'cyber': CyberFont(),
|
|
27
|
+
'dotted': DottedFont(),
|
|
28
|
+
'shadow': ShadowFont()
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if isinstance(font, str):
|
|
32
|
+
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
33
|
+
else:
|
|
34
|
+
selected_font = font
|
|
35
|
+
return selected_font.render(text)
|
|
36
|
+
|
|
37
|
+
def print_figlet(text: str, font: Union[str, ZeroArtFont] = 'block') -> None:
|
|
38
|
+
"""
|
|
39
|
+
Print ASCII art text directly
|
|
40
|
+
|
|
41
|
+
:param text: Text to convert and print
|
|
42
|
+
:param font: Font style (default: 'block')
|
|
43
|
+
"""
|
|
44
|
+
print(figlet_format(text, font))
|
|
45
|
+
|
|
46
|
+
# Expose additional effects with font handling
|
|
47
|
+
def rainbow(text: str, font: Union[str, ZeroArtFont] = 'block') -> str:
|
|
48
|
+
"""
|
|
49
|
+
Apply a rainbow-like color effect to ASCII art
|
|
50
|
+
|
|
51
|
+
:param text: Text to render
|
|
52
|
+
:param font: Font style (default: 'block')
|
|
53
|
+
:return: Rainbow-styled ASCII art
|
|
54
|
+
"""
|
|
55
|
+
font_map: Dict[str, ZeroArtFont] = {
|
|
56
|
+
'block': BlockFont(),
|
|
57
|
+
'slant': SlantFont(),
|
|
58
|
+
'neon': NeonFont(),
|
|
59
|
+
'cyber': CyberFont(),
|
|
60
|
+
'dotted': DottedFont(),
|
|
61
|
+
'shadow': ShadowFont()
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if isinstance(font, str):
|
|
65
|
+
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
66
|
+
else:
|
|
67
|
+
selected_font = font
|
|
68
|
+
return AsciiArtEffects.rainbow_effect(text, selected_font)
|
|
69
|
+
|
|
70
|
+
def glitch(text: str, font: Union[str, ZeroArtFont] = 'block', glitch_intensity: float = 0.1) -> str:
|
|
71
|
+
"""
|
|
72
|
+
Apply a glitch-like distortion to ASCII art
|
|
73
|
+
|
|
74
|
+
:param text: Text to render
|
|
75
|
+
:param font: Font style (default: 'block')
|
|
76
|
+
:param glitch_intensity: Probability of character distortion
|
|
77
|
+
:return: Glitched ASCII art
|
|
78
|
+
"""
|
|
79
|
+
font_map: Dict[str, ZeroArtFont] = {
|
|
80
|
+
'block': BlockFont(),
|
|
81
|
+
'slant': SlantFont(),
|
|
82
|
+
'neon': NeonFont(),
|
|
83
|
+
'cyber': CyberFont(),
|
|
84
|
+
'dotted': DottedFont(),
|
|
85
|
+
'shadow': ShadowFont()
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if isinstance(font, str):
|
|
89
|
+
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
90
|
+
else:
|
|
91
|
+
selected_font = font
|
|
92
|
+
return AsciiArtEffects.glitch_effect(text, selected_font, glitch_intensity)
|
|
93
|
+
|
|
94
|
+
wrap_text = AsciiArtEffects.wrap_text
|
|
95
|
+
|
|
96
|
+
def outline(text: str, font: Union[str, ZeroArtFont] = 'block', outline_char: str = '*') -> str:
|
|
97
|
+
"""
|
|
98
|
+
Add an outline effect to ASCII art
|
|
99
|
+
|
|
100
|
+
:param text: Text to render
|
|
101
|
+
:param font: Font style (default: 'block')
|
|
102
|
+
:param outline_char: Character to use for outline
|
|
103
|
+
:return: ASCII art with outline
|
|
104
|
+
"""
|
|
105
|
+
font_map: Dict[str, ZeroArtFont] = {
|
|
106
|
+
'block': BlockFont(),
|
|
107
|
+
'slant': SlantFont(),
|
|
108
|
+
'neon': NeonFont(),
|
|
109
|
+
'cyber': CyberFont(),
|
|
110
|
+
'dotted': DottedFont(),
|
|
111
|
+
'shadow': ShadowFont()
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if isinstance(font, str):
|
|
115
|
+
selected_font: ZeroArtFont = font_map.get(font.lower(), BlockFont())
|
|
116
|
+
else:
|
|
117
|
+
selected_font = font
|
|
118
|
+
return AsciiArtEffects.outline_effect(text, selected_font, outline_char)
|
|
119
|
+
|
|
120
|
+
__all__ = [
|
|
121
|
+
'figlet_format',
|
|
122
|
+
'print_figlet',
|
|
123
|
+
'rainbow',
|
|
124
|
+
'glitch',
|
|
125
|
+
'wrap_text',
|
|
126
|
+
'outline',
|
|
127
|
+
'BlockFont',
|
|
128
|
+
'SlantFont',
|
|
129
|
+
'NeonFont',
|
|
130
|
+
'CyberFont',
|
|
131
|
+
'DottedFont',
|
|
132
|
+
'ShadowFont',
|
|
133
|
+
'ZeroArtFont',
|
|
134
|
+
'FontType'
|
|
135
135
|
]
|
webscout/zeroart/base.py
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
"""
|
|
2
|
-
ZeroArt Base: Core classes and utilities for ASCII art generation
|
|
3
|
-
"""
|
|
4
|
-
from typing import Dict, List, Optional, Union
|
|
5
|
-
|
|
6
|
-
class ZeroArtFont:
|
|
7
|
-
"""Base class for ASCII art fonts"""
|
|
8
|
-
def __init__(self, name: str) -> None:
|
|
9
|
-
self.name: str = name
|
|
10
|
-
self.letters: Dict[str, List[str]] = {}
|
|
11
|
-
self.special_chars: Dict[str, List[str]] = {}
|
|
12
|
-
|
|
13
|
-
def add_letter(self, char: str, art_lines: List[str]) -> None:
|
|
14
|
-
"""
|
|
15
|
-
Add a custom letter to the font
|
|
16
|
-
|
|
17
|
-
:param char: Character to add
|
|
18
|
-
:param art_lines: List of art lines representing the character
|
|
19
|
-
"""
|
|
20
|
-
self.letters[char.upper()] = art_lines
|
|
21
|
-
|
|
22
|
-
def add_special_char(self, name: str, art_lines: List[str]) -> None:
|
|
23
|
-
"""
|
|
24
|
-
Add a special ASCII art character or design
|
|
25
|
-
|
|
26
|
-
:param name: Name of the special character
|
|
27
|
-
:param art_lines: List of art lines representing the character
|
|
28
|
-
"""
|
|
29
|
-
self.special_chars[name] = art_lines
|
|
30
|
-
|
|
31
|
-
def get_letter(self, char: str) -> List[str]:
|
|
32
|
-
"""
|
|
33
|
-
Get ASCII art for a specific character
|
|
34
|
-
|
|
35
|
-
:param char: Character to retrieve
|
|
36
|
-
:return: List of art lines or default space
|
|
37
|
-
"""
|
|
38
|
-
return self.letters.get(char.upper(), self.letters.get(' ', [' ']))
|
|
39
|
-
|
|
40
|
-
def render(self, text: str) -> str:
|
|
41
|
-
"""
|
|
42
|
-
Render text as ASCII art
|
|
43
|
-
|
|
44
|
-
:param text: Text to render as ASCII art
|
|
45
|
-
:return: ASCII art representation of the text
|
|
46
|
-
"""
|
|
47
|
-
if not text:
|
|
48
|
-
return ""
|
|
49
|
-
# Get the maximum height of any character in the font
|
|
50
|
-
max_height: int = max(len(self.get_letter(c)) for c in text)
|
|
51
|
-
|
|
52
|
-
# Initialize art_lines with empty strings
|
|
53
|
-
art_lines: List[str] = ["" for _ in range(max_height)]
|
|
54
|
-
|
|
55
|
-
# Process each character
|
|
56
|
-
for char in text:
|
|
57
|
-
char_art: List[str] = self.get_letter(char)
|
|
58
|
-
# Pad shorter characters with empty lines to match max_height
|
|
59
|
-
while len(char_art) < max_height:
|
|
60
|
-
char_art.append(" " * len(char_art[0]))
|
|
61
|
-
|
|
62
|
-
# Add character art to each line
|
|
63
|
-
for i in range(max_height):
|
|
64
|
-
art_lines[i] += char_art[i] + " "
|
|
65
|
-
|
|
66
|
-
return "\n".join(art_lines)
|
|
1
|
+
"""
|
|
2
|
+
ZeroArt Base: Core classes and utilities for ASCII art generation
|
|
3
|
+
"""
|
|
4
|
+
from typing import Dict, List, Optional, Union
|
|
5
|
+
|
|
6
|
+
class ZeroArtFont:
|
|
7
|
+
"""Base class for ASCII art fonts"""
|
|
8
|
+
def __init__(self, name: str) -> None:
|
|
9
|
+
self.name: str = name
|
|
10
|
+
self.letters: Dict[str, List[str]] = {}
|
|
11
|
+
self.special_chars: Dict[str, List[str]] = {}
|
|
12
|
+
|
|
13
|
+
def add_letter(self, char: str, art_lines: List[str]) -> None:
|
|
14
|
+
"""
|
|
15
|
+
Add a custom letter to the font
|
|
16
|
+
|
|
17
|
+
:param char: Character to add
|
|
18
|
+
:param art_lines: List of art lines representing the character
|
|
19
|
+
"""
|
|
20
|
+
self.letters[char.upper()] = art_lines
|
|
21
|
+
|
|
22
|
+
def add_special_char(self, name: str, art_lines: List[str]) -> None:
|
|
23
|
+
"""
|
|
24
|
+
Add a special ASCII art character or design
|
|
25
|
+
|
|
26
|
+
:param name: Name of the special character
|
|
27
|
+
:param art_lines: List of art lines representing the character
|
|
28
|
+
"""
|
|
29
|
+
self.special_chars[name] = art_lines
|
|
30
|
+
|
|
31
|
+
def get_letter(self, char: str) -> List[str]:
|
|
32
|
+
"""
|
|
33
|
+
Get ASCII art for a specific character
|
|
34
|
+
|
|
35
|
+
:param char: Character to retrieve
|
|
36
|
+
:return: List of art lines or default space
|
|
37
|
+
"""
|
|
38
|
+
return self.letters.get(char.upper(), self.letters.get(' ', [' ']))
|
|
39
|
+
|
|
40
|
+
def render(self, text: str) -> str:
|
|
41
|
+
"""
|
|
42
|
+
Render text as ASCII art
|
|
43
|
+
|
|
44
|
+
:param text: Text to render as ASCII art
|
|
45
|
+
:return: ASCII art representation of the text
|
|
46
|
+
"""
|
|
47
|
+
if not text:
|
|
48
|
+
return ""
|
|
49
|
+
# Get the maximum height of any character in the font
|
|
50
|
+
max_height: int = max(len(self.get_letter(c)) for c in text)
|
|
51
|
+
|
|
52
|
+
# Initialize art_lines with empty strings
|
|
53
|
+
art_lines: List[str] = ["" for _ in range(max_height)]
|
|
54
|
+
|
|
55
|
+
# Process each character
|
|
56
|
+
for char in text:
|
|
57
|
+
char_art: List[str] = self.get_letter(char)
|
|
58
|
+
# Pad shorter characters with empty lines to match max_height
|
|
59
|
+
while len(char_art) < max_height:
|
|
60
|
+
char_art.append(" " * len(char_art[0]))
|
|
61
|
+
|
|
62
|
+
# Add character art to each line
|
|
63
|
+
for i in range(max_height):
|
|
64
|
+
art_lines[i] += char_art[i] + " "
|
|
65
|
+
|
|
66
|
+
return "\n".join(art_lines)
|