Guest User

Untitled

a guest
Dec 22nd, 2021
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.88 KB | None | 0 0
  1. import argparse
  2. import regex as re
  3.  
  4. from bitstring import BitArray
  5.  
  6.  
  7. keys_len = 4
  8.  
  9. syms_encode = {
  10.     '0000': 'ПУК',
  11.     '0001': 'СРЕНЬК',
  12.     '0010': 'ХРЮК',
  13.     '0011': 'УИИИ',
  14.     '0100': 'ЛАХТА',
  15.     '0101': 'ЛИБЕРАХА',
  16.     '0110': 'ХОХЛЫ',
  17.     '0111': 'СВИНОСОБАКА',
  18.     '1000': 'ШВАЙНОКАРАСЬ',
  19.     '1001': 'ЛОЛ',
  20.     '1010': 'КЕК',
  21.     '1011': 'АБУ',
  22.     '1100': 'ДВАЧ',
  23.     '1101': 'ПАРАША',
  24.     '1110': 'ПОРИДЖ',
  25.     '1111': 'ХРЮЧЕВО'}
  26.  
  27. syms_decode = {v: k for k, v in syms_encode.items()}
  28.  
  29.  
  30. def decode(string):
  31.     return BitArray(''.join(['0b'] + [syms_decode[s]*int(c and c or 1) for (c, s) in re.findall(r'(\d*)(\w+)-?', string)])).bytes.decode()
  32.  
  33.  
  34. def encode(string):
  35.     def join(l):
  36.         result = [l[0]]
  37.         last = None
  38.  
  39.         for e in l[1:]:
  40.             if last == e:
  41.                 result[-1] += e
  42.             else:
  43.                 result.append(e)
  44.  
  45.             last = e
  46.  
  47.         return result
  48.  
  49.     return '-'.join([f'{len(g)//keys_len > 1 and len(g)//keys_len or ""}{syms_encode[g[:keys_len]]}' for g in join(re.findall(f'([01]{{{keys_len}}})', BitArray(string.encode()).bin))])
  50.  
  51.  
  52. if __name__ == '__main__':
  53.     parser = argparse.ArgumentParser(description='Encode and decode 2ch.hk fart code.')
  54.  
  55.     parser.add_argument('string', metavar='string', type=str,
  56.                         help='string for process')
  57.  
  58.     function = parser.add_mutually_exclusive_group(required=True)
  59.  
  60.     function.add_argument('-d', '--decode', dest='function', action='store_const',
  61.                           const=decode, help='decode string')
  62.  
  63.     function.add_argument('-e', '--encode', dest='function', action='store_const',
  64.                           const=encode, help='encode string')
  65.  
  66.     args = parser.parse_args()
  67.  
  68.     print(args.function(args.string))
  69.  
Add Comment
Please, Sign In to add comment