A estas alturas no creo que haga mucha falta explicar qué es Mastodon pero por si acaso simplemente decir que es una aplicación para el microblogging similar a Twitter aunque con algunas (muchas) diferencias.
A diferencia de Twitter un usuario de Mastodon lo primero que tiene que elegir es a qué instancia quiere pertenecer, entiendo instancia como una "comunidad", "grupo de usuarios con algo en común", y es esa instancia la que se federa con otras instancias tejiendo una red de instancias de tal forma que el toot (equivalente a tweet) se puede propagar entre la red.
El API de Mastodon es bastante simple (aunque totalmente funcinoal) y con un simple POST podemos enviar toots.
En este post vamos a ver cómo mantener en una hoja de Google Sheet una lista de refranes preparados que se enviarán de forma aleatoria cada día a una hora determinada por nosotros
Mastodon
Una vez que estás dado de alta en una instancia puedes crear un API Token desde tu perfil, en opciones de Desarrollo
Crear una nueva aplicación con el nombre que quieras y marcando la opción de write
Te generará una token (una cadena de caracteres y simbolos raros).
- WARNING
-
No compartas este token pues sirve para tootear en tu nombre
Google Sheet
La estructura de la hoja va a ser supersimple:
en la primera fila tendremos una cabecera con dos columnnas, Estado y Refrán
en las siguientes filas vamos a escribir tantos refranes como queremos, uno por fila dejando la primera columna vacía si queremos que el refrán se envíe o con el texto "NO ENVIAR" si por alguna razón no queremos que sea enviado
Estado | Refrán |
---|---|
Perro ladrador, poco mordedor |
Script
En el menú de Google Sheet seleccionamos Extensiones
, Apps Script
y se nos abrirá una ventana nueva
De forma predeterminada te habrá escrito un par de líneas de código a modo de ejemplo que no nos interesa. Las borramos y las sustituimos por este código:
var instancia = 'mastodon.madrid';
var bootToken = '1d04U1Wnc0h-xxxxxxXXXX-_YYYY';
function sendMastodon() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
const rows = sheet.getRange(2,1,100,2).getValues()
var candidates = []
for( var r=0; r<rows.length; r++){
const row = rows[r];
if( row[0].toString() !== ""){
continue;
}
if( row[1].toString().trim().length == 0){
continue;
}
candidates.push(row[1])
}
const toot = candidates[Math.floor(Math.random() * candidates.length)];
var payload = {
'status': toot,
}
var options = {
'method' : 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload),
'headers': {
'Authorization': `Bearer ${bootToken}`
},
'muteHttpExceptions':true
};
Logger.log(payload)
var url = `https://${instancia}/api/v1/statuses`;
const resp = UrlFetchApp.fetch(url, options);
Logger.log(resp)
}
En las dos primeras tienes que personalizar con los datos de tu usuario:
la instancia es el nombre del servidor (por ejemplo mi servidor es https://mastodon.madrid/ así que la variable es
mastodon.madrid
)el token que generamos al principio
Básicamente el script lo que hace es recuperar las 100 primeras filas y filtrar aquellas que la primera columna está "limpia" (si tuviera texto no se envia) y la segunda columna tiene algo (el refran a enviar)
Una vez filtrados los refranes posibles se elige una de forma aleatoria y se prepara un POST para enviar
el payload es un json con un solo campo
status
que contiene el tootheaders contiene una autorizacion con el token
Probando
Para probar que todo está bien ejecutaremos el script (que nos pedirá permisos para poder ejecutar en nuestra cuenta)
Simplemente nos aseguraremos que la funcion sendMastodon
se encuentra en el listbox del menú superior, junto al botónEjecutar
. Pulsaremos el botón Ejecutar
y si todo ha ido bien habremos envíado un toot a nuestra instancia
Scheduler
Podemos pulsar el botón ejecutar tantas veces como queramos pero para hacerlo de forma desatendida usaremos la capacidad de planificar una llamada que nos ofrece Google Sheet:
En el menú vertical de la izquierda buscaremos Activadores
(icono de un reloj despertador) y crearemos un nuevo activador
seleccionamos la funcion
sendMastodon
fuente de evento
Según tiempo
temporizador por dias
a las 09:00
(obviamente tú seleccionarás la frecuencia y hora a la que quieres ejecutarlo, esto es un ejemplo)
Top comments (0)