Quiero manejar caracteres ansi de python pty con xtermjs. Como sé, no hay mejor analizador ansi que xtermjs, xtermjs puede manejar programas interactivos como nano y htop pero otros no. entonces, ¿cómo puedo analizar y manejar caracteres ansi con xtermjs en python?
Actualmente tengo una solución hacky pero es lenta y necesita ejecutar java script:
Hago un HTML (contiene código de xtermjs) con python, algo como esto:
const term = new Terminal({ convertEol:true, }); term.open(document.getElementById("terminal")); term.write(`[?2004h[?1049h[22;0;0t[1;24r(B[m[4l[?7h[39;49m[?1h=[?1h=[?25l[39;49m(B[m[H[2J[22;35H(B[0;7m[ New File ](B[m[H(B[0;7m GNU nano 4.8 a1.txt [1;79H(B[m [23d(B[0;7m^G(B[m Get Help (B[0;7m^O(B[m Write Out (B[0;7m^W(B[m Where Is (B[0;7m^K(B[m Cut Text (B[0;7m^J(B[m Justify (B[0;7m^C(B[m Cur Pos [24d(B[0;7m^X(B[m Exit[14G(B[0;7m^R(B[m Read File (B[0;7m^\(B[m Replace (B[0;7m^U(B[m Paste Text(B[0;7m^T(B[m To Spell (B[0;7m^_(B[m Go To Line [22d[2d[39;49m(B[m[?12l[?25h`) term.selectAll() parsed = term.getSelection() console.debug(parsed) Luego, en Python, ejecuto este archivo y capturo los registros de la consola con selenio. De esta manera, puedo obtener una salida bonita de esa fea cadena pasada a term.write()
PD: no puedo usar el socket para comunicarme. Agradezco una solución mejor y más rápida.