Add zombie language to annna. - 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 --- DIR commit 708589d9a8cd100e0145e0a69a6a7f1f99b4b82f DIR parent 31edfad8e895852b55f40f26e64868c9cd4dd9d3 HTML Author: Annna Robert-Houdin <annna@bitreich.org> Date: Thu, 31 Oct 2024 19:31:04 +0100 Add zombie language to annna. Diffstat: M annna-message-common | 10 ++++++++++ A zombie | 186 +++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+), 0 deletions(-) --- DIR diff --git a/annna-message-common b/annna-message-common @@ -624,6 +624,16 @@ case "${text}" in suri="$(printf "%s\n" "${word}" | bitreich-speak)" annna-say -s "${server}" -c "${channel}" "${suri}" ;; +"${ircuser}, please zombie "*) + word="$(printf "%s\n" "${text}" | cut -c 22- | sed 's,\t, ,g')" + suri="$(printf "%s\n" "${word}" | zombie -e)" + annna-say -s "${server}" -c "${channel}" "${suri}" + ;; +"${ircuser}, please zombie say "*) + word="$(printf "%s\n" "${text}" | cut -c 26- | sed 's,\t, ,g')" + suri="$(printf "%s\n" "${word}" | zombie -e | bitreich-speak)" + annna-say -s "${server}" -c "${channel}" "${suri}" + ;; "${ircuser}, what can I cook with "*) ingredients="$(printf "%s\n" "${text}" | cut -c 29- | sed 's,\t, ,g')" case "$ingredients" in DIR diff --git a/zombie b/zombie @@ -0,0 +1,186 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# Copy me if you can. +# by 20h +# +# Idea from: https://github.com/DanPlayz0/Chucky/blob/main/assets/zombie-translator/characters.js + +import os +import sys +import getopt + +zombiemapping = { + "Ar": "a", + "AA": "b", + "Ab": "c", + "RA": "d", + "bb": "e", + "BA": "f", + "ll": "g", + "bG": "h", + "Gn": "i", + "GA": "j", + "GG": "k", + "nh": "l", + "hh": "m", + "MM": "n", + "hr": "o", + "hA": "p", + "hb": "q", + "rr": "r", + "hG": "s", + "Gg": "t", + "GM": "u", + "nr": "v", + "Mr": "w", + "Gl": "x", + "nn": "y", + "KA": "z", + "aR": "A", + "aa": "B", + "aB": "C", + "rA": "D", + "BB": "E", + "ba": "F", + "LL": "G", + "Bg": "H", + "gN": "I", + "ga": "J", + "gg": "K", + "NH": "L", + "HH": "M", + "mm": "N", + "HR": "O", + "Ha": "P", + "HB": "Q", + "RR": "R", + "Hq": "S", + "gG": "T", + "gm": "U", + "NR": "V", + "mR": "W", + "gL": "X", + "NN": "Y", + "ka": "Z" +} + +humanmapping = { + "a": "Ar", + "b": "AA", + "c": "Ab", + "d": "RA", + "e": "bb", + "f": "BA", + "g": "ll", + "h": "bG", + "i": "Gn", + "j": "GA", + "k": "GG", + "l": "nh", + "m": "hh", + "n": "MM", + "o": "hr", + "p": "hA", + "q": "hb", + "r": "rr", + "s": "hG", + "t": "Gg", + "u": "GM", + "v": "nr", + "w": "Mr", + "x": "Gl", + "y": "nn", + "z": "KA", + "A": "aR", + "B": "aa", + "C": "aB", + "D": "ra", + "E": "BB", + "F": "ba", + "G": "LL", + "H": "Bg", + "I": "gN", + "J": "ga", + "K": "gg", + "L": "NH", + "M": "HH", + "N": "mm", + "O": "HR", + "P": "Ha", + "Q": "HB", + "R": "RR", + "S": "Hg", + "T": "gG", + "U": "gm", + "V": "NR", + "W": "mR", + "X": "gL", + "Y": "NN", + "Z": "ka" +} + +def human2zombie(s): + r = "" + for c in s: + try: + r += humanmapping[c] + except KeyError: + r += c + return r + +def zombie2human(s): + r = "" + while 1: + c = s[:2] + s = s[2:] + try: + r += zombiemapping[c] + except KeyError: + r += c + if len(s) == 0: + break + return r + +def usage(app): + app = os.path.basename(app) + print("usage: %s [-h] [-e|-d]" % (app), file=sys.stderr) + sys.exit(1) + +def main(args): + try: + opts, largs = getopt.getopt(args[1:], "hed") + except getopt.GetoptError as err: + print(str(err)) + usage(args[0]) + + dodecode=0 + doencode=0 + + for o, a in opts: + if o == "-h": + usage(args[0]) + elif o == "-d": + dodecode=1 + elif o == "-e": + doencode=1 + else: + assert False, "unhandled option" + + ins = sys.stdin.read() + rs = None + words = ins.split(" ") + if doencode: + rs = " ".join([human2zombie(w) for w in words]) + if dodecode: + rs = " ".join([zombie2human(w) for w in words]) + if rs != None: + print("%s" % (rs), end='') + else: + usage(args[0]) + + return 0 + +if __name__ == "__main__": + sys.exit(main(sys.argv)) +