Mejorando Windows Con Python Parte 1

Algunos de nosotros a pesar de ser linuxeros de corazón no tenemos más opción que utilizar windows, ya sea por que requerimos usar un programa que solo funciona en windows o por cuestiones de trabajo o [ponga aquí su razón] y consecuentemente tener que aguantar su falta de funcionalidad… a menos claro de que hagamos algo para cambiar eso 😛

Por eso, el día de hoy, veremos como mejorar la experiencia en windows haciendo uso de algo que usamos comúnmente en linux, los scripts, windows tiene la posibilidad de usar scripts de forma nativa, los famosos archivos de procesamiento por lotes (archivos bat), pero seamos sinceros, su funcionalidad es muy limitada, en especial si la comparamos con linux, pero no teman ni se depriman, hay una solución muy sencilla a esto y se llama Python.

Python como seguramente muchos sabrán es:

… un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible.

Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y es multiplataforma.

Es decir, es un lenguaje de programación muy bonito que nos ayudara a hacer scripts realmente funcionales 😀

Bueno, vayamos al grano, empezaremos por instalar python, para ello vayan a http://www.python.org/ e instalenlo (seguro muchos ya lo habrán hecho y es básicamente darle a todo siguiente así que omitiré los pasos :P) una vez que lo tengan instalado empezaremos por crear nuestro primer script.

Como esta es la primera parte de una pequeña serie empezaremos por hacer algo muy sencillo que lo único que hará será proporcionarnos información sobre un archivo, para ello abran el bloc de notas o algún editor de textos que les guste (les recomiendo Notepad++ :P) o si así lo prefieren un IDE (la verdad yo prefiero los editores sencillitos :P) y ahí escriban lo siguiente:

import sys
import os.path
import time

if len(sys.argv)>1:
   for archivo in sys.argv[1:]:
       if os.path.exists(archivo):
          #ruta completa del archivo
          print "* Path " + os.path.abspath(archivo)
          #tamaño del archivo en bytes
          print "* Size " + str(os.path.getsize(archivo)) + " bytes"
          #obtenemos la fecha de ultima modificación
          print "* Last Modification " + time.strftime("%c",
                 time.localtime(os.path.os.path.getmtime(archivo)))
   raw_input("Presiona Enter Para Terminar")

Salvenlo con el nombre que quieran y extensión .py (por ejemplo fileInfo.py). Muy bien, ya que tenemos listo eso ahora viene la parte interesante (mas no por ello difícil) del asunto.

(NOTA.- Los siguientes pasos son para Windows XP pues es el que uso, si requieres hacer lo mismo en windows vista o 7 puedes checar ¿Dónde está mi SendTo y mi menú de inicio? y Modificar Personalizar y añadir opciones al Menú Enviar A Windows 7 respectivamente)

Crearemos una nueva opción en el menú “Enviar a” de windows, para ello abriremos un explorador de archivos y nos desplazaremos hasta:

C:\Documents and Settings\*USUARIO*\SendTo

Ahí crearemos un acceso directo hacia nuestro script de python, tiene que verse como esto:

Ahora cuando demos clic derecho sobre un archivo podemos ir al menú “Enviar A…” y seleccionar nuestra opción nueva (ej. fileInfo.py).

Cuando lo hagamos debe salirnos una ventana parecida a esta

Listo, con esto hemos creado nuestro un script en python al cual hemos accesado  desde la interfaz de windows mejorando así la integración de ambos (muy al estilo nautilus script :P), ciertamente este es un script sin una utilidad real pero si usamos un poco nuestra creatividad podremos crear scripts más y más útiles como lo veremos en futuras entregas, estén atentos 😉

Subiendo archivos a Dropbox desde consola con DropboxUploader

Hace ya tiempo que soy un fiel usuario de Dropbox y hace unos días me encontraba leyendo sobre un script de python que nos permite subir archivos a este servicio así que me decidí a descargarlo y probarlo, después de un rato de pruebas llegue a la conclusión de que si bien el script cumple perfectamente con su cometido con unos cuantos retoques su funcionamiento podía mejorar, así pues me puse manos a la obra y convertí el script que originalmente es una función en una clase que mejora un poco su uso, aún me falta implementar un par de cosas pero creo que actualmente ya es perfectamente usable así que he decidido compartirlo con ustedes.

Dropbox

Descargar DropboxUploader

Algunas de las características son:

  • Permite la subida de múltiples archivos al mismo tiempo
  • Pide los datos de autentificación y permite guardarlos (en linux en el directorio /home/usuario, en windows en documents and settings/usuario aunque en windows la verdad aún no lo pruebo :P)
  • Es posible especificar el directorio en el que se subirán los archivos (solo agrega el parámetro -d directorio_destino)

Nota Importante.- El script usa los modulos mechanize y argparse, si no los tienen instalados pueden encontrarlos en:

Upload2WordPress (Nautilus-Script) V2

Impresionantemente he logrado vencer la pereza y he sacado la nueva versión de esté script para subir archivos a un servidor con wordpress y si, dije archivos, pues ahora reconoce archivos de todo tipo!! Las modificaciones son las siguientes:

  • No solo sube imágenes sino todo tipo de archivos gracias a los mimetypes.
  • Ya no depende de terceras librerías.
  • Puedes usarla desde linea de comandos pasándole argumentos (para, por ejemplo, crear un lanzador encargado de subir archivos -vean Drag & Drop Email de ksaver para más info :P-).
  • Envía un mensaje de notificación por cada subido.

Espero que este script les sirva, si tienen algún comentario no duden en hacerlo (clic en la imagen para descargar el script).

Acire.- Busca, utiliza y comparte código programado en python

¿Interesado en aprender a programar interfaces gráficas en python pero eres muy flojo para empezar desde cero? ¿Tal vez tienes varios fragmentos de código que te gustaría compartir pero no sabes donde? ¡Acire es tu solución!

Acire es como una pequeña biblioteca donde encontraras distintos trozos de código (mejor conocidos como snippets) con los que programar será aún más sencillo, además se ira actualizando con la con las aportaciones de todo el que desee cooperar (si pueden cooperen).

Yo actualmente ya lo tengo instalado, he jugado un poco con el (aún no tanto como quisiera :/) y puedo decirles que me parece una excelente utilidad.

A la izquierda la pantalla de selección de código, a la derecha el ejemplo generado, al centro el logo :P

Más detalles en

Acire 0.3 Released | jonobacon@home (Aquí encontrarán la información de instalación tanto de Acire como de los snippets de python)

Upload2WordPress (Nautilus-Script)

Una bonita imagen subida con Upload2Wordpress

Siempre he estado convencido de que una característica básica de los programadores es ser huevon, no es que no nos guste trabajar, es solo que odiamos trabajar de más, así que cuando empecé a notar que poco a poco usaba más imágenes en el blog y que era tedioso usar la herramienta de subida de archivos de wordpress (o revisar y escribir la url exacta de la imagen si la subía por ftp) comencé a preguntarme si no habría una manera más fácil de hacerlo.

Entonces recordé los scripts de nautilus y pensé que sería muy cómodo tener un script que me permitiera subir una imagen al blog y obvio esta quedará disponible en el apartado de media (para poder seleccionarla fácilmente sin memorizar direcciones ni nada, sino que caso tendría :P), así que me puse a buscar a ver si había algo que hiciera lo que yo quería.

Busque y busque y nada que encontré, aparentemente a nadie le ha dado por hacer algo así o solo no lo ha compartido, estaba a punto de darme por vencido cuando me encontré con una librería de python para trabajar con wordpress.

Dicha librería desarrollada por Michel Ferretti esta bajo una licencia GNU LGPL por lo que nos es posible emplearla y modificarla evitandonos tener que reinventar el hilo negro (por eso amo el software libre :D), así que no tarde en descargarla y comenzar a jugar con ella 😛

La librería contiene un método llamado newMediaObject que hace casi lo que necesitaba y digo casi por que tiene como problema que no guarda la información sobre el tipo de archivo, provocando que wordpress no reconozca automáticamente las imágenes y por tanto, no baste con seleccionarlas para insertarlas como imagen (que es justo lo que quiero hacer u_u).

Dadas las circunstancias (y el hecho de que no pensaba renunciar a mi capricho de subir así mis imágenes) decidí modificar la librería para que se comportara como deseo (agregando un nuevo método para tal fin) y crear el script de nautilus encargado de subir la o las imágenes a mi blog, el resultado final fue bastante convincente y aunque creo que se puede mejorar (implementando por ejemplo la librería mimetypes para que reconozca automáticamente el tipo de archivo) la verdad es que seguramente tardaré en hacerlo (les digo que soy bien flojo :P) así que prefiero compartirlo con ustedes desde ahora.

Upload2Wordpress (Nautilus-Script) + WordPress Library Changed. Basta con descompactar el archivo en la carpeta ~.gnome/nautilus-scripts y editar los datos de conexión de su blog (en Upload2Wordpress) .

Links

La librería Original: WordPress Library

Actualización: Ya puedes obtener la versión 2 Upload2Wordpress (Nautilus-Script) V2