droWMark, postea en WordPress desde Vim

Hola hijos,

Hoy vengo a contaros una cosa loca que he estado desarrollando para mí durante el último año en ratos libres.

Hace tiempo que salió su primera versión pero no lo publiqué porque no saqué tiempo y porque me daba un poco de vergüenza porque era muy cutre, pero ahora que tengo más tiempo (ya os contaré por qué) me he decidido a añadirle unas funcionalidades nuevas y estoy contento.

Vengo a presentaros droWMark, un plugin para Vim que sirve para postear a WordPress desde el editor, escribiendo en Markdown (con sabor a Pandoc). Por si os lo preguntabais, sí, llevo como un año posteando en este foro directamente desde Vim.

Hasta hace muy poquito el plugin no soportaba la subida de imágenes, pero tampoco lo necesitaba porque pocas veces añado imágenes a los posts. 🙂

Os cuento un poco cómo funciona por debajo y si queréis más información os leeis la documentación del plugin, que es bastante clara. Para leerla con entrar en la carpeta doc en el repo es suficiente pero mola más que os lo instaléis (usad Vundle o algo por favor) y hagáis :help drowmark.

El plugin se separa en dos partes, una en VimL (o VimScript) y otra en Python.

La parte en VimL se encarga de gestionar todo lo relacionado con Vim y llamar a la parte de Python. Hace las siguientes cosas:

  • Syntax highlighting de los ficheros especiales que utilizo. Son una mezcla de Markdown con un poco de INI1 en la cabecera (aunque no por mucho tiempo).
  • La documentación del plugin, para poder hacer :help drowmark y esas cosas.
  • Define el nuevo tipo de fichero WP. Para esto necesita detectar el tipo de fichero y marcarlo bien. De esto se encarga ftdetect.
  • Gestionar el post de plantilla para que se pueda hacer :NewWordPress y te prepare el archivo. Simplemente se guarda un fichero de referencia que se escribe en el búfer actual al llamar al comando. Fácil.
  • Llama al script de python de forma ordenada pidiéndole los credenciales al usuario. Mientras escribes la contraseña no muestra nada en la pantalla, pero no está muy fino y si te equivocas y borras no funciona. Si leéis el código entenderéis por qué.

La parte de python es todo lo relacionado con WordPress y la funcionalidad que se quería ofrecer. Así puede separarse y usarse sola o migrarse a otros editores. Tengo pendiente migrar a Emacs pero necesito la ayuda de mi divertida hermana Emacsera para eso. La parte de Python hace lo siguiente por el momento.

  • Captura las opciones puestas en la cabecera INI y construye un blogpost con ellas.
  • Convierte el MarkDown a HTML usando panflute. En las versiones anteriores lo hacía con pypandoc.
  • Durante la conversión (esto es la novedad de la versión 1.1) busca todas las imágenes en el texto y las sube si son ficheros locales cambiando la URL para que referencia al recién subido archivo. Lo mismo ocurre con el campo thumbnail de la cabecera.
  • Postea el documento convertido.

Y eso es todo.

Fijaos que esta entrada tiene un thumbnail (o imagen destacada) y una imagen aquí debajo. Están únicamente puestas para demostrar que puedo.

Imagen puesta para fardar

No os toméis este Plugin como la mejor manera de hacer las cosas, sólo quiero que veáis que cuando nos apetece cambiar nuestro workflow con un poco de esfuerzo podemos conseguirlo. No hace falta volverse muy loco.

Si leéis el código fuente veréis que es un script de Python muy corto y bastante cutre. A veces merece la pena programar agresivo si el programa cumple con lo que debe.

Ahora mismo estoy en ese proceso de ir convirtiéndolo en un programa razonable, pero, de momento, es un poco mierda porque funciona y para mí es suficiente. Si empezamos grande a veces nos aburrimos antes de terminar. Mejor empezar pequeño y cuando la cosa dé unos frutos recuperar la motivación para poder crecer.

¡Espero que os mole y lo probéis!

Comentarios y críticas, en la sección de abajo.

Un abrazo.


  1. INI son los ficheros como la configuración de Git, hice un parser de esto en C hace un tiempo

6 pensamientos en “droWMark, postea en WordPress desde Vim

  1. Os dejo el texto crudo de la entrada por si no os lo creéis.

    Es el crudo de la entrada para la versión 1.1 de droWMark. Las fotos se subieron automáticamente al ejecutar el plugin.


    [wordpress]
    # Title of your blog post here
    # Example: title = My cool blog post in here
    title = droWMark, postea en WordPress desde Vim
    # The status you want for your blog post here. Options are:
    # draft, published, pending, private
    # Example: status = published
    status = draft
    # The categories of your blog post. Comma separated.
    # Example: categories = Category One, Cat Two
    categories = Scrips, Herramientas
    # The tags of your blog post. Comma separated.
    # Example: tags = tag one, tag two
    tags = vim, wordpress, plugin, python, fastanddirty
    # The URL of your blog.
    # ('https://' and 'xmlrpc.php' will be added automatically)
    # Example: url = mycoolblog.wordpress.com
    url = pfctelepathy.wordpress.com
    # [OPTIONAL] Thumbnail image.
    # URL or Relative Path to the post file. If path, it will be automatically
    # uploaded.
    # Example: thumbnail = images/thumb.jpg
    thumbnail = drowmark.png
    Hola hijos,
    Hoy vengo a contaros una cosa loca que he estado desarrollando para mí durante
    el último año en ratos libres.
    Hace tiempo que salió su primera versión pero no lo publiqué porque no saqué
    tiempo y porque me daba un poco de vergüenza porque era muy cutre, pero ahora
    que tengo más tiempo (ya os contaré por qué) me he decidido a añadirle unas
    funcionalidades nuevas y estoy contento.
    Vengo a presentaros [**droWMark**](http://github.com/ekaitz-zarraga/drowmark),
    un plugin para Vim que sirve para postear a WordPress desde el editor,
    escribiendo en Markdown (con sabor a Pandoc). Por si os lo preguntabais, sí,
    llevo como un año posteando en este foro directamente desde Vim.
    Hasta hace muy poquito el plugin no soportaba la subida de imágenes, pero
    tampoco lo necesitaba porque pocas veces añado imágenes a los posts. 🙂
    Os cuento un poco cómo funciona por debajo y si queréis más información os
    leeis la documentación del plugin, que es bastante clara. Para leerla con
    entrar en la carpeta `doc` en el repo es suficiente pero mola más que os lo
    instaléis (usad Vundle o algo por favor) y hagáis `:help drowmark`.
    El plugin se separa en dos partes, una en *VimL* (o *VimScript*) y otra en
    *Python*.
    La parte en *VimL* se encarga de gestionar todo lo relacionado con Vim y llamar
    a la parte de Python. Hace las siguientes cosas:
    – Syntax highlighting de los ficheros especiales que utilizo. Son una mezcla de
    Markdown con un poco de INI[^1] en la cabecera ([aunque no por mucho
    tiempo](https://github.com/ekaitz-zarraga/droWMark/issues/4)).
    – La documentación del plugin, para poder hacer `:help drowmark` y esas cosas.
    – Define el nuevo tipo de fichero WP. Para esto necesita detectar el tipo de
    fichero y marcarlo bien. De esto se encarga `ftdetect`.
    – Gestionar el post de plantilla para que se pueda hacer `:NewWordPress` y te
    prepare el archivo. Simplemente se guarda un fichero de referencia que se
    escribe en el búfer actual al llamar al comando. Fácil.
    – Llama al script de python de forma ordenada pidiéndole los credenciales al
    usuario. Mientras escribes la contraseña no muestra nada en la pantalla, pero
    no está muy fino y si te equivocas y borras no funciona. Si leéis el código
    entenderéis por qué.
    La parte de python es todo lo relacionado con WordPress y la funcionalidad que
    se quería ofrecer. Así puede separarse y usarse sola o migrarse a otros
    editores. Tengo pendiente migrar a Emacs pero necesito la ayuda de mi divertida
    [hermana Emacsera](https://ondahostil.wordpress.com/) para eso. La parte de
    Python hace lo siguiente [por el
    momento](https://github.com/ekaitz-zarraga/droWMark/issues/5).
    – Captura las opciones puestas en la cabecera INI y construye un blogpost con
    ellas.
    – Convierte el MarkDown a HTML usando `panflute`. En las versiones anteriores
    lo hacía con `pypandoc`.
    – Durante la conversión (esto es la novedad de la versión 1.1) busca todas las
    imágenes en el texto y las sube si son ficheros locales cambiando la URL para
    que referencia al recién subido archivo. Lo mismo ocurre con el campo
    `thumbnail` de la cabecera.
    – Postea el documento convertido.
    Y eso es todo.
    Fijaos que esta entrada tiene un thumbnail (o imagen destacada) y una imagen
    aquí debajo. Están únicamente puestas para demostrar que puedo.
    ![](drowmarkBIG.png)
    No os toméis este Plugin como la mejor manera de hacer las cosas, sólo quiero
    que veáis que cuando nos apetece cambiar nuestro *workflow* con un poco de
    esfuerzo podemos conseguirlo. No hace falta volverse muy loco.
    Si leéis el código fuente veréis que es un script de Python muy corto y
    bastante cutre. A veces merece la pena programar agresivo si el programa cumple
    con lo que debe.
    Ahora mismo estoy en ese proceso de ir convirtiéndolo en un programa razonable,
    pero, de momento, es un poco mierda porque funciona y para mí es suficiente. Si
    empezamos grande a veces nos aburrimos antes de terminar. Mejor empezar pequeño
    y cuando la cosa dé unos frutos recuperar la motivación para poder crecer.
    ¡Espero que os mole y lo probéis!
    Comentarios y críticas, en la sección de abajo.
    Un abrazo.
    [^1]: INI son los ficheros como la configuración de Git, [hice un parser de esto
    en C hace un tiempo](https://pfctelepathy.wordpress.com/2016/06/24/parsear-archivos-ini-en-c/)

    view raw

    drowmark.wp

    hosted with ❤ by GitHub

  2. droWMark, postea en WordPress desde Vim | PlanetaLibre

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.