Pleroma Social

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 @lain@pleroma.soykaf.com 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 :-)

Compartir

1 Comentario

  1. Que maravilla,una instancia completa con un montón de funcionalidades, por estudiar ;) gracias por compartirlo :P

Deja una respuesta a puppetmaster Cancelar respuesta

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax