Publicar feed en Mastodon / Twitter

Nov 14, 22

Descubri a traves del Blog de Lazaro, que si tienes cuenta en Mastodon, quien no tiene cuenta ahora tal como van las cosas en Twitter, que puedes enviar de forma aleatoria alguno de los articulos que tienes publicados en tu web.

Asi que después de leer su articulo y ver si yo podia hacer lo mismo, me lie la manta a la cabeza y al lio.

Lo primero, es tener una cuenta y después tienes que crear un aplicación en Mastodon de igual forma que se puede crear en Twitter ( explicación más adelante ).

Aprovechando que en el servidor ya tengo Python instalado, hare que se ejecute en el mismo servidor. Eso si, también tienes que instalar:

   usuari@debian:~$ pip install --user feddparser mastodon

Para que Python pueda realizar el tratamiento del fichero xml.

Una vez que ya tienes la aplicación creada, tienes que crear un fichero en Python que tiene que tener la siguiente estructura:

   #!/usr/bin/env python
   # -*- coding: utf-8 -*-
 
   # el fitxer original es de Carlos M. ( https://elblogdelazaro.org )
 
   # Tens que tindre instalats les llibreries feedparser, Mastodon
 
   # Realitzem la crida als moduls de Python
   import feedparser
   import random
   from mastodon import Mastodon
 
   # Reallitzem la crida a les claus del Diccionari
   CUSTOMER_KEY = 'xxxxxxxxxxxxxxx'
   CUSTOMER_SECRET = 'xxxxxxxxxxxxxxxxx'
   ACCESS_TOKEN = 'xxxxxxxxxxxx'
   ACCESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxx'
 
   # Informem de l'adreça del feed
   feed = 'tu dirección web hacia el feed.xml'
 
   # Descodifiquem el feed ( arxiu XML )
   d = feedparser.parse(feed)
 
   # Obtenim la longitud del feed i aleatoriament seleccionem un article
   feedlen = len(d['entries'])
   num = random.randint(0, feedlen)
 
   # Iniciem l'API de Mastodon, i escribim l'estat
   status_text = d['entries'][num]['title'] + '\n' + d['entries'][num]['link']
   articulo = ("Recordando artículos publicados:" + '\n' + status_text)

   # Token y url de la Instancia
   mastodon = Mastodon(
     access_token = 'XXXXXXXXXXXXXXXXXXXXXXX',
     api_base_url = 'https://mastodon.online/'
   )
   # Publiquem a Mastodon
   mastodon.status_post(articulo)

Lo que tienes que tener en cuenta, es informar correctamente de:

  • CUSTOMER_KEY
  • CUSTOMER_SECRET
  • ACCESS_TOKEN
  • ACCESS_TOKEN_SECRET
  • feed

Una vez, tengas el fichero creado, si quieres hacer pruebas, tienes que hacerlo de la siguiente manera :

   usuari@debian:~$ python3 nombreDelArchivo.py

Entonces, si no has tenido ningun problema, a tu cuenta de Mastodon te llegara un articulo aleatorio de tu web.

Después de hacer las pruebas que creas oportunas, solo te quedara configurar el cron, para que se ejecute cuando tu quieras.

Yo lo tengo a que lo haga una vez a la semana, pero me estoy replanteando cambiarlo a que lo haga 3 veces por semana, porque a veces, añado articulos, que a lo mejor cuestan mucho a que salgan. Se que hay otro script, que lo que hace es publicar los ultimos articulos creados. Pero eso lo tengo que estudiar.

También tengo en cuenta, que si lo hago 3 veces a la semana (publicar toot) creare muchos mensajes, pero lo que también se puede hacer, es configurar Mastodon, para que elimine todos los toot con más de 6 meses de antigüedad (o menos).

Para la configuración del CRON lo tengo de la siguiente manera:

   @weekly /usr/bin/python3 /home/tu_usuario/lugar_donde_tengas_el_script/botMastodonPythonRss.py

En el caso de que lo quisieras hacer funcionar en Twitter tienes que tener en cuenta las siguientes modificaciones al archivo de Python:

   # En vez de usar la libreria "Mastodon" de Python, tienes que usar "Twython"
   from twython import Twython

   api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)

Y luego, solamente tienes que añadir la siguiente linea para publicar el articulo en Twitter:

   api.update_status(status=articulo)

Espero que te sirva tanto como me ha servido a mi. Y eso si, no se te olvide darle las gracias a Carlos M por el increible articulo en que me he basado yo.

Referencia