absfuyu 4.2.0__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 (67) hide show
  1. absfuyu/__init__.py +4 -4
  2. absfuyu/__main__.py +13 -1
  3. absfuyu/cli/color.py +7 -0
  4. absfuyu/cli/do_group.py +0 -35
  5. absfuyu/cli/tool_group.py +5 -5
  6. absfuyu/config/__init__.py +17 -34
  7. absfuyu/core/__init__.py +49 -0
  8. absfuyu/core/baseclass.py +299 -0
  9. absfuyu/core/baseclass2.py +165 -0
  10. absfuyu/core/decorator.py +67 -0
  11. absfuyu/core/docstring.py +163 -0
  12. absfuyu/core/dummy_cli.py +67 -0
  13. absfuyu/core/dummy_func.py +47 -0
  14. absfuyu/dxt/__init__.py +42 -0
  15. absfuyu/dxt/dictext.py +201 -0
  16. absfuyu/dxt/dxt_support.py +79 -0
  17. absfuyu/dxt/intext.py +586 -0
  18. absfuyu/dxt/listext.py +508 -0
  19. absfuyu/dxt/strext.py +530 -0
  20. absfuyu/{extensions → extra}/__init__.py +2 -2
  21. absfuyu/extra/beautiful.py +251 -0
  22. absfuyu/{extensions → extra}/data_analysis.py +51 -82
  23. absfuyu/fun/__init__.py +110 -135
  24. absfuyu/fun/tarot.py +9 -17
  25. absfuyu/game/__init__.py +6 -0
  26. absfuyu/game/game_stat.py +6 -0
  27. absfuyu/game/sudoku.py +7 -1
  28. absfuyu/game/tictactoe.py +12 -5
  29. absfuyu/game/wordle.py +14 -8
  30. absfuyu/general/__init__.py +6 -79
  31. absfuyu/general/content.py +22 -36
  32. absfuyu/general/generator.py +17 -42
  33. absfuyu/general/human.py +108 -228
  34. absfuyu/general/shape.py +1334 -0
  35. absfuyu/logger.py +8 -13
  36. absfuyu/pkg_data/__init__.py +136 -99
  37. absfuyu/pkg_data/deprecated.py +133 -0
  38. absfuyu/sort.py +6 -130
  39. absfuyu/tools/__init__.py +2 -2
  40. absfuyu/tools/checksum.py +33 -22
  41. absfuyu/tools/converter.py +51 -48
  42. absfuyu/tools/keygen.py +25 -30
  43. absfuyu/tools/obfuscator.py +246 -112
  44. absfuyu/tools/passwordlib.py +99 -29
  45. absfuyu/tools/shutdownizer.py +68 -47
  46. absfuyu/tools/web.py +2 -9
  47. absfuyu/util/__init__.py +15 -15
  48. absfuyu/util/api.py +10 -15
  49. absfuyu/util/json_method.py +7 -24
  50. absfuyu/util/lunar.py +3 -9
  51. absfuyu/util/path.py +22 -27
  52. absfuyu/util/performance.py +43 -67
  53. absfuyu/util/shorten_number.py +65 -14
  54. absfuyu/util/zipped.py +9 -15
  55. {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/METADATA +41 -14
  56. absfuyu-5.0.0.dist-info/RECORD +68 -0
  57. absfuyu/core.py +0 -57
  58. absfuyu/everything.py +0 -32
  59. absfuyu/extensions/beautiful.py +0 -188
  60. absfuyu/fun/WGS.py +0 -134
  61. absfuyu/general/data_extension.py +0 -1796
  62. absfuyu/tools/stats.py +0 -226
  63. absfuyu/util/pkl.py +0 -67
  64. absfuyu-4.2.0.dist-info/RECORD +0 -59
  65. {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/WHEEL +0 -0
  66. {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/entry_points.txt +0 -0
  67. {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,68 @@
1
+ absfuyu/__init__.py,sha256=0fFKIm3iQEyqB0IdZIIqBe5bF7CCRl7ZD4mxwa_GxF0,600
2
+ absfuyu/__main__.py,sha256=vUKjwcjMvynbeygRLuXWMKR2vR7CndZ496xx2Qzb6xk,603
3
+ absfuyu/logger.py,sha256=VP9-sXtGVyDkHUyRSaGUfCrl_wn8wOnmtCLcUNec-yg,13043
4
+ absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ absfuyu/sort.py,sha256=WjH0asrvl02TMlAhG77X-wGcGHIIQd-jWU_Xv9Xv-qc,3250
6
+ absfuyu/version.py,sha256=KMaeXNl93L4VU2RnTySoFv23IDyTvHfy84nyatFcKaE,14128
7
+ absfuyu/cli/__init__.py,sha256=mYX6lVAat9UOI9qR-ZDFw_4WOLVA9r-jTtW8d2fBEKM,1181
8
+ absfuyu/cli/color.py,sha256=Cvpqwc5mb4-71OplswgfxmJ8D9jf9gkjM7l3qV902X0,774
9
+ absfuyu/cli/config_group.py,sha256=FsyYm2apSyAA2PAD12CpHAizenRds_QlLf8j0AlLuVo,1230
10
+ absfuyu/cli/do_group.py,sha256=QBOL3Z6E70-_kPOivaH160lmFyOL2Zl70Qjda_fV0Fc,2131
11
+ absfuyu/cli/game_group.py,sha256=ySpL2hm4VCplhNY0s22kBGI5eFCdJj9fm1T58yftU74,2348
12
+ absfuyu/cli/tool_group.py,sha256=ZruYcBLCjP2G0CgyE19WsRJ2kn2H1fKEZ0pa0KF6tyI,3164
13
+ absfuyu/config/__init__.py,sha256=yWN-TguDXcWJg5EiCGRnKLsTZQfIYvKVHhzASNp2S0s,8238
14
+ absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
15
+ absfuyu/core/__init__.py,sha256=oZpRrxIU66dN4UYO61TM72oE0Ijs_3wajdYCg12SJlw,1186
16
+ absfuyu/core/baseclass.py,sha256=t5oyfwBw5Mm5wLp2o_JnTNx0v9njEb_OeRlzOTbc5KM,10204
17
+ absfuyu/core/baseclass2.py,sha256=5meEqRk0pPoDlhA0_qti_-p-fHvxT6XqwitHLpFVl_Q,5366
18
+ absfuyu/core/decorator.py,sha256=MpmgAb1gsXgRDEyMJLvSxUWEG0WC4aTFYJAEwjdauAI,1901
19
+ absfuyu/core/docstring.py,sha256=2TmPXXtJKszfBPPHXDMPjrTCpVFwxmS8J5XhWb4myNc,5228
20
+ absfuyu/core/dummy_cli.py,sha256=_-Gsmg2beO7fTSP-3nSGwqVmiVKpzTICIuHfGetQbw8,1884
21
+ absfuyu/core/dummy_func.py,sha256=AS7kgMWeXZoYF94gocyydAfkyOM7W2v1F9wNQ40ta-Q,1097
22
+ absfuyu/dxt/__init__.py,sha256=IHTjk-GdeKp5s9mhH87WUrHVb9gY34WUzrjQEw0q9II,986
23
+ absfuyu/dxt/dictext.py,sha256=_q45v98x2sB38QBROg-Fbd6Aw63HO5hPIEJENI39d-E,5998
24
+ absfuyu/dxt/dxt_support.py,sha256=dWMbFYiRUhX9QHxChYo_YzwCywylUi1R5h28y13Wn4I,2109
25
+ absfuyu/dxt/intext.py,sha256=wMmjt24c-0Kk3gJx1ln0ULNdrxmgeDh3zUOUTD6cQBo,16716
26
+ absfuyu/dxt/listext.py,sha256=lqWVQ1uBZ3zm0d1S0oVz0qjTagbucZjQ3htcFzc24tg,13964
27
+ absfuyu/dxt/strext.py,sha256=UDS818z4Rv92gCgdlfz_ibr3vsip6Sgxp-yfI8JyPho,14628
28
+ absfuyu/extra/__init__.py,sha256=lyJwiRHvCL3qNYKK9mbjNrzIHGDPERyfwl8_V6g4PEE,182
29
+ absfuyu/extra/beautiful.py,sha256=llxgAYco5-bg6VC1kMwA7VyCSJgu4LdCHBG0pM1PWs8,8072
30
+ absfuyu/extra/data_analysis.py,sha256=0zfjWm3t1nyp0n0rsPKzWmcR0ZvF7BpQsjn9niGqhps,32005
31
+ absfuyu/fun/__init__.py,sha256=tDSDIDHrJPQ_hWV7ASpbAUCIQ6B1t1IPq4ahrZQqfWk,5435
32
+ absfuyu/fun/tarot.py,sha256=E9NKwhebU4EGOcbQkt4Ni7o6ZIYq8-h7_Fz3jk0Arpw,2401
33
+ absfuyu/game/__init__.py,sha256=tkNxTbdkPtAhGEdqXFQARHYApEhcD68CeDF_oHMzVeA,4691
34
+ absfuyu/game/game_stat.py,sha256=mOs6UOvNUmr-vNOomNJK0lY9o9m9Rs0b9GEMGeXaAdE,1236
35
+ absfuyu/game/sudoku.py,sha256=ascN8ey7SimldXT8ae3AWv4bxlfwT4X14JdmxY2o808,10405
36
+ absfuyu/game/tictactoe.py,sha256=_JLeIhxHEIDLRJay7i1kagxx8kCDhZNgTrXt7Rl0ntc,9960
37
+ absfuyu/game/wordle.py,sha256=izvV_lOZwPnslDdQ73PnwD5t5ECKVWGhpZvHAZH-2EY,101576
38
+ absfuyu/general/__init__.py,sha256=EITlDmPAp6lcAWR9Bq707j4FZ9jAD9PblftOK1XvGDA,480
39
+ absfuyu/general/content.py,sha256=wGzYufji8PmHy6ygGFclf_u6DZudnYaeHtR9d2of_1E,17122
40
+ absfuyu/general/generator.py,sha256=C54TJ3DZ5TXFYRI7_jLdtjTMcWxACX4Jmlo27Zh90Ew,8996
41
+ absfuyu/general/human.py,sha256=o1TswjgN8zRfCmkEgchS1HVq036twBB64u1Dt4KLI1I,8099
42
+ absfuyu/general/shape.py,sha256=dAYSihPnanax4jMPSvZMIzMbo9puvxIqdQxuSlDLl4I,38619
43
+ absfuyu/pkg_data/__init__.py,sha256=Jn8fHDsPCd8w4YoOo3EpoExxda5BRAjHQJRdYwwTYeA,5510
44
+ absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
45
+ absfuyu/pkg_data/deprecated.py,sha256=L1ju3m_P8DbqQ1l18XgneVixorWiLJ5HeKh_K3wovXM,4349
46
+ absfuyu/pkg_data/passwordlib_lzma.pkl,sha256=rT5lJT8t42BATU5Cp2qFwbnZkbx-QlUgodSvR0wFY6I,891877
47
+ absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
48
+ absfuyu/tools/__init__.py,sha256=g6-2banBKxGfAbsVTd-OZhLujixXApsQmx2RlAB_aGE,118
49
+ absfuyu/tools/checksum.py,sha256=1WLC9GGmjehxhhV-BgdxJbA45QhN850u_znOgwoYDP0,5156
50
+ absfuyu/tools/converter.py,sha256=tdDQpdzbB9RdcZIlcV6LzldDkVEiwCFzRoWCfJVCpn4,11615
51
+ absfuyu/tools/keygen.py,sha256=JxhUiiaUHaGqVicXY46JjVrH3ke2QlnsRJqgIvlxUsg,7115
52
+ absfuyu/tools/obfuscator.py,sha256=vy_nIyQeDci6vHFbHL907Ha6RUZm9axsSZw_nKyyYBc,12687
53
+ absfuyu/tools/passwordlib.py,sha256=jEmKW63fTyGOtBPPVi44fMtcNu1W7m2Qkox-GHxTxH4,9632
54
+ absfuyu/tools/shutdownizer.py,sha256=z5z5ofdAtOBat1m7lz95FwXZI0fMarl2mChBMwUMi4I,8549
55
+ absfuyu/tools/web.py,sha256=rVF-60IT8J_RVxMPzz5bhgBq3i1WmwbR5ouzQ_CZwhQ,1240
56
+ absfuyu/util/__init__.py,sha256=3Ylck5HBHAhFd_B_v6Bh3C1qyI1M0Kk9sK9nNIBLHqU,3831
57
+ absfuyu/util/api.py,sha256=xXwffnpq1qxBIag_MOriKe3ueaCdsaq-WFRIH-8yFqI,4288
58
+ absfuyu/util/json_method.py,sha256=a4xVabcw18HBLJthkmf5KNUcQya45-A8AFEpcGIDx3Q,2197
59
+ absfuyu/util/lunar.py,sha256=8dxXdGU7V_5L9fOeq36oKDzs_DcLnIiFwIpHa1O22yc,13630
60
+ absfuyu/util/path.py,sha256=0hRzobegpblgCIluy9wXFNCwlDoovz_ccVCwaVqvgo8,16434
61
+ absfuyu/util/performance.py,sha256=aN_0WGJfupqh8FdgsEU4llkDpUNAlojlWXtlRGMFmJE,8585
62
+ absfuyu/util/shorten_number.py,sha256=7-uH4zwy594pVnqqGe75IoS7vqEXx3DIA9nRl8hrQpw,7788
63
+ absfuyu/util/zipped.py,sha256=fXLVt4hnIgN2hwhvbwxzYQC1r--RX2Hgb429r767WDI,2979
64
+ absfuyu-5.0.0.dist-info/METADATA,sha256=J29q7jABMmx_LkCQVw9aL9BYsGk3QdTBsA4W0WyeF2s,4839
65
+ absfuyu-5.0.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
66
+ absfuyu-5.0.0.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
67
+ absfuyu-5.0.0.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
68
+ absfuyu-5.0.0.dist-info/RECORD,,
absfuyu/core.py DELETED
@@ -1,57 +0,0 @@
1
- """
2
- Absfuyu: Core
3
- -------------
4
- Contain type hints and other stuffs
5
-
6
- Version: 2.3.2
7
- Date updated: 11/02/2025 (dd/mm/yyyy)
8
- """
9
-
10
- # Module Package
11
- ###########################################################################
12
- __all__ = [
13
- # color
14
- "CLITextColor",
15
- # path
16
- "CORE_PATH",
17
- "CONFIG_PATH",
18
- "DATA_PATH",
19
- ]
20
-
21
- __package_feature__ = ["beautiful", "extra", "full", "dev"]
22
-
23
-
24
- # Library
25
- ###########################################################################
26
- from importlib import import_module
27
- from importlib.resources import files
28
-
29
-
30
- class CLITextColor:
31
- """Color code for text in terminal"""
32
-
33
- WHITE = "\x1b[37m"
34
- BLACK = "\x1b[30m"
35
- BLUE = "\x1b[34m"
36
- GRAY = "\x1b[90m"
37
- GREEN = "\x1b[32m"
38
- RED = "\x1b[91m"
39
- DARK_RED = "\x1b[31m"
40
- MAGENTA = "\x1b[35m"
41
- YELLOW = "\x1b[33m"
42
- RESET = "\x1b[39m"
43
-
44
-
45
- # CORE_PATH = Path(__file__).parent.absolute()
46
- CORE_PATH = files("absfuyu")
47
- CONFIG_PATH = CORE_PATH.joinpath("config", "config.json")
48
- DATA_PATH = CORE_PATH.joinpath("pkg_data")
49
-
50
-
51
- # tqdm wrapper
52
- try:
53
- tqdm = import_module("tqdm").tqdm
54
- except ModuleNotFoundError:
55
-
56
- def tqdm(iterable, **kwargs):
57
- return iterable
absfuyu/everything.py DELETED
@@ -1,32 +0,0 @@
1
- # flake8: noqa
2
- """
3
- Absfuyu: Everything
4
- -------------------
5
- Everything has to offer in this package
6
-
7
- Version: 2.0.1
8
- Date updated: 26/11/2023 (mm/dd/yyyy)
9
-
10
- Usage:
11
- ------
12
- >>> from absfuyu import everything as ab
13
- """
14
-
15
- # Library
16
- ###########################################################################
17
- from absfuyu.config import *
18
- from absfuyu.core import *
19
- from absfuyu.extensions import *
20
- from absfuyu.fun import *
21
- from absfuyu.game import *
22
- from absfuyu.general import *
23
- from absfuyu.logger import *
24
- from absfuyu.pkg_data import *
25
- from absfuyu.sort import *
26
- from absfuyu.tools import *
27
- from absfuyu.util import *
28
- from absfuyu.version import *
29
-
30
- # Is loaded
31
- ###########################################################################
32
- __IS_EVERYTHING = True
@@ -1,188 +0,0 @@
1
- # type: ignore
2
- """
3
- Absfuyu: Beautiful
4
- ------------------
5
- A decorator that makes output more beautiful
6
-
7
- Version: 1.0.2
8
- Date updated: 24/11/2023 (dd/mm/yyyy)
9
- """
10
-
11
- # Module level
12
- ###########################################################################
13
- __all__ = [
14
- "beautiful_output",
15
- "print",
16
- "demo",
17
- ]
18
-
19
-
20
- # Library
21
- ###########################################################################
22
- from functools import wraps as __wraps
23
- from time import perf_counter as __perf
24
- from typing import Optional as __Optional
25
-
26
- BEAUTIFUL_MODE = False
27
- try:
28
- # from rich import print
29
- from rich.align import Align as __Align
30
- from rich.console import Console as __Console
31
- from rich.console import Group as __Group
32
- from rich.panel import Panel as __Panel
33
- from rich.table import Table as __Table
34
- from rich.text import Text as __Text
35
- except ImportError:
36
- from absfuyu.config import ABSFUYU_CONFIG
37
-
38
- if ABSFUYU_CONFIG._get_setting("auto-install-extra").value:
39
- __cmd: str = "python -m pip install -U absfuyu[beautiful]".split()
40
- from subprocess import run as __run
41
-
42
- __run(__cmd)
43
- else:
44
- raise SystemExit("This feature is in absfuyu[beautiful] package") # noqa: B904
45
- else:
46
- BEAUTIFUL_MODE = True
47
-
48
-
49
- # Function
50
- ###########################################################################
51
- def beautiful_output(
52
- layout_option: int = 2,
53
- header_visible: __Optional[bool] = True,
54
- footer_visible: __Optional[bool] = False,
55
- ):
56
- """
57
- Beautify function output
58
-
59
- Parameters
60
- ----------
61
- header_visible : True | False | None
62
- Show header
63
-
64
- footer_visible : True | False | None
65
- Show footer
66
- """
67
-
68
- if not BEAUTIFUL_MODE:
69
- raise SystemExit("This feature is in absfuyu[beautiful] package")
70
-
71
- def decorator(func):
72
- @__wraps(func)
73
- def wrapper(*args, **kwargs):
74
- # Measure performance
75
- start_time = __perf()
76
- f = func(*args, **kwargs)
77
- finished_time = __perf()
78
- elapsed = f"Time elapsed: {finished_time - start_time:,.6f} s"
79
-
80
- # Make header
81
- header_table = __Table.grid(expand=True)
82
- header_table.add_row(
83
- __Panel(
84
- __Align(f"[b]Function: {func.__name__}", align="center"),
85
- style="white on blue",
86
- ),
87
- )
88
-
89
- # Make footer
90
- footer_table = __Table.grid(expand=True)
91
- footer_table.add_row(
92
- __Panel(
93
- __Align("[b]END PROGRAM", align="center"),
94
- style="white on blue",
95
- ),
96
- )
97
-
98
- # Make output table
99
- out_table = __Table.grid(expand=True)
100
- out_table.add_column(ratio=2) # result
101
- out_table.add_column() # performance
102
- r_txt = __Text(
103
- str(f),
104
- overflow="fold",
105
- no_wrap=False,
106
- tab_size=2,
107
- )
108
- result_panel = __Panel(
109
- __Align(r_txt, align="center"),
110
- title="[bold]Result[/]",
111
- border_style="green",
112
- highlight=True,
113
- )
114
- performance_panel = __Panel(
115
- __Align(elapsed, align="center"),
116
- title="[bold]Performance[/]",
117
- border_style="red",
118
- highlight=True,
119
- height=result_panel.height,
120
- )
121
- out_table.add_row(
122
- result_panel,
123
- performance_panel,
124
- )
125
-
126
- # Make a blue line for no reason
127
- line = __Table.grid(expand=True)
128
- line.add_row(__Text(style="white on blue"))
129
-
130
- # Make layout
131
- header = {
132
- True: header_table,
133
- False: line,
134
- None: __Text(),
135
- } # header[header_visible]
136
- footer = {
137
- True: footer_table,
138
- False: line,
139
- None: __Text(),
140
- } # footer[footer_visible]
141
- layout = {
142
- 1: __Group(header[header_visible], out_table, footer[footer_visible]),
143
- 2: __Group(
144
- header[header_visible],
145
- result_panel,
146
- performance_panel,
147
- footer[footer_visible],
148
- ),
149
- 3: __Group(result_panel),
150
- }
151
- if layout_option in layout:
152
- return layout[layout_option]
153
- else:
154
- return layout[2]
155
- # return layout[3]
156
-
157
- return wrapper
158
-
159
- return decorator
160
-
161
-
162
- # rich's console.print wrapper
163
- if BEAUTIFUL_MODE:
164
- print = __Console().print
165
-
166
-
167
- # demo
168
- @beautiful_output()
169
- def __demo_decorator(x: any = None):
170
- code = """\
171
- # demo
172
- from absfuyu.extensions import beautiful as bu
173
- @bu.beautiful_output()
174
- def testcode():
175
- test = [x for x in range(100)]
176
- return test
177
- bu.print(testcode())"""
178
- if x is None:
179
- x = code
180
- return x
181
-
182
-
183
- def demo(x: any = None):
184
- print(__demo_decorator(x))
185
-
186
-
187
- if __name__ == "__main__":
188
- demo()
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())