Publicar feed en Mastodon / Twitter
Descubrí a través 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 artículos que tienes publicados en tu web.
Así que después de leer su artículo y ver si yo podía hacer lo mismo, me lié la manta a la cabeza y al lío.
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, haré que se ejecute en el mismo servidor. Eso sí, también tienes que instalar:
usuari@debian:~$ pip install --user feedparser 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 ningún problema, a tu cuenta de Mastodon te llegará un artículo aleatorio de tu web.
Después de hacer las pruebas que creas oportunas, solo te quedará configurar el cron, para que se ejecute cuando tú 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 artículos, que a lo mejor cuestan mucho a que salgan. Sé que hay otro script, que lo que hace es publicar los últimos artículos creados. Pero eso lo tengo que estudiar.
También tengo en cuenta, que si lo hago 3 veces a la semana (publicar toot) crearé 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)
Luego, solamente tienes que añadir la siguiente línea para publicar el artículo en Twitter:
api.update_status(status=articulo)
Espero que te sirva tanto como me ha servido a mí. Y eso sí, no se te olvide darle las gracias a Carlos M por el increíble artículo en que me he basado yo.