chorradas Posts

Revertir guardado en Wingdings

El otro día me encontraba aburrido a mas no poder, cuando de pronto me llaman a hacerme la siguiente pregunta: Imaginen que tienen un documento y no quiere que nadie mas se entere de lo que contiene, nada mejor que guardar dicho documento con el tipo de letra Wingdings, el problema es revertir el proceso, aunque no lo crean es algo mas común de lo que párese, la única solución es ir reemplazando cada signo por el caracter original, un proceso algo tedioso si se decide hacer a mano, así que porque no crear un script (en python) que automatice el proceso.

Para empezar tenemos que saber la correspondencia entre caracteres y signos, así que procedemos a abrir word e introducir los caracteres mas utilizados (letras mayúsculas y minúsculas, números, signos de puntuación, espacio) en una tipo de letra normal, con estos creamos una variable que llamaremos decode en nuestro código fuente, luego nuevamente en word cambiamos el tipo de letra por Wingdings y creamos otra variable que llamaremos encode, estas variables tienen que ser string unicode ya que los símbolos usados por la letra Wingdings son de lo mas raros; luego es cuestión de en un bucle ir reemplazando las coincidencias del caracter de encode en la posicion i con el carracter de decode en la misma posición. El script completo seria algo así:

#!/usr/bin/python
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# Por: Jhonatan sneyder Salguero Villa (sney2002@gmail.com)

import codecs
from os.path import split, splitext

def translate(path=""):
"""" Convertir texto en Wingdings a caracteres normales ""

text2decode = codecs.open(path, 'r', 'utf-8').read()

decode = u"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!”?¿¡.,;():/*-+=&%$# @"
encode = u"”¿¡"

for i in range( len(decode) ):
text2decode = text2decode.replace( encode[i], decode[i] )

filename = splitext( split( path )[1] )[0]

file = codecs.open('resultado_%s.txt' % filename, 'wb', 'utf-8')

file.write( text2decode )

file.close()

if __name__ == "__main__":
import sys

try:
file = sys.argv[1]
translate( file )
except:
print "uso: translate /ruta/archivo"

Ahora solo hay que copiar en un editor de texto plano lo que desean convertir, guardarlo y ejecutar el script dándole la ruta al archivo. Si alguien se pregunta por que no utilice el método translate de string, la razón es que la función maketrans no acepta caracteres unicode.

El script tiene algunos defectos como el no manejar excepciones en caso que el archivo en path no exista, solo funciona con este tipo de letra y en cada iteración crear un nuevo string. Como siempre todas las criticas son bienvenidas.

Si no tienen instalado el interprete python, pueden usar este “codificador/decodificador” Wingdings XDDD, esta escrito en javascript así que si usan demasiado texto puede bloquearse.

I’m back

Hola a todos (otra vez hablando solo!), pues de nuevo me dio por escribir, como deben saber los que me conocen, esto de la escritura no me va muy bien, pero espero poder mantener un ritmo constante como si ha alguien le importara y contarles todos los acontecimientos, proyectos y otras chorradas que se me ocurran. pues eso, y para empezar, decir que en estos momentos, me encuentro en el limbo en lo que al estudio se refiere, ya que al parecer no hay recursos para continuar con el convenio con la universidad en la que estudio, y al parecer a algunos compañeros esto les vale huevo y no piensan hacer nada, esto no quiere decir que me haya quedado rascándome el ombligo, últimamente he estado experimentado un poco con el elemento Canvas, intentando crear un framework que permita hacer animaciones y dibujos de manera sencilla, al estilo de jQuery, y la cosa va mas o menos bien, aunque el código, a mi parecer es un desastre, ya que esta poco documentado y hay algunas funcionalidades un poco rebuscadas (cosas de hacer todo al paso), pero bueno, como experiencia de aprendizaje esta bien; otra cosa que me ha rondado en la mente es todo eso de la IA (inteligencia artificial que le llaman) y pues para estar aprendiendo solo, me ha ido bien, en especial al no haber encontrado mucho material en español de donde agarrar, y mi ingles es m…. bueno digamos que regular.

Bueno creo que eso es todo, espero poder cumplir la promesa que me he hecho a mi mismo de mantener este blog actualizado y no es que a alguien le importe, pero tal vez, solo tal vez alguien me llegue a leer y hasta le parezca interesante algo de lo que escriba (soñar no cuesta nada). Pues eso es todo, adiós y que vuelvan por aquí.