Hola, este post va de Pleroma, una plataforma que federa con GNUSocial y redes sociales con la implementación de OStatus, escrita en mix y que ha sido creada por @[email protected] bajo licencia AGPLv3.
Aquí no vamos a explicaros como instalar vuestra instancia, eso podéis hacerlo hasta en una RaspberryPi, pero si lo hacéis en debian hay que tener el repositorio de erlang para instalar mix
deb https://packages.erlang-solutions.com/debian stretch contrib
instalamos mix y las dependencias necesarias para pleroma como se indica en:
https://git.pleroma.social/pleroma/pleroma/wikis/Installing%20on%20debian%20based%20distributions
Una vez tengamos la instancia de Pleroma funcionando podremos depurar las conexiones que hace cuando envía un post a la plataforma y de esta forma hacer un bot que publique automáticamente, en el siguiente ejemplo vemos un bot de Pleroma que publica una imagen escrito en NodeJS
El bot usa Tor para conectar a Pleroma así nos sentiremos más anonymous, necesitaremos los módulos request, socks5-https-client y fast-xml-parser de NodeJS:
npm install request socks5-https-client fast-xml-parser
bot-pleroma.js
const request = require('request'),
Agent = require('socks5-https-client/lib/Agent'),
fastXmlParser = require('fast-xml-parser'),
fs = require('fs'),
pleroma = function() {
request({
method: 'POST',
url: 'https://bash-street-boys-and-girls.com/api/statusnet/media/upload',
strictSSL: false,
auth: {
user: 'username',
pass: 'password'
},
agentClass: Agent,
agentOptions: {
socksPort: 9050
},
formData: {
media: {
value: fs.readFileSync(__dirname + '/archivo.jpg'),
options: {
name: 'media',
filename: 'imagen.jpg',
contentType: 'image/jpg'
}
}
}
}, function(err, response, body) {
if(err) return console.log(err)
else request({
method: 'POST',
url: 'https://bash-street-boys-and-girls.com/api/statuses/update.json',
strictSSL: false,
auth: {
user: 'username',
pass: 'password'
},
agentClass: Agent,
agentOptions: {
socksPort: 9050
},
formData: {
status: 'Happy Day!!',
source: 'MyB0t',
media_ids: fastXmlParser.parse(body).rsp.media_id_string
}
}, function(err, response, body) {
if(err) return console.log(err)
else console.log(body)
})
})
}
pleroma()
Como podéis ver el bot es muy simple, hace primero un request con Pleroma para enviar la imagen y luego hace otro para publicar el estado con la imagen asociada. En GNUSocial la imagen se puede enviar en la misma petición. Diferencias en las distintas implementaciones que dan la posibilidad del software libre.
Esperemos que sigáis usando OStatus y las redes federadas que dan la libertad de expresión e información libre al mundo.
Hasta la próxima :-)
Que maravilla,una instancia completa con un montón de funcionalidades, por estudiar ;) gracias por compartirlo :P