absfuyu 4.1.1__py3-none-any.whl → 5.0.0__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 absfuyu might be problematic. Click here for more details.

Files changed (76) hide show
  1. absfuyu/__init__.py +4 -4
  2. absfuyu/__main__.py +13 -1
  3. absfuyu/cli/__init__.py +4 -2
  4. absfuyu/cli/color.py +7 -0
  5. absfuyu/cli/do_group.py +9 -91
  6. absfuyu/cli/tool_group.py +136 -0
  7. absfuyu/config/__init__.py +17 -34
  8. absfuyu/core/__init__.py +49 -0
  9. absfuyu/core/baseclass.py +299 -0
  10. absfuyu/core/baseclass2.py +165 -0
  11. absfuyu/core/decorator.py +67 -0
  12. absfuyu/core/docstring.py +163 -0
  13. absfuyu/core/dummy_cli.py +67 -0
  14. absfuyu/core/dummy_func.py +47 -0
  15. absfuyu/dxt/__init__.py +42 -0
  16. absfuyu/dxt/dictext.py +201 -0
  17. absfuyu/dxt/dxt_support.py +79 -0
  18. absfuyu/dxt/intext.py +586 -0
  19. absfuyu/dxt/listext.py +508 -0
  20. absfuyu/dxt/strext.py +530 -0
  21. absfuyu/{extensions → extra}/__init__.py +3 -2
  22. absfuyu/extra/beautiful.py +251 -0
  23. absfuyu/{extensions/extra → extra}/data_analysis.py +51 -82
  24. absfuyu/fun/__init__.py +110 -135
  25. absfuyu/fun/tarot.py +9 -17
  26. absfuyu/game/__init__.py +6 -0
  27. absfuyu/game/game_stat.py +6 -0
  28. absfuyu/game/sudoku.py +7 -1
  29. absfuyu/game/tictactoe.py +12 -5
  30. absfuyu/game/wordle.py +14 -8
  31. absfuyu/general/__init__.py +6 -79
  32. absfuyu/general/content.py +22 -36
  33. absfuyu/general/generator.py +17 -42
  34. absfuyu/general/human.py +108 -228
  35. absfuyu/general/shape.py +1334 -0
  36. absfuyu/logger.py +8 -13
  37. absfuyu/pkg_data/__init__.py +137 -99
  38. absfuyu/pkg_data/deprecated.py +133 -0
  39. absfuyu/pkg_data/passwordlib_lzma.pkl +0 -0
  40. absfuyu/sort.py +6 -130
  41. absfuyu/tools/__init__.py +2 -2
  42. absfuyu/tools/checksum.py +44 -22
  43. absfuyu/tools/converter.py +82 -50
  44. absfuyu/tools/keygen.py +25 -30
  45. absfuyu/tools/obfuscator.py +246 -112
  46. absfuyu/tools/passwordlib.py +330 -0
  47. absfuyu/tools/shutdownizer.py +287 -0
  48. absfuyu/tools/web.py +2 -9
  49. absfuyu/util/__init__.py +15 -15
  50. absfuyu/util/api.py +10 -15
  51. absfuyu/util/json_method.py +7 -24
  52. absfuyu/util/lunar.py +3 -9
  53. absfuyu/util/path.py +22 -27
  54. absfuyu/util/performance.py +43 -67
  55. absfuyu/util/shorten_number.py +65 -14
  56. absfuyu/util/zipped.py +9 -15
  57. absfuyu-5.0.0.dist-info/METADATA +143 -0
  58. absfuyu-5.0.0.dist-info/RECORD +68 -0
  59. absfuyu/core.py +0 -57
  60. absfuyu/everything.py +0 -32
  61. absfuyu/extensions/beautiful.py +0 -188
  62. absfuyu/extensions/dev/__init__.py +0 -244
  63. absfuyu/extensions/dev/password_hash.py +0 -80
  64. absfuyu/extensions/dev/passwordlib.py +0 -258
  65. absfuyu/extensions/dev/project_starter.py +0 -60
  66. absfuyu/extensions/dev/shutdownizer.py +0 -156
  67. absfuyu/extensions/extra/__init__.py +0 -24
  68. absfuyu/fun/WGS.py +0 -134
  69. absfuyu/general/data_extension.py +0 -1796
  70. absfuyu/tools/stats.py +0 -226
  71. absfuyu/util/pkl.py +0 -67
  72. absfuyu-4.1.1.dist-info/METADATA +0 -121
  73. absfuyu-4.1.1.dist-info/RECORD +0 -61
  74. {absfuyu-4.1.1.dist-info → absfuyu-5.0.0.dist-info}/WHEEL +0 -0
  75. {absfuyu-4.1.1.dist-info → absfuyu-5.0.0.dist-info}/entry_points.txt +0 -0
  76. {absfuyu-4.1.1.dist-info → absfuyu-5.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,156 +0,0 @@
1
- # type: ignore
2
- # flake8: noqa
3
-
4
- """
5
- Absfuyu: Shutdownizer
6
- ---------------------
7
- This shutdowns
8
-
9
- Version: 1.0.0dev
10
- Date updated: 27/11/2023 (dd/mm/yyyy)
11
- """
12
-
13
- # Module level
14
- ###########################################################################
15
- __all__ = ["ShutDownizer"]
16
-
17
-
18
- # Library
19
- ###########################################################################
20
- import datetime
21
- import os
22
- import random
23
- import subprocess
24
- import sys
25
- from pathlib import Path
26
-
27
- from absfuyu.logger import LogLevel, logger
28
-
29
-
30
- # Class
31
- ###########################################################################
32
- class Dummy:
33
- def __init__(self) -> None:
34
- pass
35
-
36
- def __str__(self) -> str:
37
- return f"{self.__class__.__name__}()"
38
-
39
- def __repr__(self) -> str:
40
- return self.__str__()
41
-
42
-
43
- class ShutDownizer(Dummy):
44
- """
45
- ShutDownizer
46
-
47
- Shutdown tool because why not
48
- """
49
-
50
- def __init__(self) -> None:
51
- """doc_string"""
52
- self.os: str = sys.platform
53
- logger.debug(f"Current OS: {self.os}")
54
-
55
- if self.os in ["win32", "cygwin"]: # Windows
56
- self.engine = ShutDownizerWin()
57
- elif self.os == "darwin": # MacOS
58
- self.engine = ShutDownizerMac()
59
- elif self.os == "linux": # Linux
60
- self.engine = ShutDownizerLinux()
61
- else: # Other (probably linux)
62
- self.engine = ShutDownizerLinux()
63
-
64
- def __str__(self) -> str:
65
- return f"{self.__class__.__name__}({self.os})"
66
-
67
- def shutdown(self):
68
- """Shutdown"""
69
- self.engine.shutdown()
70
-
71
- def restart(self):
72
- """Restart"""
73
- self.engine.restart()
74
-
75
- def cancel(self):
76
- """Cancel"""
77
- self.engine.cancel()
78
-
79
-
80
- class ShutDownizerEngine(Dummy):
81
- """
82
- Abstract class for different type of OS
83
- """
84
-
85
- def __init__(self) -> None:
86
- self.shutdown_cmd = ""
87
- self.restart_cmd = ""
88
- self.cancel_cmd = ""
89
-
90
- def _excute_cmd(self, cmd) -> None:
91
- """Execute the cmd"""
92
- try:
93
- if isinstance(cmd, str):
94
- subprocess.run(cmd.split())
95
- elif isinstance(cmd, list):
96
- subprocess.run(cmd)
97
- else:
98
- logger.error(f'"{cmd}" failed to run')
99
- except:
100
- logger.error(f'"{cmd}" failed to run')
101
-
102
- def shutdown(self):
103
- """Shutdown"""
104
- try:
105
- self._excute_cmd(self.shutdown_cmd)
106
- except:
107
- pass
108
-
109
- def restart(self):
110
- """Restart"""
111
- self._excute_cmd(self.restart_cmd)
112
-
113
- def cancel(self):
114
- """Cancel shutdown/restart"""
115
- self._excute_cmd(self.cancel_cmd)
116
-
117
-
118
- class ShutDownizerWin(ShutDownizerEngine):
119
- """ShutDownizer - Windows"""
120
-
121
- def __init__(self) -> None:
122
- self.shutdown_cmd = "shutdown -f -s -t 0"
123
- self.cancel_cmd = "shutdown -a"
124
-
125
- def _punish(self):
126
- """Create a `batch` script that shut down computer when boot up"""
127
- try:
128
- startup_folder_win = Path(os.getenv("appdata")).joinpath(
129
- "Microsoft", "Windows", "Start Menu", "Programs", "Startup"
130
- )
131
- with open(startup_folder_win.joinpath("system.bat"), "w") as f:
132
- f.write(self.shutdown_cmd)
133
- except:
134
- logger.error("Cannot write file to startup folder")
135
-
136
-
137
- class ShutDownizerMac(ShutDownizerEngine):
138
- """ShutDownizer - MacOS"""
139
-
140
- def __init__(self) -> None:
141
- self.shutdown_cmd = ["osascript", "-e", 'tell app "System Events" to shut down']
142
-
143
-
144
- class ShutDownizerLinux(ShutDownizerEngine):
145
- """ShutDownizer - Linux"""
146
-
147
- def __init__(self) -> None:
148
- self.shutdown_cmd = "shutdown -h now"
149
-
150
-
151
- # Run
152
- ###########################################################################
153
- if __name__ == "__main__":
154
- logger.setLevel(LogLevel.DEBUG)
155
- test = ShutDownizer()
156
- print(ShutDownizerLinux().shutdown())
@@ -1,24 +0,0 @@
1
- """
2
- Absfuyu: Extra
3
- --------------
4
- Extra feature that require additional libraries
5
-
6
- Version: 1.0.1
7
- Date updated: 24/11/2023 (dd/mm/yyyy)
8
- """
9
-
10
- # Module level
11
- ###########################################################################
12
-
13
-
14
- # Library
15
- ###########################################################################
16
-
17
-
18
- # Function
19
- ###########################################################################
20
-
21
- # Run
22
- ###########################################################################
23
- if __name__ == "__main__":
24
- pass
absfuyu/fun/WGS.py DELETED
@@ -1,134 +0,0 @@
1
- # flake8: noqa
2
- """
3
- Absfuyu: WGS
4
- ------------
5
- Wolf's Gravestone
6
-
7
- - This module is not affiliated with miHoYo/Hoyoverse.
8
- - Genshin Impact, game content and materials are trademarks and copyrights of miHoYo/Hoyoverse.
9
-
10
- Version: 1.0.3
11
- Date updated: 24/11/2023 (dd/mm/yyyy)
12
-
13
- Usage:
14
- ------
15
- >>> test = WGS()
16
- >>> print(test.pixel_art())
17
- """
18
-
19
- # Module level
20
- ###########################################################################
21
- __all__ = ["WGS"]
22
-
23
-
24
- # Library
25
- ###########################################################################
26
- import base64
27
-
28
- from absfuyu.logger import logger
29
- from absfuyu.tools.converter import Str2Pixel
30
-
31
-
32
- # Class
33
- ###########################################################################
34
- class WGS:
35
- """
36
- Wolf's Gravestone
37
-
38
- - This module is not affiliated with miHoYo/Hoyoverse.
39
- - Genshin Impact, game content and materials are trademarks and copyrights of miHoYo/Hoyoverse.
40
- """
41
-
42
- def __init__(self) -> None:
43
- self._text_art_big = "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLjo9KzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0qKioqKi4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSojKisrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIyslKyA6LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSMjJSsuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4qIyUqLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IyMlPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IyMjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIyUrICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIyMjLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9KyAgICA9JSMjLiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDojIyUrLi4tLT0tIDojIyo9KiMlJT0gICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMlJSUlIyUjIyUlJSUlJSMjIyUlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOj0lJUAlIyMjIyUjJSUlJSUlPS0tOiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJSo6JSUjJSUlIyMlJSUlJSUqPSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IyM9KysjJSMjKyolJSMlJSo6ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo9KiojIyMjJSMlIyUlJSUlJSUjKyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC49KyoqIyUlJSMjIyUjIyUlJSUlJSsgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJSMjIyUjIyMjQCMlIys9LSNAJSUjKz0tICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOisqIyVAJSUjIyUlJSMlIyUjKiouOislJSMjLiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKiMjJSVAJSUlJSUlIyUtLis9ICAgICA6Ky0tLiAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qIyMlQEAlIyVAQCUjJUArIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4tIyUlJUAlJUBAIyUlIyouICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSMjJSUlJSUlJSUjJSU9LiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLSojJSUlJSUlQCUlJSMqLSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuOiolJSUlJSUlJSUlIyorLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiojJSUlJSUlJSUlIz06ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gLSMjIyMjIyUlJSUlIy0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IyMjIyUjIyUlIz0qLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOisjIyMjIyMlJSUqLS0uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLSojIyMjJSMlJSUqLTouIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9KysqKioqIyMqKj0tLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLSsqKiorKiojIyMqPTogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSsrKysqIyMrKiMqPS4gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLjorKiojIyMjIyUjKj0tICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gOisqIyMjIyMjIyMqPTogIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiA9KyojKisjIyMjIystIAogICAgICAgICAgICAgICAgICAgICAgICAuIC49KiojKi0qIyMjKj0tICAKICAgICAgICAgICAgICAgICAgICAgICAgOisqKiMrPSojIyMqPToKICAgICAgICAgICAgICAgICAgICAgICAgLSsqKiotPSoqKyorPS4KICAgICAgICAgICAgICAgICAgICAgICAgLj0rKiorLSojKioqKy0uICAKICAgICAgICAgICAgICAgICAgICAuOi09KyoqLT0jIyoqKz06IAogICAgICAgICAgICAgICAgICAgIDotPSsrKiotKyMqKiorLSAKICAgICAgICAgICAgICAgICAgICA6PSsrKyAgOioqKis9OiAgICAKICAgICAgICAgICAgICAgIDo9KyoqLS09KioqKz06IAogICAgICAgICAgICAgICAgLT0rKiotKysrKz06LiAgCiAgICAgICAgICAgICAgICA6PT0rKis6PT06LiAgCiAgICAgICAgICAgIDo9KysqLQogICAgICAgICAgICAuLT0rKy0uIAogICAgICAgIC46PS06LiAgICAKICAgICAgICAuOjouICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK"
44
- self._text_art_small = "CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuKiorCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiojLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDojKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uICAqKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPSUrPSsrIyMqIyoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKiUjJSMlJSM9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyoqIyMjJSUlPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsjIyUjIyMqKiUjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLisjJSUlJSUrKjogLSotCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IyUlJSUlKy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC49IyUlJSUjPQogICAgICAgICAgICAgICAgICAgICAgICAuKiUlJSUlKy4KICAgICAgICAgICAgICAgICAgICAgICAgLiojJSUlIy0KICAgICAgICAgICAgICAgICAgICAgICAgLSMjIyUjPS4KICAgICAgICAgICAgICAgICAgICAuPSoqKiMqOgogICAgICAgICAgICAgICAgICAgIDorKiMjKisuCiAgICAgICAgICAgICAgICAgICAgLSoqIyMjLQogICAgICAgICAgICAgICAgLj0qKyojKjoKICAgICAgICAgICAgICAgIDorKisqKj0uCiAgICAgICAgICAgICAgICAuLSsrKyoqLQogICAgICAgICAgICAuPSotLSorOgogICAgICAgICAgICAuPSs9PS0uCiAgICAgICAgICAgIDorPQogICAgICAgIC46Lgo="
45
- self._pixel_art_wgs = [
46
- # Art Credit: https://www.reddit.com/r/PixelArt/comments/n6xyrb/wolfs_gravestone_genshin_impact/
47
- "51w",
48
- "46w3b1w",
49
- "43w2b1w1b1R1b1w",
50
- "43w1b1R1b1R2b1w",
51
- "43w2b1r1b3w",
52
- "41w3b1r1b1r1b2w",
53
- "28w3b10w1b1g5b2w",
54
- "28w1b1r1b9w1b3g1b5w",
55
- "28w2b1R1b1w2b4w1b3g2b5w",
56
- "30w1b1m1b1g1b1w1b1w1b3g1b7w",
57
- "30w3b2g3b3g1b8w",
58
- "29w1b2g1b5g1b1g1b9w",
59
- "29w1b1g2b1g4b1g1b10w",
60
- "29w1b3g2b1R2b1g2b9w",
61
- "27w7b3r1b1g1b10w",
62
- "27w1b5g1b1r1w2b2g2b8w",
63
- "26w2b3g6b4g1b8w",
64
- "26w1b2g2b2R1b1g1b1g4b9w",
65
- "25w1b2g1b2R2r1b1g1b1g1b1g1b1m1b8w",
66
- "24w1b1w1m1g1b3r1b2g1b3g2b1R2b6w",
67
- "21w3b2w1m1b3r1w1b2g4b2w1b1r1b6w",
68
- "21w1b2w3m1b1r1w2b3g1b5w3b6w",
69
- "21w1b1w3m1b1r2b3g3b14w",
70
- "20w1b1w2R1m1b1r1b3m1g2b16w",
71
- "19w1b1w3R1b1r1b2m2w1b18w",
72
- "18w1b1w3R1b1r1b3m1w1b19w",
73
- "17w1b1r3R1b1w1b2R1m1w1b20w",
74
- "16w1b1w1R1r1R1b1r1b3R2w1b20w",
75
- "15w1b1w1r1R1y1R2b3R1w3b20w",
76
- "14w1b3r1y1R2r4y1b23w",
77
- "13w1b1w3r4y2R1w1b24w",
78
- "12w1b1w2r2R3r1R2y1b25w",
79
- "10w2b1w2r1R2b1R3r1w1b26w",
80
- "9w1b2w2r1R1b1w1b1R2r1w1b27w",
81
- "9w1b1w2r1R1b1w1b1R2r1y1b28w",
82
- "8w1b1w1r2R1b1w1b2r1y1w1b29w",
83
- "7w1b1w1r1R2b1w1b4y1b30w",
84
- "6w1b1w1r1R1b2w1b1R2r1w1b31w",
85
- "5w1b1w2r1R1b2w1b1R1r2w1b31w",
86
- "4w1b1w2r1R1b1w2b2r1w2b32w",
87
- "3w1b1w1r1y1R1b1w1b3y1w1b34w",
88
- "2w1b1w1r2y1b1w6b35w",
89
- "1w6b43w",
90
- "50w",
91
- ]
92
-
93
- def __str__(self) -> str:
94
- return f"{self.__class__.__name__}()"
95
-
96
- def __repr__(self) -> str:
97
- return self.__str__()
98
-
99
- @staticmethod
100
- def _base64_decode(base64_text: str) -> str:
101
- return base64.b64decode(base64_text).decode()
102
-
103
- def text_art(self, option: int = 1) -> str:
104
- """
105
- Text art
106
-
107
- :param option: ``1`` | ``2``
108
- :type option: int
109
- :rtype: str
110
- """
111
- if option == 1:
112
- return self._base64_decode(self._text_art_big)
113
- else:
114
- return self._base64_decode(self._text_art_small)
115
-
116
- def pixel_art(self) -> str:
117
- """
118
- Pixel art
119
-
120
- :rtype: str
121
- """
122
- # Make data
123
- out = "1N".join(self._pixel_art_wgs)
124
- out = out.replace("y", "r") # Convert yellow into red
125
- out = out.replace("m", "R") # Convert magenta into dark red
126
- return Str2Pixel(out).convert()
127
-
128
-
129
- # Run
130
- ###########################################################################
131
- if __name__ == "__main__":
132
- logger.setLevel(10)
133
- test = WGS()
134
- print(test.pixel_art())