Saltar al contenido

Publicando directamente en wordpress.com con python

Este es un notebook de prueba publicado directamente en http://pybonacci.org (aunque se puede publicar en cualquier plataforma wordpress que tenga habilitado xml-rpc) desde un ipython notebook (ipynb de ahora en adelante).
Este ipynb consta de celdas con código python, celdas con texto formateado con markdown, con output de celdas con imágenes que se muestran ‘inline’, con celdas que enlazan a videos de youtube, con celdas que enlazan a imágenes online, con celdas que enlazan a páginas web,…

  1. Las celdas con código python se mostrarán como si en wordpress se envolviese el código con las etiquetas[sourcecode language=”python”][/sourcecode]
  1. Las celdas con texto formateado con markdown se transforman a html con la ayuda de http://pypi.python.org/pypi/Markdown/
  1. Los output de imágenes (por ejemplo, matplotlib) se suben directamente a wordpress como imágenes y se enlazan en la entrada
  1. Los output con videos de youtube se enlazan con la etiqueta [youtube] de wordpress
  1. Los output de imágenes online harán una copia de la imagen que estéis enlazando y la subirán a vuestro wordpress por lo que tened cuidado si enlazáis imágenes con copyright y/o posibles restricciones.
  1. Los output de HTML de ipython se convierten en un enlace en lugar de meter un frame en wordpress.
  1. Podéis añadir lo que queráis…

[sourcecode language=”python”]
## Ejemplo de celda que muestra una imagen inline
import matplotlib.pyplot as plt
plt.plot([1,2,3,4,3,2,1])[/sourcecode]
La salida del anterior código mostrará lo siguiente

[sourcecode language=”python”]
## Ejemplo de celda que muestra un video de youtube
from IPython.display import YouTubeVideo
YouTubeVideo("9sEI1AUFJKw")[/sourcecode]
La salida del anterior código mostrará lo siguiente
[youtube=http://www.youtube.com/watch?v=9sEI1AUFJKw]
[sourcecode language=”python”]
## Ejemplo de celda que muestra una imagen enlazada como output
from IPython.display import Image
Image("http://pybonacci.org/wp-content/uploads/2012/11/pybofractal1.png")[/sourcecode]
La salida del anterior código mostrará lo siguiente

[sourcecode language=”python”]
## Ejemplo de celda que muestra un frame html como output
from IPython.display import HTML
HTML(”)[/sourcecode]
La salida del anterior código mostrará lo siguiente
Link a http://ipython.org
Todo esto es solo una prueba de concepto. Tengo que estudiarme nbconvert o ver si se podría integrar el script que ha creado esta entrada (pero bien hecho) a partir de este ipynb directamente en los menus de ipynb para poder publicar directamente un ipynb en wordpress (y otros) directamente con un par de clicks.
Nos vemos próximamente con más novedades.
Saludos.

5 comentarios en «Publicando directamente en wordpress.com con python»

  1. La entrada anterior tiene errores :-(, lo sé, pero lo he querido dejar tal cual para que cualquiera pueda reproducir la entrada.
    -La numeración de las listas está mal puesta, aunque es fácilmente resoluble (pero es tarde y estoy cansado).
    -En la última pieza de código:
    ## Ejemplo de celda que muestra un frame html como output
    from IPython.display import HTML
    HTML(”)
    Debería aparecer lo que se ve en el notebook (http://nbviewer.ipython.org/4185988/) pero wordpress se ‘jala’ lo que aparece entre comillas (supongo que por seguridad).
    ¿Alguien le ve potencial y/o utilidad a esto y le gustaría verlo en ipython notebook?
    Todo el script que genera esta entrada es feo y hecho por fuerza bruta, se aceptan todo tipo de sugerencias.
    Buenas noches.

    1. No solo le veo potencial: es que cuando limes (o limemos) los detalles, no voy a publicar de otra forma 😛
      Y no, dudo mucho que WordPress.com deje incluir iframes, aunque si puedo incluir código e imágenes y el HTML básico se formatea correctamente por mí va perfecto!

      1. Faltaría ponerse con látex (aunque no debería suponer un problema), aceptar otros lenguajes, además de python, en el script (no está hecho solo por vagancia y por ser una prueba de concepto), contemplar la posibilidad de incluir otros servicios como blogger, tumblr,…(esto que lo añada el que quiera y necesite),…
        Todo el código está para refactorizar y ponerlo en bonito, para crear las imágenes primero leo la información binaria del JSON, la paso a base64 y vuelta a binario porque no he encontrado otra forma (y por desconocimiento de xmlrpclib, la librería y su funcionamiento), me tendría que poner al día con las expresiones regulares, que no he usado nunca :-(, habría que encontrar una forma diferente a la fuerza bruta para parsear el JSON (he buscado pero no he encontrado gran cosa),…
        Luego creo un repositorio en github y todo el que quiera ayudar a paliar mi falta de conocimientos y escasas aptitudes 🙂 será bienvenido.
        Por último, este ejercicio me ha valido para transformar una idea de hace un par de días en una realidad gracias a python y a todos los Chemas, Joes, Guidos, Fernandos, Travis, Andreys, Jesuses, Juanlus, Dapids,…, que hay detrás.
        Saludos.

  2. He creado el repositorio en https://github.com/kikocorreoso/ipynb2wp por si alguien quiere usarlo, modificarlo, tirarlo a la basura, cagarse en mis muelas porque no funciona,…
    He refactorizado un poco, he reordenado un poco el código, he añadido comentarios y he añadido la posibilidad de publicar en inglés y en español.
    Juanlu, lo de parsear el JSON, me refiero a que cuando cargo el JSON en python tengo un diccionario con diccionarios dentro de diccionarios con listas, arrays o lo que sea y solo sé extraer la información de ahí conociendo previamente toda la estructura… Mi ignorancia me lleva a pensar si existe algo que te defina/extraiga la estructura del fichero JSON sin conocerlo previamente.
    Con el uso de expresiones regulares estoy pensando en cosas como las líneas 33, 34, 38, 104 en https://github.com/kikocorreoso/ipynb2wp/blob/master/ipynb2wp.py. Extraer la id del video de youtube, o la url del HTML(”), o quitar espacios, puntos,…, incómodos en lo que vas a usar para llamar a un fichero.
    Como nunca uso cosas como JSON, XML-RPC, expresiones regulares…, soy un mar de dudas con patas sobre estas cosas.
    Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

28 − twenty five =

Pybonacci