-- Leo's gemini proxy
-- Connecting to gmi.osiux.com:1965...
-- Connected
-- Sending request
-- Meta line: 20 text/gemini;lang=es_AR
AUTHOR: Osiris Alejandro Gomez
EMAIL: osiux@osiux.com
DATE: 2023-04-30 08:22
[1]
Por un par de meses tuve la cuenta del `pleroma` ^1[2] de `cyberdelia` ^2[3] pero esta instancia murió sin *backup*, aunque en mi caso no había publicado mucho que digamos...
Tenía pendiente participar del `Fediverso` ^3[4] en modo escritura y decidí retomar esta vez mediante la instancia `rebel.ar`
Resultó muy simple interactuar con la *Mastodon API* ^4[5] y como era de esperarse lo hice usando `curl`, `jq` y `BASH`, inicialmente hice pruebas en modo privado hasta que salía algo presentable.
Básicamente, publicar un `toot` o `status` es pasar el contenido del estado en la variable `STATUS`, el idioma `STATUS_LANG`, la visibilidad (*public, unlisted, private, direct*), y los *IDs* de la media que querés adjuntar (imágenes, videos, etc).
curl -s -X POST "$URL_API" \ -H "Accept: application/json" \ -H "Authorization: Bearer $TOKEN" \ -F "status=$STATUS" \ -F "language=$STATUS_LANG" \ -F "visibility=$VISIBILITY" \ -F "media_ids[]=$MEDIA_ID" > "$JSON"
El resultado es un `json` con toda la metadata, con *links* directos a cada *tag*, a las imágenes y mucha información relacionada.
Ahora que ya tengo un `mastodon-statuses-new` ^5[6] debía pensar qué iba a publicar y como no soy muy amante del *micro-blogging* simplemente porque *no tengo capacidad para resumir*, pensé que tal vez sería una buena idea publicar cada *post* de mi *blog* en forma de *status* de *Mastodon*.
Entonces surgió `org2mastodon` ^6[7] que recibe un archivo `.gmi`, extrae del *header* los *tags* `TITLE, DESCRIPTION, KEYWORDS, LANGUAGE` y obtiene la primer imagen que este en el archivo o la imagen definida en los *tags* de `OpenGraph` ^7[8] y se ocupa de publicar un nuevo *status* de *Mastodon*.
Ya estaba muy cerca de salir a publicar a lo pavote, pero surgieron 2 problemas a resolver:
1. No todos los *posts* tenían todos los *tags* necesarios ni imágenes
2. Cuándo publicar? En que orden? Cómo evitar duplicar *posts*?
La solución vino de la mano de `blog2mastodon` ^8[9] que revisa mi *blog* y compara posts publicados en *Mastodon* con los pendientes de publicación, para sistematizar de alguna manera, se me ocurrió asignar un *Tag* a cada día de la semana y de esta manera saldría un posible cronograma de publicación, en base al primer *Tag* definido en `KEYWORDS` de cada archivo a publicar y es el siguiente:
┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬────────┐ │ weekday │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ ╞═════════╪═════════╪═════════╪═════════╪═════════╪═════════╪═════════╪════════╡ │ weeknam │ Monday │ Tuesday │ Wednesd │ Thursda │ Friday │ Saturda │ Sunday │ │ e │ │ │ ay │ y │ │ y │ │ ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼────────┤ │ tag │ Ansible │ Bash │ Evento │ Git │ GraphVi │ SysAdmi │ Blog │ │ │ │ │ │ │ z │ n │ │ └─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴─────────┴────────┘
Ahora `blog2mastodon` se ejecuta mediante el `cron` buscando y validando archivos `.gmi` para convertirlos a *Mastodon* y publicarlos automáticamente sin mi intervención.
Obviamente esto falló varias veces y al principio lo ejecutaba manualmente o a una hora definida en el `cron` para monitorear comportamiento, pero luego de unos días, comenzó a funcionar solito y solo.
`blog2mastodon-alert` ^9[10] se ocupa de avisarme si hay algo publicable, luego de publicarlo enviándome el la *URL* y lo más importante, alertándome mediante `ntfy.sh` ^10[11] si no hay nada para publicar con diferentes niveles de criticidad, entonces en el mejor de los casos solo basta que me ocupe de completar DESCRIPTION, KEYWORDS y verificar si cuenta con una imagen un *post*, realizar el *commit* en el *repo* de mi *blog* ^11[12] y en algún momente el *crontab* se ocupará de publicar por mi en *Mastodon*.
Un ejemplo del *log* que genera `blog2mastodon-alert`:
⌂ NTFY_SEND=0 blog2mastodon-alert No hay cambios locales para guardar Tu rama está actualizada con 'origin/master'. warning: redirigiendo a https://gitlab.com/osiux/osiux.gitlab.io.git/ Ya está actualizado. 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-02 weekday=2 weekname=Tuesday date_published_total=1 tag_total=5 tag_published=5 tag_unpublished=0 priority=Low tag=Bash next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-03 weekday=3 weekname=Wednesday date_published_total=0 tag_total=4 tag_published=4 tag_unpublished=0 priority=Urgent tag=Evento next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-04 weekday=4 weekname=Thursday date_published_total=0 tag_total=6 tag_published=4 tag_unpublished=2 priority=Low tag=Git next=2023-02-27-git-auto-commit-and-push-using-crontab.gmi 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-05 weekday=5 weekname=Friday date_published_total=0 tag_total=3 tag_published=3 tag_unpublished=0 priority=Urgent tag=GraphViz next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-06 weekday=6 weekname=Saturday date_published_total=0 tag_total=5 tag_published=5 tag_unpublished=0 priority=Urgent tag=SysAdmin next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-07 weekday=7 weekname=Sunday date_published_total=0 tag_total=3 tag_published=3 tag_unpublished=0 priority=Urgent tag=Blog next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-08 weekday=1 weekname=Monday date_published_total=0 tag_total=5 tag_published=5 tag_unpublished=0 priority=Urgent tag=Ansible next=null 2023-05-02 09:59:39 blog2mastodon-alert date=2023-05-09 weekday=2 weekname=Tuesday date_published_total=0 tag_total=5 tag_published=5 tag_unpublished=0 priority=Urgent tag=Bash next=null 2023-05-02 09:59:39 blog2mastodon-alert weekday=0 total=36 published=34 unpublished=2 priority=Low tag=all next=null
Luego de semanas de usar `mastodon-bash-utils` ^12[13] en modo *developer* aprovecho a generar el primer *release* público! y seguramente estaré compartiendo una *review* mas detallada de cómo fue realizar 1 mes entero de *posts*, según el cronograma debería ser el próximo *Domingo*.
`2023-05-17 08:46`[14] corregir sintaxis y agregar referencia a ntfy.sh en *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
`2023-05-16 19:51`[15] actualizar TITLE, DESCRIPTION y tags OpenGraph en *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
`2023-05-16 19:19`[16] agregar imagen y tags OpenGraph a *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
`2023-05-16 19:31`[17] agregar *publicar cada post de blog como status de mastodon usando `mastodon-bash-utils`*
-- Response ended
-- Page fetched on Thu May 2 05:55:37 2024