script Posts

Actualización mget

Debido al rediseño de megaupload mget ha dejado de funcionar, el problema se debe específicamente a que el link de descarga ya no se identifica con el id downloadlink sino con la clase download_regular_usual, ademas el tiempo de espera ahora es de 60 segundos.

Por el momento no tengo como arreglar la versión para windows pero la de linux ya esta lista, solo hay que reemplazar el archivo antiguo y dar permisos de ejecución.

Beta 2 de canvas-event disponible

Ya esta disponible la beta 2 de canvas-event, esta revisión cuenta con algunas mejoras y corrección de errores como:

  1. Posibilidad de adicionar una función a varios eventos simultáneamente
  2. Las figuras dibujadas dentro de un manejador de eventos ahora si se visualizan
  3. Los Objetos Line ahora también pueden ser arrastrados
  4. Los bordes redondeados ahora también funcionan en Opera
Espero que les sea tan útil como lo ha sido para mi.

script: descarga automática de Megaupload

Aprovechando que estoy aprendiendo a programar en bash y que megaupload ahora no requiere llenar ningún captcha para realizar las descargas, decidí rescribir el anterior script (escrito en python) y agregarle nuevas características.

Ahora es posible indicar una URL (con la opcion -c) y el script extrae los links de Megaupload que encuentre, me parece una funcionalidad muy conveniente ya que con el anterior script era necesario copiar a mano todos los links a un archivo de texto, lo cual puede ser muy tedioso.

Otra funcionalidad es la de usar la dirección ip de los servidores para realizar las descargas, esto ayuda a saltarse algunos proxies que están configurados para bloquear paginas por nombres de dominio en lugar de direcciones ip XD.

El script ha sido probado con Ubuntu 10.10 que es el OS que uso actualmente, pero no creo que tengan problemas usándolo en otra distro, siempre y cuando tenga instalado wget que es el programa que usa para realizar las descargas.

Pueden descargarlo del siguiente enlace:

Luego le damos permisos de ejecución y lo copian en el directorio bin:

novatoz@sney2002:~$ chmod +x mget
novatoz@sney2002:~$ sudo cp mget /bin/

Espero les sea de utilidad, y si tienen alguna inquietud o sugerencia no duden en dejarla en los comentarios.

update: corregido error que impedía descargar archivos cuyos nombres contuvieran  caracteres no ascii, los cuales están codificados usando html entities, ejemplo:

# este link no apunta a ningún archivo
http://www465.megaupload.com/files/f4f4ab2163558f1f/Capacitación.mp4
# el link es valido al cambiar ó por ó
http://www465.megaupload.com/files/f4f4ab2163558f1f/Capacitación.mp4

ahora es necesario tener instalado w3m

script bash para dividir archivos

Si usas linux y quieres dividir un archivo grande para luego unirlo en otra maquina usando cat o hjsplit este script puede servirte; para dividir el archivo podemos usar el comando split, pero hjsplit espera que los archivos estén numerados desde el 001 y split genera archivos empezando desde el 000.

solucion?, dividir el archivo y luego renombrar las partes generadas.

1. para saber cuantos archivos se generan, podemos dividir el archivo y ver en cuantas partes se divide usando la opcion verbose y wc:

parts=`split -d -b 50M -a 3 --verbose archivo-entrada archivo-salida | wc -l`

2. conociendo cuantos archivos se crearon, podemos renombrar los archivos empesando desde al ultimo:

while [ $parts -gt 0 ]; do
# sufijo del archivo
old_suf=`printf "%03d" "$(($parts-1))`
# sufijo nuevo
new_suf=`printf "%03d" "$parts"`
#renombramos archivo
mv "$1.$old_suf" "$1.$new_suf"
# disminuimos $parts
parts=$((parts-1))
done

el script completo lo pueden descargar desde el siguiente enlacce:

Solo tienen que dejarlo en la carpeta de nautilus-scripts (~/.gnome2/nautilus-scripts), darle permisos de ejecución y listo 🙂

P.D: este es el segundo script en bash de mas de 3 lineas que hago, así que si encuentran algún error me avisan para ir mejorando u_u

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.