Vos flux RSS sur le réseau social Mastodon avec le bot Feed2toot

Le nouveau réseau social décentralisé et basé sur un logiciel libre Mastodon fait le buzz et le nombre de membres de cette fédération a explosé. Vous avez envie de relayer votre travail sur ce réseau, par exemple vos nouveaux billets de blog grâce à votre flux RSS. Dans ce cas le nouveau bot Feed2toot est fait pour vous!

Feed2toot relaie vos flux RSS vers Mastodon avec plein de fonctionnalités disponibles:

  • il gère plusieurs flux RSS comme source
  • un système de filtres à partir de mot-clés permet d’envoyer ou non vers Mastodon une entrée du flux RSS
  • une gestion intelligente des mots-clés extraits des flux RSS rend vraiment pertinente leur utilisation avec Mastodon

Mais pour la suite de ce billet nous partions sur un exemple simple.

mastodon

 

Publier automatiquement vos billets de blog sur Mastodon

Imaginons que vous avez un chouette blog et que vous voulez créer automatiquement un mini-message à publier sur le réseau Mastodon contenant le titre et le lien de votre nouveau billet de blog.

Commençons par installer Feed2toot:

# pip3 install feed2toot

Créons maintenant un utilisateur dédié, un répertoire /etc/feed2toot pour stocker la configuration et /var/lib/feed2toot/ pour stocker le cache de Feed2toot :

# adduser --home /var/lib/feed2toot --gecos "" feed2toot
# mkdir -p /etc/feed2toot/credentials /var/lib/feed2toot/
# chown -R feed2toot:root /etc/feed2toot /var/lib/feed2toot

Nous allons maintenant générer les autorisations nécessaires pour que Feed2toot puisse envoyer depuis votre compte des toots. Feed2toot utilise pour cela une commande dédiée :

$ register_feed2toot_app

Répondez simplement aux questions posées. Suite à cela deux fichiers feed2toot_usercred.txt et  feed2toot_clientcred.txt seront générés et à spécifier dans la configuration de Feed2toot.

$ cp feed2toot_usercred.txt feed2toot_clientcred.txt /etc/feed2toot/credentials/

Écrivons maintenant le contenu suivant dans le fichier de configuration /etc/feed2toot/feed2toot.ini :

[mastodon]
instance_url=https://mastodon.social
user_credentials=/etc/feed2toot/credentials/feed2toot_usercred.txt
client_credentials=/etc/feed2toot/credentials/feed2toot_clientcred.txt

[cache]
cachefile=/var/lib/feed2toot/feed2toot.db

[rss]
uri=https:/carlchenet.com/feed
tweet={title} {link}

[hashtaglist]
several_words_hashtags_list=/etc/feed2toot/hashtags.txt

Par sécurité changeons les droits de ce fichier :

# chmod 640 /etc/feed2toot/feed2toot.ini

Parfait, Feed2toot est maintenant mis en place. Si vous avez auparavant déjà publié manuellement certaines entrées de votre RSS, il vaut mieux pour vos utilisateurs remplir le cache de Feed2toot sans ré-envoyer les dernières entrées en question sur Mastodon. Il suffit pour cela d’utiliser la commande suivante :

# su - feed2toot
$ feed2toot --populate-cache -c /etc/feed2toot/feed2toot.ini

Si vous publiez un nouveau billet de blog, il suffira maintenant de passer la commande suivante pour automatiquement créer un toot avec son titre et son lien ainsi que tous les mots-dièse associés à votre billet (dans la limite des 500 caractères d’un toot bien sûr) :

$ feed2toot -c /etc/feed2toot/feed2toot.ini

Bien sûr cette étape manuelle est un peu fastidieuse. Tout-automatiser-est-mon-crédeau ! Donc nous allons ajouter la commande précédente dans votre fichier /etc/crontab avec la ligne suivante :

*/60 * * * * feed2toot feed2toot -c /etc/feed2toot/feed2toot.ini

Une fois par heure Feed2toot vérifiera si de nouvelles entrées de votre blog sont apparues et le cas échéant les publiera sur Mastodon. On peut lui dire merci !

Pour aller plus loin avec Feed2toot

L’exemple ci-dessus représente un cas typique d’utilisation mais il est possible d’aller beaucoup plus loin avec Feed2toot sur ce que vous souhaitez voir apparaître sur le réseau social Mastodon en fonction de filtres que vous allez appliquer à vos différentes entrées RSS.

Plus d’informations sur Feed2toot avec :

… et enfin

Si vous utilisez Feed2toot, n’hésitez pas à donner via ma page Liberapay pour soutenir mon travail dans le Libre (ce projet et les autres), même à hauteur de quelques centimes par semaine 😉 Mes adresses Bitcoin et Monero sont également disponibles sur cette page.

10 thoughts on “Vos flux RSS sur le réseau social Mastodon avec le bot Feed2toot

  1. Merci pour ce script.
    A quoi sert :
    [hashtaglist]
    several_words_hashtags_list=/etc/feed2toot/hashtags.txt

    Je ne comprends pas vraiment en fait 🙂

    • Salut, en fait il y a une possible incompatibilité entre les mots-clé provenant de ton flux RSS et ceux attendu par Mastodon, par exemple si ton mot-clé est en fait composé de deux mots, comme « open source » ou « free software » mais aussi quand un tiret existe comme « auto-hébergement ». Ce fichier permet de spécifier différentes expressions (une par ligne) qui indique à Feed2toot de considérer telle ou telle expression comme un mot-dièse côté Mastodon et le transformer pour qu’il apparaisse correctement côté Mastodon.

  2. @postblue : si j’avais vu, mais son programme est très simple et ne poste vers Mastodon que le titre et le lien de chaque entrée RSS => https://github.com/Gargron/rss-to-mastodon/blob/master/lib/rss_to_mastodon/runner.rb

    Mon programme est beaucoup plus complet, tu peux définir toi-même les contenus du RSS que tu veux poster (titre, lien, commentaires, contenu,…), faire du pattern matching pour choisir les entrées sur les contenus que tu veux poster en fonction de la catégorie, il gère intelligemment la transformation des mots-clés du RSS vers les hashtags Mastodon, etc.

    Feed2toot est en fait un fork de Feed2tweet, un de mes programmes qui faisait la même chose pour Twitter, avec 84 étoiles Github et déjà en version stable 1.0. Ré-utiliser le code existant, c’est bien 😉

  3. Super ! Mais si on veut faire quelque chose de plus complet que titre+lien on dépasse parfois 500 caractères ; alors il faut couper le texte sinon Mastodon rejette le toot.

    Pour ça j’ai fait ce patch :
    « `
    diff –git a/feed2toot/addtags.py b/feed2toot/addtags.py
    index b84473d..8877a83 100644
    — a/feed2toot/addtags.py
    +++ b/feed2toot/addtags.py
    @@ -30,8 +30,9 @@ class AddTags(object):

    def main(self):
     »’Main of the AddTags class class »’
    – maxlength = 500
    + maxlength = 400
    shortenedlinklength = 23
    + self.tweet = self.tweet[0:maxlength]
    tweetlength = len(self.tweet)

    # sort list of tags, the ones with the greater length first
    diff –git a/feed2toot/filterentry.py b/feed2toot/filterentry.py
    index bf27ffe..675faa7 100644
    — a/feed2toot/filterentry.py
    +++ b/feed2toot/filterentry.py
    @@ -43,6 +43,8 @@ class FilterEntry(object):
    if i not in self.entry:
    sys.exit(‘The element {} is not available in the RSS feed. The available ones are: {}’.format(i, [j for j in self.entry]))
    # for the case if no pattern at all is defined
    + if len(self.entry[i]) > 350:
    + self.entry[i] = ‘%s…\n’ % self.entry[i][0:300]
    if not self.options[‘patterns’] and not self.byrsspatterns and not self.rssobject:
    self.matching[i] = self.entry[i]
    # global filter only
    « `

    Il faudrait aussi pouvoir mettre des sauts de ligne, mais j’ai pas trouvé comment.

  4. Merci pour ce travail !

    Est-il possible d’envoyer des toot à partir de plusieurs comptes Mastodon ?
    Par exemple pour programmer un flux RSS différent par compte ?

    • Bob : un fichier de configuration de Feed2toot prend un ou plusieurs RSS en entrée et toot vers un et un seul compte. Il te faudra donc plusieurs fichiers de configuration pour tooter vers différents comptes Mastodon. Ensuite tu peux juste lancer $ feed2toot -c /etc/feed2toot/ et il va trouver tous les fichiers .ini dans le répertoire tout seul comme un grand (normalement).

  5. tu pourrais ajouter une option pour le content warning. genre apres le titre et le link, pour la description . ou en fonction de certains tags.

    • muarf : oui, ce serait potentiellement une bonne fonctionnalité. Je n’en ai pas immédiatement besoin donc je ne vais pas la développer moi-même, mais je relirais avec plaisir une PR 😉

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *