Estoy desatado. Es como cuando nos gusta mucho alguien y hacemos todo lo posible por ocultarlo hasta que no podemos más y, un día, sale todo de golpe. Pues yo amo la tecnología. Ayer me instalé el Visual Studio code.
Está muy bien eso de escribir los scripts desde Vim en el terminal, pero quería probarlo. De hecho, lo probé hace cosa de un año o más, pero mi ordenador se arrastraba tanto que era un suplicio. Aunque peor era el Android Studio de Google. Le llevaba un varios minutos solamente arrancar. Inusable.
Y lo instalé ayer. Y funcionó muy bien, maravillas de la tecnología SSD. Y me resultó fácil e intuitivo instalar nuevos complementos.
Lo usé para mejorar el script de automatización del podcast.
Me di cuenta de que, al correr el script, cuando llegaba la parte en la que lanzaba Audacity para grabar el podcast, el script se detenía, y no finalizaba hasta que yo terminaba de grabar el episodio. Entonces pensé que podía aprovechar este inesperado comportamiento para automatizar algo más.
Yo hago la grabación del episodio y, cuando termino, lo exporto a mp3. Pero los ficheros internos de Audacity tienen un formato aup y además son enormes. Un episodio de media hora me puede generar un giga y medio de datos que me resultan irrelevantes, pues sólo me interesa el mp3 que es lo que subo a Anchor. Normalmente los borro justo en el momento de subirlos, pero… si los puedo borrar automáticamente al cerrar Audacity, pues mucho mejor.
Así que amplié el script en bash de manera que comprueba si se ha creado el mp3 del episodio y, entonces, elimina los archivos “residuales”:
# Cuando cierro Audacity
## Comprobar si se ha creado el mp3 y, en caso afirmativo, borrar el resto de ficheros de Audacity.
if [ -f ESDLV-ThePodcast-$NEWDIR.mp3 ]
then
echo "Borrando ficheros de Audacity..."
rm ESDLV-ThePodcast-$NEWDIR.aup
rm -fr ESDLV-ThePodcast-$NEWDIR$DATA
fi
Me encanta esa manera tan elegante que tiene bash para trabajar con ficheros, con ese if -f seguido del nombre del fichero. Es la primera vez que me sumerjo en bash y me está gustando mucho.
Expandiendo horizontes
Espoleado por mi éxito, ayer por la tarde investigué algo más. ¿Acaso no sería genial si, además de hacer todas estas operaciones en local, pudiera expandir esa automatización a través de la red para generarme un borrador de post con una plantilla de podcast? Esto es, con su título, su plantilla de escaleta, su categoría de podcast ya preseleccionada… Sí, sería genial.
Así que me puse a investigar.
Mi lenguaje favorito es Python. Es sencillo, limpio, elegante, minimalista… Tiene todo lo que considero que tiene que tener un lenguaje de programación. ¿Para qué un punto y coma al final de cada sentencia? ¿Para qué tanto paréntesis? ¿Qué tal si usamos los tabuladores para estructurar el código necesariamente?
Así que me propuse hacerlo con Python y encontré un par de soluciones basadas en un módulo que utiliza la API, si lo he entendido bien, de WordPress para hacer todo tipo de cosas, entre otras crear un nuevo post con una serie de datos de base.
Y me puse manos a la obra.
La parte más difícil, paradójicamente, fue conseguir que Python importara el módulo en cuestión. Lo instalé pero no era detectado, así que al final tuve que terminar incluyendo el path en cuestión en la variable de PYTHONPATH que cargo desde mi .bashrc. No sé si es lo más ortodoxo, pero me funcionó.
Para simplificar el proyecto, me salté la parte de la autenticación. Para dar un poco de seguridad al asunto, creé un usuario WordPress tipo Colaborador, que sólo puede crear nuevos posts en borrador y queda al margen de todo tipo de permisos administrativos.
Y en fin, una hora más tarde, y después de algunas pruebas, la cosa estaba como yo quería:
# -*- coding: utf-8 -*-
# Script para crear una nueva entrada de Wordpres para el podcast
# Por hacer: Importar número de episodio y completar el título
import sys
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods import posts
# He creado un usuario tipo colaborador que sólo puede escribir posts, no publicar.
# Nombre usuario tipo colaborador: MI_USUARIO
# Contraseña usuario: MI_CONTRASEÑA
# Email: MI_EMAIL
url_xmlrpc_esdlv = 'https://elsentidodelavida.net/xmlrpc.php'
usuario = 'MI_USUARIO'
contra = 'MI_CONTRASEÑA'
if sys.argv[1]:
num_capitulo = sys.argv[1]
else:
num_capitulo = 'XXX'
esdlv = Client(url_xmlrpc_esdlv, usuario, contra)
print "Creando nuevo post para el podcast a ESDLV..."
post = WordPressPost()
post.title = 'Podcast Ep. ' + num_capitulo + ': '
# post.slug = 'El slug del post'
post.content = """
<p>Descripción</p>
<p><strong>Escaleta:</strong></p>
<ul><li>Item A</li><li>Lectura de El Diario Teutón: "".</li></ul>
"""
post.terms_names = {
'post_tag': [],
'category': ['Podcast']}
post.id = esdlv.call(posts.NewPost(post))
# post.post_status = 'draft'
success = esdlv.call(posts.EditPost(post.id, post))
if success == True:
print "Nuevo post creado exitosamente"
else:
print "Algo ha ido mal"
— Ostras… ¡ha funcionado! –dije.
—¿No deberías decir “¡Yuhu, ha funcionado!”? —preguntó Daniela desde el sofá.
—Sí, pero es que no me lo creo…
Recuerdo mi primer “gran” proyecto en el trabajo. Para un cliente, tenía que acceder a la API de un servicio online para tomar los datos desde la base de datos de nuestro programa, subirlos al servicio online y además hacer algunas operaciones con ellos, tanto como antes como después. En mi vida había usado una API. El programa tenía un montón de líneas. Estuve ocho o diez horas trabajando en ello a lo largo de dos días. Al final, funcionó.
—La hostia puta… ¡Funciona! —pensé.
Me sentí como si estuviera poniendo un cohete en la luna.
Siempre había querido aprender a programar. Creía que tenía que ir a la universidad para ello. Creía que tenía que aprender allí durante muchos años. Gracias a que los socios de mi antigua empresa me dieron una oportunidad, pude aprender a programar. Al menos empezar.
Mi nivel es muy básico. Trabajé haciendo principalmente modificaciones del código, adaptándolo a las necesidades específicas de cada cliente. Nunca hice desarrollo en sí. Los objetos se me quedan grandes. Ignoro las cosas más complejas y avanzadas de los lenguajes de programación. Pero oye, puede crear un post en WordPress desde un script de Python.
“Un pequeño paso para un hombre, un gran paso para la humanidad”.
Despedida y cierre: Wie geht es weiter?
El siguiente paso natural sería conectar el script en bash con el script en python, de modo ejecutando por ejemplo el primero, cuando tenga el número del nuevo episodio se lo pase al script en python para que lo aproveche para crear el nuevo post ya con ese número de episodio. Con esto estaría, en principio, esta automatización terminada.
Ahora, Dani me ha pasado ya algunos requerimientos de cómo quiere formatear específicamente sus apuntes, así que me voy a poner a trabajar en eso hoy.
Al margen de este asunto, este jueves comienzo por fin el curso de orientación laboral. Seguiré informando.

¡siempre hay un camino!
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.