From 945ec2ba24ada4c1c78ee8da9102b8297788ae93 Mon Sep 17 00:00:00 2001 From: decoded Date: Mon, 29 Mar 2021 03:33:41 -0500 Subject: [PATCH] hybrid --- plugins/krylon.py | 235 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 230 insertions(+), 5 deletions(-) diff --git a/plugins/krylon.py b/plugins/krylon.py index bad9fa0..8d9d9fb 100644 --- a/plugins/krylon.py +++ b/plugins/krylon.py @@ -7,6 +7,8 @@ import ipdb from random import randint from re import compile from irc3 import rfc +import subprocess +#ipdb.set_trace() dir_path = os.path.dirname(os.path.realpath(__file__)) @@ -18,15 +20,242 @@ READY_BOTS = [] LOCK_KRYLON = 1 # 1 INTERRUPTED = 0 + +global FIRST_EXEC + +cp437 = { + 0:'\u0000',1:'\u263A',2:'\u263B',3:'\u2665',4:'\u2666',5:'\u2663',6:'\u2660',7:'\u2022', + 8:'\u25D8',9:'\u25CB',10:'\u25D9',11:'\u2642',12:'\u2640',13:'\u266A',14:'\u266B',15:'\u263C', + 16:'\u25BA',17:'\u25C4',18:'\u2195',19:'\u203C',20:'\u00B6',21:'\u00A7',22:'\u25AC',23:'\u21A8', + 24:'\u2191',25:'\u2193',26:'\u2192',27:'\u2190',28:'\u221F',29:'\u2194',30:'\u25B2',31:'\u25BC', + 32:'\u0020',33:'\u0021',34:'\u0022',35:'\u0023',36:'\u0024',37:'\u0025',38:'\u0026',39:'\u0027', + 40:'\u0028',41:'\u0029',42:'\u002A',43:'\u002B',44:'\u002C',45:'\u002D',46:'\u002E',47:'\u002F', + 48:'\u0030',49:'\u0031',50:'\u0032',51:'\u0033',52:'\u0034',53:'\u0035',54:'\u0036',55:'\u0037', + 56:'\u0038',57:'\u0039',58:'\u003A',59:'\u003B',60:'\u003C',61:'\u003D',62:'\u003E',63:'\u003F', + 64:'\u0040',65:'\u0041',66:'\u0042',67:'\u0043',68:'\u0044',69:'\u0045',70:'\u0046',71:'\u0047', + 72:'\u0048',73:'\u0049',74:'\u004A',75:'\u004B',76:'\u004C',77:'\u004D',78:'\u004E',79:'\u004F', + 80:'\u0050',81:'\u0051',82:'\u0052',83:'\u0053',84:'\u0054',85:'\u0055',86:'\u0056',87:'\u0057', + 88:'\u0058',89:'\u0059',90:'\u005A',91:'\u005B',92:'\u005C',93:'\u005D',94:'\u005E',95:'\u005F', + 96:'\u0060',97:'\u0061',98:'\u0062',99:'\u0063',100:'\u0064',101:'\u0065',102:'\u0066',103:'\u0067', + 104:'\u0068',105:'\u0069',106:'\u006A',107:'\u006B',108:'\u006C',109:'\u006D',110:'\u006E',111:'\u006F', + 112:'\u0070',113:'\u0071',114:'\u0072',115:'\u0073',116:'\u0074',117:'\u0075',118:'\u0076',119:'\u0077', + 120:'\u0078',121:'\u0079',122:'\u007A',123:'\u007B',124:'\u007C',125:'\u007D',126:'\u007E',127:'\u2302', + 128:'\u00C7',129:'\u00FC',130:'\u00E9',131:'\u00E2',132:'\u00E4',133:'\u00E0',134:'\u00E5',135:'\u00E7', + 136:'\u00EA',137:'\u00EB',138:'\u00E8',139:'\u00EF',140:'\u00EE',141:'\u00EC',142:'\u00C4',143:'\u00C5', + 144:'\u00C9',145:'\u00E6',146:'\u00C6',147:'\u00F4',148:'\u00F6',149:'\u00F2',150:'\u00FB',151:'\u00F9', + 152:'\u00FF',153:'\u00D6',154:'\u00DC',155:'\u00A2',156:'\u00A3',157:'\u00A5',158:'\u20A7',159:'\u0192', + 160:'\u00E1',161:'\u00ED',162:'\u00F3',163:'\u00FA',164:'\u00F1',165:'\u00D1',166:'\u00AA',167:'\u00BA', + 168:'\u00BF',169:'\u2310',170:'\u00AC',171:'\u00BD',172:'\u00BC',173:'\u00A1',174:'\u00AB',175:'\u00BB', + 176:'\u2591',177:'\u2592',178:'\u2593',179:'\u2502',180:'\u2524',181:'\u2561',182:'\u2562',183:'\u2556', + 184:'\u2555',185:'\u2563',186:'\u2551',187:'\u2557',188:'\u255D',189:'\u255C',190:'\u255B',191:'\u2510', + 192:'\u2514',193:'\u2534',194:'\u252C',195:'\u251C',196:'\u2500',197:'\u253C',198:'\u255E',199:'\u255F', + 200:'\u255A',201:'\u2554',202:'\u2569',203:'\u2566',204:'\u2560',205:'\u2550',206:'\u256C',207:'\u2567', + 208:'\u2568',209:'\u2564',210:'\u2565',211:'\u2559',212:'\u2558',213:'\u2552',214:'\u2553',215:'\u256B', + 216:'\u256A',217:'\u2518',218:'\u250C',219:'\u2588',220:'\u2584',221:'\u258C',222:'\u2590',223:'\u2580', + 224:'\u03B1',225:'\u00DF',226:'\u0393',227:'\u03C0',228:'\u03A3',229:'\u03C3',230:'\u00B5',231:'\u03C4', + 232:'\u03A6',233:'\u0398',234:'\u03A9',235:'\u03B4',236:'\u221E',237:'\u03C6',238:'\u03B5',239:'\u2229', + 240:'\u2261',241:'\u00B1',242:'\u2265',243:'\u2264',244:'\u2320',245:'\u2321',246:'\u00F7',247:'\u2248', + 248:'\u00B0',249:'\u2219',250:'\u00B7',251:'\u221A',252:'\u207F',253:'\u00B2',254:'\u25A0',255:'\u00A0', +} + +class D(): + def __init__(self): + self.MODE_BOLD=0 + return + def c(self,n): + n = int(n) + cc = { + 99:'\x03', + 1:'\x02', #bold + 3:'\x1d', #italics + 4:'\x1f', #underline + 9:'\x1e', #strikethrough + 0:'\x01', + 40:'1', + + 30:'14', + 31:'04', + 32:'09', + 33:'08', + 34:'12', + 35:'13', + 36:'11', + 37:'15', + 41:'04', + 42:'09', + 43:'08', + 44:'12', + 45:'13', + 46:'11', + 47:'15' + } + + cb = { + 99:'\x03', + 1:'\x02', #bold + 3:'\x1d', #italics + 4:'\x1f', #underline + 9:'\x1e', #strikethrough + 0:'\x01', + 40:'1', + + 30:'14', + 31:'28', + 32:'09', + 33:'54', + 34:'72', + 35:'13', + 36:'11', + 37:'15', + 41:'04', + 42:'09', + 43:'08', + 44:'12', + 45:'13', + 46:'11', + 47:'15' + } + + #ipdb.set_trace() + if self.MODE_BOLD==1: + if n >= 30 and n <= 47: + return int(cc[n]) + else: + return cb[n] + else: + return cb[n] + class KRYLON(): def __init__(self,bot,channel): + + self.KRYLON_FILE = [] self.bot = bot self.channel = channel - self.KRYLON_FILE = ['a'*40,'b'*40,'c'*40,'d'*40,'e'*40,'f'*40,'g'*40,'h'*40,'1'*40,'2'*40,'3'*40,'4'*40,'5'*40,'6'*40,'7'*40,'8'*40] + #self.KRYLON_FILE = ['a'*40,'b'*40,'c'*40,'d'*40,'e'*40,'f'*40,'g'*40,'h'*40,'1'*40,'2'*40,'3'*40,'4'*40,'5'*40,'6'*40,'7'*40,'8'*40] + #ipdb.set_trace() self.__run__() + def q(self,s): + #f = open('/home/dr1p/.weechat/weechat_fifo','w') + #f.write('*{}\x0a'.format(s)) + #f.close() + #f = open('/home/dr1p/Documents/code/python/krylon/test.txt','a') + #f.write('*{}\x0a'.format(s)) + #f.close() + self.KRYLON_FILE.append(s) + + def w(self,s,index): + d=D() + s = s.replace('\x1b','') + ss = s + codes=[] + ogcodes=[] + newcodes=[] + while True: + sa = ss.find('[') + sb = ss.find('m') + if sa == -1 and sb == -1: + break + x = ss[sa:sb+1] + ogcodes.append(x) + codes.append(x.replace('m','').replace('[','').split(';')) + ss=ss[sb+1:] + count = len(codes[-1]) + if count == 1: + ca = codes[-1][0] + if ca == '1' or ca == '3' or ca == '4' or ca == '9': + if ca == '1': + code = "{}".format(d.c(99)) + else: + code = "{}".format(d.c(ca)) + elif ca == '0': + code = "{}".format(d.c(1)) + elif ca == '31': + # d.MODE_BOLD=0 + code = "{}{}".format(d.c(99),d.c(31)) + else: + try: + code = "{}{}".format(d.c(99),d.c(ca)) + #code = "{},{}".format(c[99],c[int(ca)]) + except: + if ca == '7C1': + codes[-1]=1 + + newcodes.append(code) + elif count == 2: + ca = codes[-1][0] + cb = codes[-1][1] + # ipdb.set_trace() + if ca == '0': + d.MODE_BOLD=0 + code = "{}{}".format(d.c(99),d.c(cb)) + elif ca == '1': + d.MODE_BOLD=1 + code = "{}{}".format(d.c(99),d.c(cb)) + else: + code = "{}{}{}{}".format(d.c(99),d.c(ca),d.c(99),d.c(cb)) + + newcodes.append(code) + elif count == 3: + ca = codes[-1][0] + cb = codes[-1][1] + cc = codes[-1][1] + if ca == '0': + code = "{}{},{}".format(d.c(99),d.c(cb),d.c(cc)) + elif ca == '1': + d.MODE_BOLD=1 + code = "{}{}{}{}".format(d.c(99),d.c(cb),d.c(99),d.c(cc)) + newcodes.append(code) + + elif count == 4: + ca = codes[-1][0] + cb = codes[-1][1] + cc = codes[-1][2] + cd = codes[-1][3] + code = "{}{}{},{}".format(d.c(1),d.c(99),d.c(cd),d.c(cc)) + newcodes.append(code) + + buffer = s + for i,_ in enumerate(ogcodes): + z = buffer.find(_) + if z == 0: + b=buffer[len(_):] + a=newcodes[i] + buffer = "{}{}".format(a,b) + else: + try: + a=buffer[:buffer.find(_)] + b=newcodes[i] + c=buffer[buffer.find(_)+len(ogcodes[i]):] + buffer = "{}{}{}".format(a,b,c) + except: + print('hi') + ipdb.set_trace() + print('hi') + print('hi') + self.q(buffer) + + + def __run__(self): + + try: + if int(FIRST_EXEC) == 0: + print('yolo') + except: + #ipdb.set_trace() + FIRST_EXEC = 1 + self.__f = open('/home/dr1p/Documents/code/python/krylon/acid.txt','r') + self.__l = self.__f.read().splitlines() + self.__f.close() + + for i,_ in enumerate(self.__l): + if _.find('\x1aSAUCE') == -1: + self.w(_,i) + else: + pass + self.KRYLON_FILE.reverse() self.FILE_BUFFER=[] for _ in self.KRYLON_FILE: @@ -148,10 +377,6 @@ class Plugin(object): INTERRUPTED = 0 PTR._ST8 = 3 - - - - @irc3.event(irc3.rfc.JOIN) def welcome(self, mask, channel, **kw):