Script de Python para publicar un Feed de forma aleatoria en Twitter y Mastodom
2021-08-16
Índice
- Publicando en Twitter
- Publicando en Mastodon
- Script final
- Programando el script
- Tweet/Toot con el último articulo publicado
Hoy veremos como crear un bot en Python para poder leer el Feed de un blog, seleccionar un articulo de forma aleatoria y publicarlo en Twitter o en Mastodon
Publicando en Twitter
Es necesario crearnos una aplicación de Twitter, para ello logueate en tu cuenta de Twitter, ve a https://apps.twitter.com, crea la aplicación y genera los tokens de acceso.
Instalar módulos necesarios
Vamos a necesitar de un par de módulos de python para poder parsear el feed del blog (feedparser
) y publicar en Twitter (twython
), doy por hecho dde que ya tienes instalado pip
en tu ordenador, sino es así, una rápida búsqueda por internet te dirá como hacerlo
pip install --user feedparser twython mastodon
Importar Módulos
Creamos un nuevo fichero de Python, lo podemos llamar bot.py por ejemplo, y empezamos cargando los módulos necesarios para nuestro script
import feedparser
import random
from twython import Twython
from mastodon import Mastodon
Keys API Twitter
Durante el proceso de creación de la aplicación de Twitter, en el primer paso, obtuviste las keys de la API de Twitter y tokens de acceso de tu aplicación
Cargamos los valores de la API diccionario dict :
CONSUMER_KEY = "xxxxxxxxx"
CONSUMER_SECRET = "xxxxxxxxx"
ACCESS_KEY = "xxxxxxxxx"
ACCESS_SECRET ="xxxxxxxxx"
Obteniendo articulo aleatorio del Feed
Configuramos la dirección de la fuente RSS del blog a parsear
feed = 'https://elblgodelazaro.org/index.xml'
Utilizando el módulo feedparser
analizamos y almacenamos el contenido del feed en el objeto d
d = feedparser.parse(feed)
Extraemos la longitud del feed y aleatoriamente seleccionamos un artículo.
feedlen = len(d['entries'])
num = random.randint(0,feedlen)
Inicializa la API de Twitter
Inicializamos la API de Twitter y escribimos un estado que anexa la información del feed analizado.
api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)
status_text = d['entries'][num]['title'] + '\n' + d['entries'][num]['link']
articulo = ("Recordando artículos publicados:" +'\n' + status_text)
api.update_status(status=articulo)
Publicando en Mastodon
Si tambión quieres publicar el artículo obtenido anteriormente en la red Mastodon, al igual que antes, vas a necesitar del módulo de python Mastodon
, para instalarla, pip install --user masdoton
.
Tambión necesitaremos crear una aplicación en Mastodon, igual que hicimos en Twitter y obtener sus correspondientes tokens
Ahora, simplemente añade el siguiente código al script, sustituyendo https://mastodon.social/
y ‘xxxxxxx’ por la url y el token de tu aplicación Mastodon
from mastodon import Mastodon
# Token y url de la Instancia
mastodon = Mastodon(
access_token = 'xxxxxxx',
api_base_url = 'https://mastodon.social/'
)
mastodon.status_post(articulo)
Script final
El script final quedará de la siguiente forma:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# script que lee el feed rss de un blog y publica un articulo
# de forma aleatoria en twitter y mastodon
# Tienes que tener instaladas las librerias feedparser,
# Twython, Mastodon
# Autor: Carlos M.
# https://elblogdelazaro.org
# Llama a los modulos Python
import feedparser
import random
from twython import Twython
# Llamando a las llaves del Diccionario
CUSTOMER_KEY = 'xxxxxxxxxxxxxxx'
CUSTOMER_SECRET = 'xxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxx'
ACCESS_TOKEN_SECRET = 'xxxxxxxxxxxxxxxxxxx'
# Seleccionamos el Feed
feed = 'https://elblogdelazaro.org/index.xml'
# Parseamos el Feed
d = feedparser.parse(feed)
# Extrae la longitud del Feed y aleatoreamente selecciona un articulo
feedlen = len(d['entries'])
num = random.randint(0, feedlen)
# Inicializa la API de Twitter, escribe el nuevo estado y salimos
api = Twython(CUSTOMER_KEY, CUSTOMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
status_text = d['entries'][num]['title'] + '\n' + d['entries'][num]['link']
articulo = ("Recordando artículos publicados:" + '\n' + status_text)
api.update_status(status=articulo)
# Publica en mastodon
# Token y url de la Instancia
mastodon = Mastodon(
access_token = 'xxxxxx',
api_base_url = 'https://mastodon.social/'
)
mastodon.status_post(articulo)
Programando el script
Podemos utilizar cron
para automatizar la publicación, por ejemplo, si quiero publicar los lunes, miórcoles, viernes, sábado y domingo a las 09 horas un articulo aleatorio del blog y otro a las 18:00 horas:
0 9,18 * * 2,3,4,5,6,0 /usr/bin/python /home/carlos/bin/ebddl2tweet.py
Tweet/Toot con el último articulo publicado
Una vez visto todo el proceso, si ahora deseas mandar un toot o tweet cada vez que publiques un nuevo artículo en tu blog basta crear un nuevo fichero python con el siguiente código:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# script que lee el feed rss de un blog y publica un articulo
# de forma aleatoria en twitter y mastodon
# Tienes que tener instaladas las librerias feedparser,
# Twython, Mastodon
# Autor: Carlos M.
# https://elblogdelazaro.org
# Llama los modulos Python
import feedparser
from twython import Twython
from mastodon import Mastodon
# Llamando a las llaves del Diccionario
CONSUMER_KEY = "xxxxxxxxx"
CONSUMER_SECRET = "xxxxxxxxx"
ACCESS_KEY = "xxxxxxxxx"
ACCESS_SECRET ="xxxxxxxxx"
# Seleccionamos el Feed
feed = 'https://elblogdelazaro.otg'
# Parseamos el Feed
d = feedparser.parse(feed)
# Inicializa la API de Twitter, escribe el nuevo estado y salimos
# d['entries'][0] es el último articulo publicado
api = Twython(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_KEY,ACCESS_SECRET)
status_text = d['entries'][0]['title'] + '\n' + d['entries'][0]['link']
articulo = ("Recordando artículos publicados:" +'\n' + status_text)
api.update_status(status=articulo)
# Publica en mastodon
# Token y url de la Instancia
mastodon = Mastodon(
access_token = 'xxxxxx',
api_base_url = 'https://mastodon.social/'
)
mastodon.status_post(articulo)
Sólo quedaría programarlo o ejecutarlo a la vez que publiques un nuevo articulo
Espero que te haya gustado, pasa un buen día. 🐧