En el primer article vam veure com obtenir les entrades del blog amb la llibreria de Python 'feedparser' i com gestionar una per una dins d'un bucle 'for in', guardant en variables les dades que ens interessen per a publicar el tut a Mastodon.

El següent pas és veure si cada una de les entrades del blog ja han estat publicades a Mastodon i si no ho estan, guardar-les en un 'array' per a poder fer el tut. Entra en escena Postgresql.

Una de les utilitats del repositori de ghost2toot és el programa 'db-setup.py' que al executar-lo ens pregunta tres paràmetres: el nom de la base de dades, l'usuari amb permisos a Postgresql per a crear i accedir a aquesta base de dades i la url del RSS feed del nostre blog (en aquest cas recordem que és https://blog.mastodont.cat/rss).

Aquesta base de dades té una taula anomenada 'feeds' amb tres columnes: 'id', 'published' i 'tootid'. 'id' és la id del feed i ens servirà per mirar en la base de dades si l'entrada del blog ja ha estat publicada a Mastodon. A Python, la llibreria 'psycopg2' és la que ens permet fer el que vulguem amb una base de dades Postgresql. El bloc del codi que mira si una entrada ja ha estat publicada és aquest:

Es connecta a la base de dades que té la variable 'feeds_db' i amb l'usuari 'feeds_db_user' i executa el 'query':

'select id from feeds where id=(%s), (id,)

El que fa és que el que he explicat abans, cercar en la base de dades la id de l'entrada. Si no la troba ('if row == None') guarda amb 'append' les dades que ens interessen en cinc 'arrays':

blogfeeds_id.append(id)
blogfeeds_title.append(title)
blogfeeds_link.append(link)
blogfeeds_published.append(published)
blogfeeds_author.append(author)

Després de recorre totes les entrades gràcies al bucle 'for in' i guardar en les 'array' totes les que no s'han publicat ja passem a gestionar-les una per una de cara a publicar-les a Mastodon. Un bucle 'while' ens fa la feina i la variable del control del bucle és la famosa variable 'i' que inicialitzem amb valor zero. El bucle sap quantes entrades ha de publicar agafant la longitud d'una de les 'array', quaselvol, per exemple  'len(blogfeeds_id)':

Muntem la cadena del tut i la publiquem a Mastodon:

toottext = str(title)+'\n'
toottext += str(link)+'\n'
toottext += '\n'
toottext += "Autor: " + str("@")+str(author)
tootid = mastodon.statuspost(toottext, inreplytoid=None,)

Ja només falta guardar en la base de dades els valors de 'id', 'feed_published' i la 'id' del tut que tenim en la variable 'tootid' de dalt:

Amb només 100 línies de codi Python hem automatitzat la publicació a Mastodon de les entrades del blog amb programari Ghost.