URI: 
       ghost - 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
       ---
       ghost (1385B)
       ---
            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/xdpirate/ghost-translator/blob/main/ghost-translator.py
            8 
            9 import os
           10 import sys
           11 import getopt
           12 
           13 def human2ghost(s):
           14         r = ""
           15         for c in s:
           16                 binc = bin(ord(c)^96)[2:]
           17                 for j in binc:
           18                         if j == "1":
           19                                 r += "O"
           20                         else:
           21                                 r += "o"
           22                 r += " "
           23         return r 
           24 
           25 def ghost2human(s):
           26         r = ""
           27         if len(s) == 0:
           28                 return r
           29 
           30         for c in s.split(" "):
           31                 if len(c) == 0:
           32                         continue
           33                 b = ""
           34                 for j in c:
           35                         if j == "O":
           36                                 b += "1"
           37                         elif j == "o":
           38                                 b += "0"
           39                 r += str(chr(int(b, 2)^96))
           40         return r 
           41 
           42 def usage(app):
           43         app = os.path.basename(app)
           44         print("usage: %s [-h] [-e|-d]" % (app), file=sys.stderr)
           45         sys.exit(1)
           46 
           47 def main(args):
           48         try:
           49                 opts, largs = getopt.getopt(args[1:], "hed")
           50         except getopt.GetoptError as err:
           51                 print(str(err))
           52                 usage(args[0])
           53 
           54         dodecode=0
           55         doencode=0
           56 
           57         for o, a in opts:
           58                 if o == "-h":
           59                         usage(args[0])
           60                 elif o == "-d":
           61                         dodecode=1
           62                 elif o == "-e":
           63                         doencode=1
           64                 else:
           65                         assert False, "unhandled option"
           66 
           67         ins = sys.stdin.read()
           68         rs = None
           69         if doencode:
           70                 words = ins.split(" ")
           71                 rs = " ".join([human2ghost(w) for w in words])
           72         if dodecode:
           73                 words = ins.split("  ")
           74                 rs = " ".join([ghost2human(w) for w in words])
           75         if rs != None:
           76                 print("%s" % (rs), end='')
           77         else:
           78                 usage(args[0])
           79         
           80         return 0
           81 
           82 if __name__ == "__main__":
           83         sys.exit(main(sys.argv))
           84