webscout 6.4__py3-none-any.whl → 6.6__py3-none-any.whl

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

Potentially problematic release.


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

Files changed (116) hide show
  1. webscout/AIutel.py +7 -54
  2. webscout/DWEBS.py +48 -26
  3. webscout/{YTdownloader.py → Extra/YTToolkit/YTdownloader.py} +990 -1103
  4. webscout/Extra/YTToolkit/__init__.py +3 -0
  5. webscout/{transcriber.py → Extra/YTToolkit/transcriber.py} +1 -1
  6. webscout/Extra/YTToolkit/ytapi/__init__.py +6 -0
  7. webscout/Extra/YTToolkit/ytapi/channel.py +307 -0
  8. webscout/Extra/YTToolkit/ytapi/errors.py +13 -0
  9. webscout/Extra/YTToolkit/ytapi/extras.py +45 -0
  10. webscout/Extra/YTToolkit/ytapi/https.py +88 -0
  11. webscout/Extra/YTToolkit/ytapi/patterns.py +61 -0
  12. webscout/Extra/YTToolkit/ytapi/playlist.py +59 -0
  13. webscout/Extra/YTToolkit/ytapi/pool.py +8 -0
  14. webscout/Extra/YTToolkit/ytapi/query.py +37 -0
  15. webscout/Extra/YTToolkit/ytapi/stream.py +60 -0
  16. webscout/Extra/YTToolkit/ytapi/utils.py +62 -0
  17. webscout/Extra/YTToolkit/ytapi/video.py +102 -0
  18. webscout/Extra/__init__.py +2 -1
  19. webscout/Extra/autocoder/autocoder_utiles.py +119 -101
  20. webscout/Extra/autocoder/rawdog.py +679 -680
  21. webscout/Extra/gguf.py +441 -441
  22. webscout/Extra/markdownlite/__init__.py +862 -0
  23. webscout/Extra/weather_ascii.py +2 -2
  24. webscout/Provider/AISEARCH/__init__.py +2 -0
  25. webscout/Provider/AISEARCH/ooai.py +155 -0
  26. webscout/Provider/Amigo.py +70 -85
  27. webscout/Provider/{prefind.py → Jadve.py} +72 -70
  28. webscout/Provider/Netwrck.py +235 -0
  29. webscout/Provider/Openai.py +4 -3
  30. webscout/Provider/PI.py +292 -221
  31. webscout/Provider/PizzaGPT.py +3 -3
  32. webscout/Provider/Reka.py +0 -1
  33. webscout/Provider/TTS/__init__.py +5 -1
  34. webscout/Provider/TTS/deepgram.py +183 -0
  35. webscout/Provider/TTS/elevenlabs.py +137 -0
  36. webscout/Provider/TTS/gesserit.py +151 -0
  37. webscout/Provider/TTS/murfai.py +139 -0
  38. webscout/Provider/TTS/parler.py +134 -107
  39. webscout/Provider/TTS/streamElements.py +360 -275
  40. webscout/Provider/TTS/utils.py +280 -0
  41. webscout/Provider/TTS/voicepod.py +116 -116
  42. webscout/Provider/TeachAnything.py +15 -2
  43. webscout/Provider/Youchat.py +42 -8
  44. webscout/Provider/__init__.py +8 -21
  45. webscout/Provider/meta.py +794 -779
  46. webscout/Provider/multichat.py +230 -0
  47. webscout/Provider/promptrefine.py +2 -2
  48. webscout/Provider/talkai.py +10 -13
  49. webscout/Provider/turboseek.py +5 -4
  50. webscout/Provider/tutorai.py +8 -112
  51. webscout/Provider/typegpt.py +5 -7
  52. webscout/Provider/x0gpt.py +81 -9
  53. webscout/Provider/yep.py +123 -361
  54. webscout/__init__.py +33 -28
  55. webscout/conversation.py +24 -9
  56. webscout/exceptions.py +188 -20
  57. webscout/litprinter/__init__.py +719 -831
  58. webscout/litprinter/colors.py +54 -0
  59. webscout/optimizers.py +420 -270
  60. webscout/prompt_manager.py +279 -279
  61. webscout/scout/__init__.py +8 -0
  62. webscout/scout/core/__init__.py +7 -0
  63. webscout/scout/core/crawler.py +140 -0
  64. webscout/scout/core/scout.py +571 -0
  65. webscout/scout/core/search_result.py +96 -0
  66. webscout/scout/core/text_analyzer.py +63 -0
  67. webscout/scout/core/text_utils.py +277 -0
  68. webscout/scout/core/web_analyzer.py +52 -0
  69. webscout/scout/core.py +884 -0
  70. webscout/scout/element.py +460 -0
  71. webscout/scout/parsers/__init__.py +69 -0
  72. webscout/scout/parsers/html5lib_parser.py +172 -0
  73. webscout/scout/parsers/html_parser.py +236 -0
  74. webscout/scout/parsers/lxml_parser.py +178 -0
  75. webscout/scout/utils.py +38 -0
  76. webscout/update_checker.py +184 -125
  77. webscout/version.py +1 -1
  78. webscout/zeroart/__init__.py +55 -0
  79. webscout/zeroart/base.py +60 -0
  80. webscout/zeroart/effects.py +99 -0
  81. webscout/zeroart/fonts.py +816 -0
  82. webscout/zerodir/__init__.py +225 -0
  83. {webscout-6.4.dist-info → webscout-6.6.dist-info}/METADATA +18 -231
  84. webscout-6.6.dist-info/RECORD +197 -0
  85. webscout-6.6.dist-info/top_level.txt +2 -0
  86. webstoken/__init__.py +30 -0
  87. webstoken/classifier.py +189 -0
  88. webstoken/keywords.py +216 -0
  89. webstoken/language.py +128 -0
  90. webstoken/ner.py +164 -0
  91. webstoken/normalizer.py +35 -0
  92. webstoken/processor.py +77 -0
  93. webstoken/sentiment.py +206 -0
  94. webstoken/stemmer.py +73 -0
  95. webstoken/t.py +75 -0
  96. webstoken/tagger.py +60 -0
  97. webstoken/tokenizer.py +158 -0
  98. webscout/Agents/Onlinesearcher.py +0 -182
  99. webscout/Agents/__init__.py +0 -2
  100. webscout/Agents/functioncall.py +0 -248
  101. webscout/Bing_search.py +0 -251
  102. webscout/Provider/Perplexity.py +0 -599
  103. webscout/Provider/RoboCoders.py +0 -206
  104. webscout/Provider/genspark.py +0 -225
  105. webscout/Provider/perplexitylabs.py +0 -265
  106. webscout/Provider/twitterclone.py +0 -251
  107. webscout/Provider/upstage.py +0 -230
  108. webscout/gpt4free.py +0 -666
  109. webscout/requestsHTMLfix.py +0 -775
  110. webscout/webai.py +0 -2590
  111. webscout-6.4.dist-info/RECORD +0 -154
  112. webscout-6.4.dist-info/top_level.txt +0 -1
  113. /webscout/Provider/{felo_search.py → AISEARCH/felo_search.py} +0 -0
  114. {webscout-6.4.dist-info → webscout-6.6.dist-info}/LICENSE.md +0 -0
  115. {webscout-6.4.dist-info → webscout-6.6.dist-info}/WHEEL +0 -0
  116. {webscout-6.4.dist-info → webscout-6.6.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,816 @@
1
+ """
2
+ ZeroArt Fonts: Predefined ASCII art fonts
3
+ """
4
+
5
+ from .base import ZeroArtFont
6
+
7
+ class BlockFont(ZeroArtFont):
8
+ """Block-style ASCII art font"""
9
+ def __init__(self):
10
+ super().__init__("block")
11
+ self.letters = {
12
+ ' ': [" ", " ", " ", " ", " "]
13
+ }
14
+ self._populate_letters()
15
+
16
+ def _populate_letters(self):
17
+ """Populate the font with predefined letters"""
18
+ block_letters = {
19
+ 'A': [
20
+ " █████ ",
21
+ " ██ ██ ",
22
+ " ███████ ",
23
+ " ██ ██ ",
24
+ " ██ ██ "
25
+ ],
26
+ 'B': [
27
+ " ██████ ",
28
+ " ██ ██ ",
29
+ " ██████ ",
30
+ " ██ ██ ",
31
+ " ██████ "
32
+ ],
33
+ 'C': [
34
+ " ██████ ",
35
+ " ██ ",
36
+ " ██ ",
37
+ " ██ ",
38
+ " ██████ "
39
+ ],
40
+ 'D': [
41
+ " ██████ ",
42
+ " ██ ██ ",
43
+ " ██ ██ ",
44
+ " ██ ██ ",
45
+ " ██████ "
46
+ ],
47
+ 'E': [
48
+ " ███████ ",
49
+ " ██ ",
50
+ " ██████ ",
51
+ " ██ ",
52
+ " ███████ "
53
+ ],
54
+ 'F': [
55
+ " ███████ ",
56
+ " ██ ",
57
+ " ██████ ",
58
+ " ██ ",
59
+ " ██ "
60
+ ],
61
+ 'G': [
62
+ " ██████ ",
63
+ " ██ ",
64
+ " ██ ███ ",
65
+ " ██ ██ ",
66
+ " ██████ "
67
+ ],
68
+ 'H': [
69
+ " ██ ██ ",
70
+ " ██ ██ ",
71
+ " ███████ ",
72
+ " ██ ██ ",
73
+ " ██ ██ "
74
+ ],
75
+ 'I': [
76
+ " ███████ ",
77
+ " ██ ",
78
+ " ██ ",
79
+ " ██ ",
80
+ " ███████ "
81
+ ],
82
+ 'J': [
83
+ " ██ ",
84
+ " ██ ",
85
+ " ██ ",
86
+ " ██ ██ ",
87
+ " █████ "
88
+ ],
89
+ 'K': [
90
+ " ██ ██ ",
91
+ " ██ ██ ",
92
+ " ████ ",
93
+ " ██ ██ ",
94
+ " ██ ██ "
95
+ ],
96
+ 'L': [
97
+ " ██ ",
98
+ " ██ ",
99
+ " ██ ",
100
+ " ██ ",
101
+ " ███████ "
102
+ ],
103
+ 'M': [
104
+ " ██ ██ ",
105
+ " ███ ███ ",
106
+ " ██ █ ██ ",
107
+ " ██ ██ ",
108
+ " ██ ██ "
109
+ ],
110
+ 'N': [
111
+ " ██ ██ ",
112
+ " ███ ██ ",
113
+ " ██ █ ██ ",
114
+ " ██ ███ ",
115
+ " ██ ██ "
116
+ ],
117
+ 'O': [
118
+ " █████ ",
119
+ " ██ ██ ",
120
+ " ██ ██ ",
121
+ " ██ ██ ",
122
+ " █████ "
123
+ ],
124
+ 'P': [
125
+ " ██████ ",
126
+ " ██ ██ ",
127
+ " ██████ ",
128
+ " ██ ",
129
+ " ██ "
130
+ ],
131
+ 'Q': [
132
+ " █████ ",
133
+ " ██ ██ ",
134
+ " ██ ██ ",
135
+ " ██ ██ ",
136
+ " ██████ "
137
+ ],
138
+ 'R': [
139
+ " ██████ ",
140
+ " ██ ██ ",
141
+ " ██████ ",
142
+ " ██ ██ ",
143
+ " ██ ██ "
144
+ ],
145
+ 'S': [
146
+ " ██████ ",
147
+ " ██ ",
148
+ " ██████ ",
149
+ " ██ ",
150
+ " ██████ "
151
+ ],
152
+ 'T': [
153
+ " ███████ ",
154
+ " ██ ",
155
+ " ██ ",
156
+ " ██ ",
157
+ " ██ "
158
+ ],
159
+ 'U': [
160
+ " ██ ██ ",
161
+ " ██ ██ ",
162
+ " ██ ██ ",
163
+ " ██ ██ ",
164
+ " █████ "
165
+ ],
166
+ 'V': [
167
+ " ██ ██ ",
168
+ " ██ ██ ",
169
+ " ██ ██ ",
170
+ " ██ ██ ",
171
+ " ███ "
172
+ ],
173
+ 'W': [
174
+ " ██ ██ ",
175
+ " ██ ██ ",
176
+ " ██ █ ██ ",
177
+ " ███ ███ ",
178
+ " ██ ██ "
179
+ ],
180
+ 'X': [
181
+ " ██ ██ ",
182
+ " ██ ██ ",
183
+ " ███ ",
184
+ " ██ ██ ",
185
+ " ██ ██ "
186
+ ],
187
+ 'Y': [
188
+ " ██ ██ ",
189
+ " ██ ██ ",
190
+ " ███ ",
191
+ " ███ ",
192
+ " ███ "
193
+ ],
194
+ 'Z': [
195
+ " ███████ ",
196
+ " ██ ",
197
+ " ██ ",
198
+ " ██ ",
199
+ " ███████ "
200
+ ]
201
+ }
202
+
203
+ self.letters.update(block_letters)
204
+
205
+ class SlantFont(ZeroArtFont):
206
+ """Slanted ASCII art font"""
207
+ def __init__(self):
208
+ super().__init__("slant")
209
+ self.letters = {
210
+ ' ': [" ", " ", " ", " ", " "]
211
+ }
212
+ self._populate_letters()
213
+
214
+ def _populate_letters(self):
215
+ """Populate the font with predefined letters"""
216
+ slant_letters = {
217
+ 'A': [
218
+ " /\\ ",
219
+ " / \\ ",
220
+ " / /\\ \\ ",
221
+ " / ____ \\ ",
222
+ "/_/ \\_\\"
223
+ ],
224
+ 'B': [
225
+ " ____ ",
226
+ "| _ \\ ",
227
+ "| |_) |",
228
+ "| _ < ",
229
+ "| |_) |",
230
+ "|____/ "
231
+ ],
232
+ 'C': [
233
+ " _____ ",
234
+ " / ____| ",
235
+ "| | ",
236
+ "| | ",
237
+ " \\_____| "
238
+ ],
239
+ 'D': [
240
+ " _____ ",
241
+ "| __ \\ ",
242
+ "| | | | ",
243
+ "| | | | ",
244
+ "| |__| | ",
245
+ "|_____/ "
246
+ ],
247
+ 'E': [
248
+ " ______ ",
249
+ "| ____| ",
250
+ "| |__ ",
251
+ "| __| ",
252
+ "| |____ ",
253
+ "|______| "
254
+ ],
255
+ 'F': [
256
+ " ______ ",
257
+ "| ____| ",
258
+ "| |__ ",
259
+ "| __| ",
260
+ "| | ",
261
+ "|_| "
262
+ ],
263
+ 'G': [
264
+ " _____ ",
265
+ " / ____| ",
266
+ "| | __ ",
267
+ "| | |_ | ",
268
+ "| |__| | ",
269
+ " \\_____| "
270
+ ],
271
+ 'H': [
272
+ " _ _ ",
273
+ "| | | | ",
274
+ "| |__| | ",
275
+ "| __ | ",
276
+ "|_| |_| "
277
+ ],
278
+ 'I': [
279
+ " _____ ",
280
+ "|_ _|",
281
+ " | | ",
282
+ " | | ",
283
+ " _| |_ ",
284
+ "|_____|"
285
+ ],
286
+ 'J': [
287
+ " ___ ",
288
+ " |_ |",
289
+ " | |",
290
+ " _ | |",
291
+ "| |__| |",
292
+ " \\____/ "
293
+ ],
294
+ 'K': [
295
+ " _ __ ",
296
+ "| |/ / ",
297
+ "| ' / ",
298
+ "| < ",
299
+ "| . \\ ",
300
+ "|_|\\_\\ "
301
+ ],
302
+ 'L': [
303
+ " _ ",
304
+ "| | ",
305
+ "| | ",
306
+ "| | ",
307
+ "| |____ ",
308
+ "|______|"
309
+ ],
310
+ 'M': [
311
+ " __ __ ",
312
+ "| \\/ |",
313
+ "| |\\/| |",
314
+ "| | | |",
315
+ "|_| |_|",
316
+ " "
317
+ ],
318
+ 'N': [
319
+ " _ _ ",
320
+ "| \\ | |",
321
+ "| \\| |",
322
+ "| . ` |",
323
+ "| |\\ |",
324
+ "|_| \\_|"
325
+ ],
326
+ 'O': [
327
+ " _____ ",
328
+ " / ____| ",
329
+ "| | __ ",
330
+ "| | |_ | ",
331
+ "| |__| | ",
332
+ " \\_____| "
333
+ ],
334
+ 'P': [
335
+ " _____ ",
336
+ "| __ \\ ",
337
+ "| |__) | ",
338
+ "| ___/ ",
339
+ "| | ",
340
+ "|_| "
341
+ ],
342
+ 'Q': [
343
+ " _____ ",
344
+ " / ____| ",
345
+ "| | __ ",
346
+ "| | |_ | ",
347
+ "| |__| | ",
348
+ " \\____/\\ "
349
+ ],
350
+ 'R': [
351
+ " _____ ",
352
+ "| __ \\ ",
353
+ "| |__) | ",
354
+ "| _ / ",
355
+ "| | \\ \\ ",
356
+ "|_| \\_\\ "
357
+ ],
358
+ 'S': [
359
+ " _____ ",
360
+ " / ____| ",
361
+ "| (___ ",
362
+ " \\___ \\ ",
363
+ " ____) | ",
364
+ "|_____/ "
365
+ ],
366
+ 'T': [
367
+ " ______ ",
368
+ "|_ _| ",
369
+ " | | ",
370
+ " | | ",
371
+ " | | ",
372
+ " |_| "
373
+ ],
374
+ 'U': [
375
+ " _ _ ",
376
+ "| | | | ",
377
+ "| | | | ",
378
+ "| | | | ",
379
+ "| |__| | ",
380
+ " \\____/ "
381
+ ],
382
+ 'V': [
383
+ " __ __ ",
384
+ " \\ \\ / / ",
385
+ " \\ \\_/ / ",
386
+ " \\ / ",
387
+ " \\_/ "
388
+ ],
389
+ 'W': [
390
+ " __ __ ",
391
+ " \\ \\ / / ",
392
+ " \\ \\/ / ",
393
+ " \\ / ",
394
+ " \\/ "
395
+ ],
396
+ 'X': [
397
+ " __ __ ",
398
+ " \\ \\/ / ",
399
+ " \\ / ",
400
+ " / \\ ",
401
+ " /_/\\_\\ "
402
+ ],
403
+ 'Y': [
404
+ " _ _ ",
405
+ "| | | |",
406
+ "| | | |",
407
+ "| | | |",
408
+ "|_| |_|"
409
+ ],
410
+ 'Z': [
411
+ " ______ ",
412
+ "|__ / | ",
413
+ " / /| | ",
414
+ " / /_| | ",
415
+ "/____|_| "
416
+ ]
417
+ }
418
+
419
+ self.letters.update(slant_letters)
420
+
421
+ # Add more custom fonts here
422
+ class NeonFont(ZeroArtFont):
423
+ """Neon-style ASCII art font"""
424
+ def __init__(self):
425
+ super().__init__("neon")
426
+ self.letters = {
427
+ ' ': [" ", " ", " ", " ", " "]
428
+ }
429
+ self._populate_letters()
430
+
431
+ def _populate_letters(self):
432
+ """Populate neon-style letters"""
433
+ neon_letters = {
434
+ 'A': [
435
+ " ░█████░ ",
436
+ " ██░░░░██ ",
437
+ " ████████ ",
438
+ " ██░░░░██ ",
439
+ " ██░░░░██ "
440
+ ],
441
+ 'B': [
442
+ " ████████ ",
443
+ " ██░░░░██ ",
444
+ " ████████ ",
445
+ " ██░░░░██ ",
446
+ " ████████ "
447
+ ],
448
+ 'C': [
449
+ " ░██████ ",
450
+ " ██░░░░ ",
451
+ " ██ ",
452
+ " ██░░░░ ",
453
+ " ░██████ "
454
+ ],
455
+ 'D': [
456
+ " ████████ ",
457
+ " ██░░░░██ ",
458
+ " ██░░░░██ ",
459
+ " ██░░░░██ ",
460
+ " ████████ "
461
+ ],
462
+ 'E': [
463
+ " ████████ ",
464
+ " ██░░░░ ",
465
+ " ████████ ",
466
+ " ██░░░░ ",
467
+ " ████████ "
468
+ ],
469
+ 'F': [
470
+ " ████████ ",
471
+ " ██░░░░ ",
472
+ " ████████ ",
473
+ " ██░░░░ ",
474
+ " ██░░░░ "
475
+ ],
476
+ 'G': [
477
+ " ░██████ ",
478
+ " ██░░░░ ",
479
+ " ██ ████ ",
480
+ " ██░░░░██ ",
481
+ " ░██████ "
482
+ ],
483
+ 'H': [
484
+ " ██░░░░██ ",
485
+ " ██░░░░██ ",
486
+ " ████████ ",
487
+ " ██░░░░██ ",
488
+ " ██░░░░██ "
489
+ ],
490
+ 'I': [
491
+ " ████████ ",
492
+ " ██░░ ",
493
+ " ██░░ ",
494
+ " ██░░ ",
495
+ " ████████ "
496
+ ],
497
+ 'J': [
498
+ " ██ ",
499
+ " ██ ",
500
+ " ██ ",
501
+ " ██░░░██ ",
502
+ " ░████ "
503
+ ],
504
+ 'K': [
505
+ " ██░░░░██ ",
506
+ " ██░░██ ",
507
+ " ████ ",
508
+ " ██░░██ ",
509
+ " ██░░░░██ "
510
+ ],
511
+ 'L': [
512
+ " ██░░░░ ",
513
+ " ██░░░░ ",
514
+ " ██░░░░ ",
515
+ " ██░░░░ ",
516
+ " ████████ "
517
+ ],
518
+ 'M': [
519
+ " ██░░░░██ ",
520
+ " ███░███ ",
521
+ " ██ █ ██ ",
522
+ " ██░░░░██ ",
523
+ " ██░░░░██ "
524
+ ],
525
+ 'N': [
526
+ " ██░░░░██ ",
527
+ " ███░░░██ ",
528
+ " ██ █░░██ ",
529
+ " ██░░███ ",
530
+ " ██░░░░██ "
531
+ ],
532
+ 'O': [
533
+ " ░██████ ",
534
+ " ██░░░░██ ",
535
+ " ██░░░░██ ",
536
+ " ██░░░░██ ",
537
+ " ░██████ "
538
+ ],
539
+ 'P': [
540
+ " ████████ ",
541
+ " ██░░░░██ ",
542
+ " ████████ ",
543
+ " ██░░░░ ",
544
+ " ██░░░░ "
545
+ ],
546
+ 'Q': [
547
+ " ░██████ ",
548
+ " ██░░░░██ ",
549
+ " ██░░░░██ ",
550
+ " ██░░██ ",
551
+ " ░██░██ "
552
+ ],
553
+ 'R': [
554
+ " ████████ ",
555
+ " ██░░░░██ ",
556
+ " ████████ ",
557
+ " ██░░██ ",
558
+ " ██░░░██ "
559
+ ],
560
+ 'S': [
561
+ " ░██████ ",
562
+ " ██░░░░ ",
563
+ " ░██████ ",
564
+ " ░██ ",
565
+ " ████████ "
566
+ ],
567
+ 'T': [
568
+ " ████████ ",
569
+ " ██░░ ",
570
+ " ██░░ ",
571
+ " ██░░ ",
572
+ " ██░░ "
573
+ ],
574
+ 'U': [
575
+ " ██░░░░██ ",
576
+ " ██░░░░██ ",
577
+ " ██░░░░██ ",
578
+ " ██░░░░██ ",
579
+ " ░██████ "
580
+ ],
581
+ 'V': [
582
+ " ██░░░░██ ",
583
+ " ██░░░░██ ",
584
+ " ██░░░░██ ",
585
+ " ██░░██ ",
586
+ " ░████ "
587
+ ],
588
+ 'W': [
589
+ " ██░░░░██ ",
590
+ " ██░░░░██ ",
591
+ " ██ █ ██ ",
592
+ " ███ ███ ",
593
+ " ██ ██ "
594
+ ],
595
+ 'X': [
596
+ " ██░░░░██ ",
597
+ " ██░░██ ",
598
+ " ████ ",
599
+ " ██░░██ ",
600
+ " ██░░░░██ "
601
+ ],
602
+ 'Y': [
603
+ " ██░░░░██ ",
604
+ " ██░░██ ",
605
+ " ████ ",
606
+ " ██░░ ",
607
+ " ██░░ "
608
+ ],
609
+ 'Z': [
610
+ " ████████ ",
611
+ " ██░ ",
612
+ " ██░ ",
613
+ " ██░ ",
614
+ " ████████ "
615
+ ]
616
+ }
617
+
618
+ self.letters.update(neon_letters)
619
+
620
+ class CyberFont(ZeroArtFont):
621
+ """Cyberpunk-style ASCII art font"""
622
+ def __init__(self):
623
+ super().__init__("cyber")
624
+ self.letters = {
625
+ ' ': [" ", " ", " ", " ", " "]
626
+ }
627
+ self._populate_letters()
628
+
629
+ def _populate_letters(self):
630
+ """Populate cyberpunk-style letters"""
631
+ cyber_letters = {
632
+ 'A': [
633
+ " ▓█▓▓▓▓ ",
634
+ " ▓▓ ▓▓ ",
635
+ " ▓▓▓▓▓▓▓ ",
636
+ " ▓▓ ▓▓ ",
637
+ " ▓▓ ▓▓ "
638
+ ],
639
+ 'B': [
640
+ " ▓▓▓▓▓▓▓ ",
641
+ " ▓▓ ▓▓ ",
642
+ " ▓▓▓▓▓▓▓ ",
643
+ " ▓▓ ▓▓ ",
644
+ " ▓▓▓▓▓▓▓ "
645
+ ],
646
+ 'C': [
647
+ " ▓▓▓▓▓▓▓ ",
648
+ " ▓▓ ",
649
+ " ▓▓ ",
650
+ " ▓▓ ",
651
+ " ▓▓▓▓▓▓▓ "
652
+ ],
653
+ 'D': [
654
+ " ▓▓▓▓▓▓▓ ",
655
+ " ▓▓ ▓▓ ",
656
+ " ▓▓ ▓▓ ",
657
+ " ▓▓ ▓▓ ",
658
+ " ▓▓▓▓▓▓▓ "
659
+ ],
660
+ 'E': [
661
+ " ▓▓▓▓▓▓▓ ",
662
+ " ▓▓ ",
663
+ " ▓▓▓▓▓▓▓ ",
664
+ " ▓▓ ",
665
+ " ▓▓▓▓▓▓▓ "
666
+ ],
667
+ 'F': [
668
+ " ▓▓▓▓▓▓▓ ",
669
+ " ▓▓ ",
670
+ " ▓▓▓▓▓▓▓ ",
671
+ " ▓▓ ",
672
+ " ▓▓ "
673
+ ],
674
+ 'G': [
675
+ " ▓▓▓▓▓▓▓ ",
676
+ " ▓▓ ",
677
+ " ▓▓ ▓▓▓ ",
678
+ " ▓▓ ▓▓ ",
679
+ " ▓▓▓▓▓▓▓ "
680
+ ],
681
+ 'H': [
682
+ " ▓▓ ▓▓ ",
683
+ " ▓▓ ▓▓ ",
684
+ " ▓▓▓▓▓▓▓ ",
685
+ " ▓▓ ▓▓ ",
686
+ " ▓▓ ▓▓ "
687
+ ],
688
+ 'I': [
689
+ " ▓▓▓▓▓▓▓ ",
690
+ " ▓▓ ",
691
+ " ▓▓ ",
692
+ " ▓▓ ",
693
+ " ▓▓▓▓▓▓▓ "
694
+ ],
695
+ 'J': [
696
+ " ▓▓ ",
697
+ " ▓▓ ",
698
+ " ▓▓ ",
699
+ " ▓▓ ▓▓ ",
700
+ " ▓▓▓▓ "
701
+ ],
702
+ 'K': [
703
+ " ▓▓ ▓▓ ",
704
+ " ▓▓ ▓▓ ",
705
+ " ▓▓▓▓ ",
706
+ " ▓▓ ▓▓ ",
707
+ " ▓▓ ▓▓ "
708
+ ],
709
+ 'L': [
710
+ " ▓▓ ",
711
+ " ▓▓ ",
712
+ " ▓▓ ",
713
+ " ▓▓ ",
714
+ " ▓▓▓▓▓▓▓ "
715
+ ],
716
+ 'M': [
717
+ " ▓▓ ▓▓ ",
718
+ " ▓▓ █ ▓▓ ",
719
+ " ▓▓ ▓ ▓▓ ",
720
+ " ▓▓ ▓▓ ",
721
+ " ▓▓ ▓▓ "
722
+ ],
723
+ 'N': [
724
+ " ▓▓ ▓▓ ",
725
+ " ▓▓ ▓▓ ",
726
+ " ▓▓ ▓ ▓▓ ",
727
+ " ▓▓▓ ▓▓ ",
728
+ " ▓▓ ▓▓ "
729
+ ],
730
+ 'O': [
731
+ " ▓▓▓▓ ",
732
+ " ▓▓ ▓▓ ",
733
+ " ▓▓ ▓▓ ",
734
+ " ▓▓ ▓▓ ",
735
+ " ▓▓▓▓ "
736
+ ],
737
+ 'P': [
738
+ " ▓▓▓▓▓▓▓ ",
739
+ " ▓▓ ▓▓ ",
740
+ " ▓▓▓▓▓▓▓ ",
741
+ " ▓▓ ",
742
+ " ▓▓ "
743
+ ],
744
+ 'Q': [
745
+ " ▓▓▓▓ ",
746
+ " ▓▓ ▓▓ ",
747
+ " ▓▓ ▓▓ ",
748
+ " ▓▓ ▓▓ ",
749
+ " ▓▓▓▓▓ "
750
+ ],
751
+ 'R': [
752
+ " ▓▓▓▓▓▓▓ ",
753
+ " ▓▓ ▓▓ ",
754
+ " ▓▓▓▓▓▓▓ ",
755
+ " ▓▓ ▓▓ ",
756
+ " ▓▓ ▓▓ "
757
+ ],
758
+ 'S': [
759
+ " ▓▓▓▓▓▓▓ ",
760
+ " ▓▓ ",
761
+ " ▓▓▓▓▓▓▓ ",
762
+ " ▓▓ ",
763
+ " ▓▓▓▓▓▓▓ "
764
+ ],
765
+ 'T': [
766
+ " ▓▓▓▓▓▓▓ ",
767
+ " ▓▓ ",
768
+ " ▓▓ ",
769
+ " ▓▓ ",
770
+ " ▓▓ "
771
+ ],
772
+ 'U': [
773
+ " ▓▓ ▓▓ ",
774
+ " ▓▓ ▓▓ ",
775
+ " ▓▓ ▓▓ ",
776
+ " ▓▓ ▓▓ ",
777
+ " ▓▓▓▓ "
778
+ ],
779
+ 'V': [
780
+ " ▓▓ ▓▓ ",
781
+ " ▓▓ ▓▓ ",
782
+ " ▓▓ ▓▓ ",
783
+ " ▓▓ ▓▓ ",
784
+ " ▓▓ "
785
+ ],
786
+ 'W': [
787
+ " ▓▓ ▓▓ ",
788
+ " ▓▓ ▓▓ ",
789
+ " ▓▓ █ ▓▓ ",
790
+ " ▓▓▓▓▓▓ ",
791
+ " ▓▓ ▓▓ "
792
+ ],
793
+ 'X': [
794
+ " ▓▓ ▓▓ ",
795
+ " ▓▓ ▓▓ ",
796
+ " ▓▓ ",
797
+ " ▓▓ ▓▓ ",
798
+ " ▓▓ ▓▓ "
799
+ ],
800
+ 'Y': [
801
+ " ▓▓ ▓▓ ",
802
+ " ▓▓ ▓▓ ",
803
+ " ▓▓ ",
804
+ " ▓▓ ",
805
+ " ▓▓ "
806
+ ],
807
+ 'Z': [
808
+ " ▓▓▓▓▓▓▓ ",
809
+ " ▓▓ ",
810
+ " ▓▓ ",
811
+ " ▓▓ ",
812
+ " ▓▓▓▓▓▓▓ "
813
+ ]
814
+ }
815
+
816
+ self.letters.update(cyber_letters)