zombie - annna - Annna the nice friendly bot.
HTML git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
DIR Log
DIR Files
DIR Refs
DIR Tags
DIR README
---
zombie (2538B)
---
1 #!/usr/bin/env python
2 # coding=utf-8
3 #
4 # Copy me if you can.
5 # by 20h
6 #
7 # Idea from: https://github.com/DanPlayz0/Chucky/blob/main/assets/zombie-translator/characters.js
8
9 import os
10 import sys
11 import getopt
12
13 zombiemapping = {
14 "Ar": "a",
15 "AA": "b",
16 "Ab": "c",
17 "RA": "d",
18 "bb": "e",
19 "BA": "f",
20 "ll": "g",
21 "bG": "h",
22 "Gn": "i",
23 "GA": "j",
24 "GG": "k",
25 "nh": "l",
26 "hh": "m",
27 "MM": "n",
28 "hr": "o",
29 "hA": "p",
30 "hb": "q",
31 "rr": "r",
32 "hG": "s",
33 "Gg": "t",
34 "GM": "u",
35 "nr": "v",
36 "Mr": "w",
37 "Gl": "x",
38 "nn": "y",
39 "KA": "z",
40 "aR": "A",
41 "aa": "B",
42 "aB": "C",
43 "rA": "D",
44 "BB": "E",
45 "ba": "F",
46 "LL": "G",
47 "Bg": "H",
48 "gN": "I",
49 "ga": "J",
50 "gg": "K",
51 "NH": "L",
52 "HH": "M",
53 "mm": "N",
54 "HR": "O",
55 "Ha": "P",
56 "HB": "Q",
57 "RR": "R",
58 "Hq": "S",
59 "gG": "T",
60 "gm": "U",
61 "NR": "V",
62 "mR": "W",
63 "gL": "X",
64 "NN": "Y",
65 "ka": "Z"
66 }
67
68 humanmapping = {
69 "a": "Ar",
70 "b": "AA",
71 "c": "Ab",
72 "d": "RA",
73 "e": "bb",
74 "f": "BA",
75 "g": "ll",
76 "h": "bG",
77 "i": "Gn",
78 "j": "GA",
79 "k": "GG",
80 "l": "nh",
81 "m": "hh",
82 "n": "MM",
83 "o": "hr",
84 "p": "hA",
85 "q": "hb",
86 "r": "rr",
87 "s": "hG",
88 "t": "Gg",
89 "u": "GM",
90 "v": "nr",
91 "w": "Mr",
92 "x": "Gl",
93 "y": "nn",
94 "z": "KA",
95 "A": "aR",
96 "B": "aa",
97 "C": "aB",
98 "D": "ra",
99 "E": "BB",
100 "F": "ba",
101 "G": "LL",
102 "H": "Bg",
103 "I": "gN",
104 "J": "ga",
105 "K": "gg",
106 "L": "NH",
107 "M": "HH",
108 "N": "mm",
109 "O": "HR",
110 "P": "Ha",
111 "Q": "HB",
112 "R": "RR",
113 "S": "Hg",
114 "T": "gG",
115 "U": "gm",
116 "V": "NR",
117 "W": "mR",
118 "X": "gL",
119 "Y": "NN",
120 "Z": "ka"
121 }
122
123 def human2zombie(s):
124 r = ""
125 for c in s:
126 try:
127 r += humanmapping[c]
128 except KeyError:
129 r += c
130 return r
131
132 def zombie2human(s):
133 r = ""
134 while 1:
135 c = s[:2]
136 s = s[2:]
137 try:
138 r += zombiemapping[c]
139 except KeyError:
140 r += c
141 if len(s) == 0:
142 break
143 return r
144
145 def usage(app):
146 app = os.path.basename(app)
147 print("usage: %s [-h] [-e|-d]" % (app), file=sys.stderr)
148 sys.exit(1)
149
150 def main(args):
151 try:
152 opts, largs = getopt.getopt(args[1:], "hed")
153 except getopt.GetoptError as err:
154 print(str(err))
155 usage(args[0])
156
157 dodecode=0
158 doencode=0
159
160 for o, a in opts:
161 if o == "-h":
162 usage(args[0])
163 elif o == "-d":
164 dodecode=1
165 elif o == "-e":
166 doencode=1
167 else:
168 assert False, "unhandled option"
169
170 ins = sys.stdin.read()
171 rs = None
172 words = ins.split(" ")
173 if doencode:
174 rs = " ".join([human2zombie(w) for w in words])
175 if dodecode:
176 rs = " ".join([zombie2human(w) for w in words])
177 if rs != None:
178 print("%s" % (rs), end='')
179 else:
180 usage(args[0])
181
182 return 0
183
184 if __name__ == "__main__":
185 sys.exit(main(sys.argv))
186