Después de leer el articulo que habia publicado Lazaro
en su blog, pense, que porque no hacer lo mismo con el mio.
Eso si, tengo que indicar antes, que su articulo, es mucho mejor que el mio, porque el funcionamiento de mi pagina web es muy parecido a la suya, pero con alguna diferencias. La primera y más importante, es que yo no uso Emacs ni Org-Mode.
Mi web es mucho más simple, pero eso si, intentaremos seguir un poco la guia que usa Lazaro
, para que sea facil seguir la mia.
Hardware
Es un poco subjetivo, en mi caso decir Hardware
, porque en mi caso, todo depende de 2 ordenadores. El primero es mi portatil de uso normal (personal) que es desde donde escribo los articulos gracias a markdown
y esto lo hago a traves de Geany, si ahora es cuando todos me vais a echar en cara que habia dicho en este articulo que estaba usando nvim
y que esta decisión, habia venido después de ver el video de Atareao donde explicaba que habia echo el cambio de vim
a neovim
para mejorar su productividad.
Y yo hice lo mismo, pero después de unos meses de usarlo, me he dado cuenta, que en mi caso, para el uso que le doy a neovim
, que es solo para los articulos de mi blog, me resultaba todo más lento y esto es porque aun me falta mucho por aprender de vim
y de neovim
y como no le voy a dar todo el uso que tendria que darle, pues la curva de aprendizaje seria muy lenta y sobretodo, tediosa porque como digo, no voy a sacarle todo el partido, por ese motivo, me he tirado a Geany
que es lo más parecido a notepad++
que era el que usaba cuando estaba programando y con el que estuve más comodo.
Pero no nos vayamos por las ramas y volvamos al hardware
, como he dicho antes, para escribir los articulos uso mi portatil personal y que gracias a las ideas que saque del articulo de Lazaro, lo sincronizo con mi servidor que junto con el container, docker, de Jekyll veo el resultado de como quedara todo.
Una vez, hechas todas las comprobaciones y validaciones, uso otro script, tambien en bash, que actualiza mi arbol del projecto de GitHub que es donde tengo alojada mi web.
Como veis, uso 2 ordenadores, seguramente podria usar uso solo, pero de momento, estoy comodo con este funcionamiento.
Scripts
Como he dicho antes, tengo 2 scripts para la sincronización de los articulos con el servidor y luego otro para sincronizar con el arbol de GitHub.
El primero de estos scripts, el de sincronizar con el servidor funciona a traves rsync
de la siguiente manera:
#!/bin/bash
rsync -azvhP --rsh='ssh -pPORT' --exclude='draff' DIRECTORI_ORIGEN USUARI@IP_SERVIDOR:/DIRECTORI_DESTI
Usando este script, hay que tener en cuentas unas cosas (como yo lo tengo configurado):
- PORT: Es el puerto que uses para comunicarte con el servidor, en mi caso, no uso el por defecto de
SSH
- exclude: el / los directorios que quieres excluir a la hora de sincronizar los directorios.
- DIRECTORI_ORIGEN: Es el directorio donde tenemos los ficheros
origen
- USUARI@IP_SERVIDOR: El usuario y ip del servidor al que nos tenemos que conectar
- DIRECTORI_DESTI: Directorio de destino, es el que
rsync
actualizara los archivos que esten en el directorio de origen.
El segundo script, tambien en bash, sirve para sincronizar el projecto que tengo en local con el projecto que tengo en GitHub.
Lo primero que hay que tener en cuenta, es que para usarlo, lo que se tiene que hacer, tal como yo lo tengo, es que el servidor tenga las claves SSH
dadas de alta en GitHub para que asi, no tengas que estar insertando todo el rato el usuario y el password.
Si esto ya lo tienes, ahora solo falta el script:
#!/bin/bash
# UpToGit 0.1
# Actualiza facilmente tu repositorio Git
# (CC) 2011 Alfonso Saavedra "Son Link"
# http://sonlinkblog.blogspot.com
# Bajo licencia GNU/GPL
# Modo de uso: copia o mueve este script a /usr/bin o /usr/local/bin y desde el directorio donde se encuentre la copia de un repo git, ejecútalo de esta manera:
# uptogit <ficheros>
# Comprobamos si el directorio en el que estamos es de un repositorio git
if [ ! -d '.git' ]; then
echo 'Esta carpeta no contiene un repositorio Git'
exit -1
fi
# Ahora comprobamos si se le paso algun parametro
if [ $# == 0 ]; then
echo "UpToGit: ¡Error! No se le a pasado ningún parámetro"
echo "uptogit fichero1 fichero2 ... ficheroN"
exit -1
else
# Recorremos los parametros para comprobar si son ficheros o directorios
for file in $*; do
if [ ! -e $file ]; then
echo "UpToGit: El archivo o directorio $file no existe"
exit -1
fi
done
# Si llegamos hasta aquí, indicamos a Git los archivos a subir
git add $*
# Esto nos pedira el mensaje del commit
echo "Introduce el mensaje del commit:"
read TXT
git commit -m "$TXT"
# Y terminamos subiendo los archivos
git push --force origin master
fi
Este script, tal como he dicho antes, actualiza nuestro repositorio de GitHub. Para su uso se ejecuta de la siguiente manera:
usuari@debian:~$sh up2Git.sh arxiu1, arxiu2, etc...
Donde:
arxiu1, arxiu2, etc...
: Son los archivos que quieres sincronizar. Si pones el.
estas indicando que quieres sincronizar todo el directorio.Introduce el mensaje del commit
: Nos esta pindiendo un mensaje para describir la acción que vamos a llevar a cabo (yo lo entiendo asi).
Y con esto, ya tenemos actualizado nuestro repositorio con GitHub.
Publicación
Para la publicación, se puede decir, que ya se ha hecho con el segundo de los scripts que antes he puesto.
Lo unico que falta, es otro script, esta vez hecho en python
, de factoria tambien de Lazaro que lo que hace es crear un toot en Mastodon con el ultimo articulo publicado en nuestro blog.
En el articulo, puedes ver como se hace tanto para Twitter
como para Mastodon
, pero en mi caso yo solo uso Mastodon
.
El script es el siguiente:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# script que lee el feed rss de un blog y publica el ultimo articulo creado en Mastodon
# Tienes que tener instaladas las librerias feedparser, Twython, Mastodon
# Autor: Carlos M.
# https://elblogdelazaro.org
# Llama los modulos Python
import feedparser
from twython import Twython
from mastodon import Mastodon
# Llamando a las llaves del Diccionario (Twitter)
CONSUMER_KEY = "xxxxxxxxx"
CONSUMER_SECRET = "xxxxxxxxx"
ACCESS_KEY = "xxxxxxxxx"
ACCESS_SECRET ="xxxxxxxxx"
# Seleccionamos el Feed
feed = 'ADREÇA DEL FEED'
# Parseamos el Feed
d = feedparser.parse(feed)
# Inicializa la API de Twitter, escribe el nuevo estado y salimos d['entries'][0] es el último articulo publicado
status_text = d['entries'][0]['title'] + '\n' + d['entries'][0]['link']
articulo = ("Ultimo articulo publicado:" +'\n' + status_text)
# Publica en mastodon
# Token y url de la Instancia
mastodon = Mastodon(
access_token = 'TOKEN_MASTODON',
api_base_url = 'https://URL_TU_MASTODON/'
)
mastodon.status_post(articulo)
Y con esto, esta explicado todo el funcionamiento desde la creación del articulo hasta la publicitación de dicho articulo en Mastodon. Seguramente, el articulo de Lazaro
le da mil vueltas al mio, pero…