Destripando: Instants Chile Get! – Planificación (Parte I)

Hace algunas semanas les presenté Instants Chile Get Improved un script de Bash, que descarga todos los instants desde instants.cl y los transforma a mp3/wav; la idea ahora, es ir siguiendo los pasos que nos llevarían a desarrollar el script.

Al menos en mi percepción, lo más importante de la programación es saber abstraerse; si bien, todos los lenguajes tienen sintaxis, reglas y exigencias distintas a la hora de programar (que el “;” al final de cada línea, que la indentación, etc). Al final todos poseen ciertos denominadores comunes, como estructuras de control (if, else), bucles, iteraciones, etc. La idea de esta serie, si bien aprender algo de bash y scripting, es también aprender técnicas y/o sugerencias para ayudar a programar un poco mejor.

Luego de esta introducción, comenzamos la primera parte: la planificación.

La motivación de programar no es por generación espontánea, habitualmente responde a algún problema o necesidad que debe ser resuelto. En este caso no es distinto, tengo una página web, con cierto contenido que inicialmente sólo me permite escucharlo por internet. Más de alguna vez he echado de menos tener la posibilidad de contar con esos sonidos en momentos que lo ameritan, por lo que ya tengo el objetivo principal de la aplicación: descargar los instants de la página web.

Botón de instantsCon esta información pues, tenemos que investigar algunas cosas; comenzando por si existe alguna aplicación similar. Esto puede parecer obvio, pero es increíble lo difícil que es ser original. Teniendo ya este punto, nos vamos a mirar la página web en cuestión, donde una rápida mirada (botón derecho en uno los botones) veremos que son sonidos flash.

Con este nuevo obstáculo, veremos que nuestro simple plan se complejiza un poco:

  1. Descargar todos los sonidos
  2. Transformarlos a mp3/wav

Aunque el trabajo que vayan a realizar, parezca simple (o que en definitiva lo sea) me ha dado mejor resultado planear lo que voy a hacer antes de tirarme de cabeza a escribir el código, a la larga, ahorra tiempo y es mucho menos frustrante que empezar y darse cuenta cada 10 minutos que lo que parecía sumamente sencillo no lo era tanto.

Afortunadamente, mi carrera (Medicina) me obliga a ser metódico, ¿imaginan que cada vez que examinara a un paciente lo hiciera en distinto orden?

Sería dramático (de hecho, es uno de los típicos errores de los estudiantes de medicina cuando recién ingresan a las labores clínicas), de esa forma es muy fácil omitir cosas importantes. En cambio si uno lleva el mismo orden —independiente de cuál sea— además de memorizarlo con mayor facilidad, simplifica enormemente la tarea de ir agregando o retirando “pasos” para hacer más eficiente/efectivo el sistema.

Por supuesto que la herramienta a escoger no es algo que se pueda afirmar con certeza absoluta, es a conveniencia de cada persona. Para alguien podría ser útil realizar un listado (receta de cocina) lo más detallado posible, realizar un diagrama de flujo, utilizar pseudocódigo, y/o muchas más.

Esta fase también nos puede permitir tomar una mejor decisión sobre qué lenguaje utilizar. En ese sentido, no es lo mismo diseñar una aplicación web (php), una aplicación de escritorio (python-gtk) o un script simple como el que motiva esta serie.

Si ya contásemos con más experiencia en algún lenguaje (o en programación en general), podríamos hilar incluso más fino. Por ejemplo, si quisiéramos desarrollar alguna aplicación basada en el API de delicious, sabríamos que debemos tratar con archivos XML. Con este antecedente, podríamos investigar qué lenguaje cuenta con mejores bibliotecas[1] o las que sean más fáciles de manipular para el objetivo particular que andamos buscando.

Por último, todo esto no es sólo válido para trabajos personales, también lo es para trabajo en equipo; invertir unas horas más fuera de los computadores para hacer un esquema de la aplicación y planificar los distintos aspectos, facilita en gran medida que cada miembro tenga claro el rol que cumplirá y no será necesario interrumpir el trabajo, sólo para descubrir que el proyecto era inviable o los estilos de los códigos causan estragos en la comprensión de las aplicaciones.

Lamento que esta parte haya sido tan “latera”, desde la próxima parte ya empezaremos a tipear código; diría “programar”, pero la verdad es que sería una redundancia pues ya lo empezamos a hacer ;)

[1] Por supuesto que esto es una simplificación casi absurda, dudo que exista algún lenguaje que tenga un mal soporte para parsear archivos XML.

Foto:

5 thoughts on “Destripando: Instants Chile Get! – Planificación (Parte I)

  1. Información Bitacoras.com…

    Valora en Bitacoras.com: Hace algunas semanas les presenté Instants Chile Get Improved un script de Bash, que descarga todos los instants desde instants.cl y los transforma a mp3/wav; la idea ahora, es ir siguiendo los pasos que nos llevarían a des……

    Me gusta

  2. Ese método me tincó mucho http://ubuntuforums.org/showthread.php?t=934147
    Entonces el pseudo código (que yo usaría) sería:
    – Obtener la fuente de las páginas de instant.cl ( cat archivo.txt | xargs -i wget {} ) donde archivo tiene la lista de páginas a descargar
    – ‘Parsear’ (anglicismo…) cada archivo y buscar las cadenas de tipo http://bla/blabla/*.swf (imaginoque con sed se debe poder, pero no tengo tanta experiencia con expresiones regulares y sed, yo lo haría con jEdit … )
    – Descargar los swf del listado anterior (otro wget análogo al primero)
    – Sacar los MP3 de los swf usando el comando que aparece en el enlace que puse

    Fácil y bonito ;)

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s