Add ghost support to annna. - annna - Annna the nice friendly bot.
(HTM) git clone git://bitreich.org/annna/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/annna/
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
---
(DIR) commit 4b4fe8d6ccb2428b60fe492d06065f126c97bc8c
(DIR) parent 708589d9a8cd100e0145e0a69a6a7f1f99b4b82f
(HTM) Author: Annna Robert-Houdin <annna@bitreich.org>
Date: Thu, 31 Oct 2024 19:46:22 +0100
Add ghost support to annna.
Diffstat:
M annna-message-common | 16 +++++++++++++---
A ghost | 84 +++++++++++++++++++++++++++++++
2 files changed, 97 insertions(+), 3 deletions(-)
---
(DIR) diff --git a/annna-message-common b/annna-message-common
@@ -624,14 +624,24 @@ case "${text}" in
suri="$(printf "%s\n" "${word}" | bitreich-speak)"
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}, 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)"
+"${ircuser}, please ghost say "*)
+ word="$(printf "%s\n" "${text}" | cut -c 25- | sed 's,\t, ,g')"
+ suri="$(printf "%s\n" "${word}" | ghost -e | bitreich-speak)"
+ annna-say -s "${server}" -c "${channel}" "${suri}"
+ ;;
+"${ircuser}, please ghost "*)
+ word="$(printf "%s\n" "${text}" | cut -c 21- | sed 's,\t, ,g')"
+ suri="$(printf "%s\n" "${word}" | ghost -e)"
annna-say -s "${server}" -c "${channel}" "${suri}"
;;
"${ircuser}, what can I cook with "*)
(DIR) diff --git a/ghost b/ghost
@@ -0,0 +1,84 @@
+#!/usr/bin/env python
+# coding=utf-8
+#
+# Copy me if you can.
+# by 20h
+#
+# Idea from: https://github.com/xdpirate/ghost-translator/blob/main/ghost-translator.py
+
+import os
+import sys
+import getopt
+
+def human2ghost(s):
+ r = ""
+ for c in s:
+ binc = bin(ord(c)^96)[2:]
+ for j in binc:
+ if j == "1":
+ r += "O"
+ else:
+ r += "o"
+ r += " "
+ return r
+
+def ghost2human(s):
+ r = ""
+ if len(s) == 0:
+ return r
+
+ for c in s.split(" "):
+ if len(c) == 0:
+ continue
+ b = ""
+ for j in c:
+ if j == "O":
+ b += "1"
+ elif j == "o":
+ b += "0"
+ r += str(chr(int(b, 2)^96))
+ 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
+ if doencode:
+ words = ins.split(" ")
+ rs = " ".join([human2ghost(w) for w in words])
+ if dodecode:
+ words = ins.split(" ")
+ rs = " ".join([ghost2human(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))
+