Outils pour utilisateurs

Outils du site


dev:python:tootstream

Tootstream

Description

Tootstream est un client Mastodon écrit en python et utilisable dans un terminal.

Si vous ne connaissez pas Mastodon, il s'agit d'un réseau social acentré (ou décentralisé) fonctionnant peu ou prou sur le même principe que Twitter, à la différence près que vous disposez de plusieurs instances différentes, et que vous pouvez choisir où vous souhaitez vous inscrire (un peu comme l'e-mail, en fait).

Voici un exemple de capture d'écran:

www.art-software.fr_files_2017-10-12t132941.jpg

Et voilà ce que ça donne, en vidéo ^_^

Ce projet n'est pas de moi à la base, je n'ai fait que forker (dupliquer) un projet existant qui me plaisait beaucoup, en l'occurence magicalraccoon/tootstream. Vous pouvez également aller voir sur son github pour tester l'original, si cela vous intéresse (en plus il me semble qu'il y a un paquet dispo sur PyPI)

Installation

Ceci est un projet python 3, veillez donc bien à utiliser ce dernier (et non python 2 qui est parfois la version par défaut sur certains systèmes), sinon je ne peux pas assurer le fonctionnement de ce projet puisqu'il n'est absolument pas prévu pour fonctionner dessus. Dans certains cas vous devrez remplacer pip par pip3 et python par python3 (certaines distributions GNU/Linux utilisent encore python 2 par défaut)

Tout d'abord, vérifiez que vous disposez des paquets suivants sur votre système:

  • pip (ou python-pip)
  • setuptools (ou setup-tools)
  • git

Pour installer Tootstream, vous pouvez soit partir du code source, soit installer directement avec pip:

pip install --user git+https://github.com/Art-software/tootstream
# ou en système:
sudo pip install git+https://github.com/Art-Software/tootstream

Une fois cela fait, la commande tootstream est désormais disponible.

Si ce n'est pas le cas, c'est qu'il manque le dossier ~/.local/bin dans la variable $PATH. Vous pouvez alors, au choix :

  1. Ouvrir le fichier ~/.bashrc et y ajouter export PATH=$HOME/.local/bin:$PATH ;
  2. Ou bien utiliser la 2nde commande (sudo pip install).

Vous pouvez aussi cloner le dépôt git (si vous souhaitez faire des modifications par exemple):

git clone https://github.com/Art-Software/tootstream
cd tootstream
pip install --user --editable .

Mise à jour

Pour ensuite mettre à jour votre installation, il suffit de reproduire exactement la même commande, en ajoutant le paramètre --upgrade, ce qui donne dans la plupart des cas :

pip install --upgrade --user git+https://github.com/Art-Software/tootstream

Commencer à pouêter

Tapez maintenant la commande tootstream. Il vous sera demandé votre instance, votre adresse e-mail et votre mot de passe à la toute première connexion (ensuite le client génère un identifiant unique qui évite d'avoir à refaire cela):

$ tootstream
Which instance would you like to connect to ? eg: 'mastodon.social' mastodon.example.com
Welcome to tootstream! Two-Factor-Authentication is currently not supported. Email used to login: toto@google.com
Password: *****

Vous arrivez ensuite sur l'écran:

You are connected to mastodon.example.com
Enter a command. Use 'help' for a list of commands ; 'help <command>' for more info on any command.

[@Toto]: |

(dans l'exemple ci-dessus, votre handle complet est donc: @Toto@mastodon.example.com)

Par défaut, les identifiants du clients que le serveur lui attribue (ainsi que le nom de l'instance) sont stockés dans ~/.config/tootstream/tootstream.conf.

Lire des pouêts

À la volée

Pour lire votre timeline “home”, vous pouvez utiliser la commande home ou tl home, en précisant éventuellement le nombre de pouêts à afficher en une fois:

[@Toto]: tl home 3
  Michel @Michel@instance.com (id: 1)
  🔁:0 ★:0 1  10:10:00 (3 minutes ago)
  Prout !
  https://instance.com/@Michel/342541

  Jean @Jean@instance.truc (id: 2)
  🔁:0 ★:0 2  10:11:01 (2 minutes ago)
  Brrr..... je sais pas quoi écrire.
  https://instance.truc/@Jean/42652
  
  Michel @Michel@instance.com (id: 1)
  🔁:0 ★:0 3  10:12:25 (just now)
  In reply to @Jean@instance.truc:
  Brrr..... je sais pas quoi écrire.
  
  @Jean bin n'écris rien ;)
  https://instance.com/@Michel/342543

  [@Toto]: |
  • Michel: le “pseudo visible” de l'utilisateur
  • @Michel@instance.com: le “handle” (adresse) de l'utilisateur
  • (id: 1): l'identifiant de l'utilisateur, utile pour avoir des infos dessus, ou pour follow/unfollow
  • 🔁:0: Nombre de fois que le pouêt a été boosté
  • ★:0: Nombre de fois que le pouêt a été mis en favoris

Le 3e nombre sur la droite est le numéro du pouêt, qui est à préciser si vous souhaitez lire un thread entier (“déplier” le status, comme sur twitter) ou y répondre. Ensuite on a la date à laquelle le pouêt a été posté, avec une interprétation “humaine” entre parenthèse (pour simplifier).

L'url à la fin du pouêt est celle à laquelle ce dernier est publiquement accessible (si vous voulez envoyer un pouêt/thread à lire à quelqu'un d'autre, par exemple).

Pour lire vos notifications, utilisez la commande note.

Pour déplier un thread (un ensemble de messages qui se répondent), il faut utiliser la commande ``thread``en précisant le numéro du pouêt à déplier (le numéro en rouge à droite des symboles pour le boost et le fav)

Pour lire la timeline publique, c'est public (ou tl public), et la timeline locale à l'instance local ou tl local.
Seulement, cela ne récupère que les derniers pouêts, donc si vous vous absentez longtemps, vous risquez de manquer certains messages.

Automatiquement

Heureusement une api de streaming est arrivée sur Mastodon, ce qui permet de faire en sorte que ce soit le serveur qui vous envoie automatiquement les pouêts au fur et à mesure qu'ils sont publiés.
Il suffit alors au démarrage de l'application de lui demander de récupérer automatiquement les pouêts de la timeline home ou publique (ce n'est pas disponible pour la timeline locale à l'instance) avec:

[@Toto]: tl home stream
> started home streaming thread
ou

[@Toto]: tl public stream
> started public streaming thread

Pour voir à tout moment la quantité de pouêts que vous avez à lire, il suffit d'utiliser la commande queue:

[@Toto]: queue
public queue: 10 unread toots
local queue: <empty>
pin queue: <empty>
home queue: 2 unread toots

Pour lire les pouêts en attente, il suffit d'utiliser home / public comme auparavant (la commande pioche d'abord dans les pouêts non lus en local s'il y en a).

Si vous souhaitez supprimer des pouêts de la queue sans les lire (parce qu'il y en a trop, par exemple) vous pouvez utiliser la sous-commande prune de la commande queue, comme suit, en précisant optionnellement le nombre de pouêts à supprimer (sachant que cela retire d'abord les plus vieux):

[@Toto]: queue
home queue: 2 unread toots
public queue: 10 unread toots
local queue: <empty>
pin queue: <empty>

[@Toto]: queue prune:public:3
> Deleted 3 toots from public queue

[@Toto]: queue
home queue: 2 unread toots
public queue: 7 unread toots
local queue: <empty>
pin queue: <empty>

[@Toto]: queue prune:public
> Deleted 7 toots from public queue

[@Toto]: queue
home queue: 2 unread toots
public queue: <empty>
local queue: <empty>
pin queue: <empty>

Envoyer des pouêts

Lire des pouêts, c'est marrant, mais en écrire, c'est encore mieux. :)
Pour ce faire, il faut utiliser la commande toot, qui a plein d'options que l'on va voir au fur et à mesure.

Tout d'habord un exemple simple:

[@Toto]: toot Bonjour Mastodon !
You tooted:
  Toto @Toto (id: 42)
  🔁:0 ★:0 6  12:25:10 (just now)
  Bonjour Mastodon !
  https://mastodon.example.com/@Toto/4585452

Si vous voulez ajouter des paramètres, il faut intercaler -- entre ceux-ci et le texte.
Si vous voulez insérer un retour à la ligne, il faut écrire \n (ou \p si vous voulez en insérer deux).

Répondre

Par exemple, si vous voulez répondre à un pouêt, il faut utiliser le paramètre rep en précisant le numéro du pouêt à qui répondre (ici, c'est 4):

  Michel @michel@instance.com (id: 1)
  🔁:0  ★:0 4  12:25:11 (2 minutes ago)
  Qui aime le café ?
  https://instance.com/@michel/254254

[@Toto]: toot rep:4 -- Moi moi moi o//\nJ'en veux !!
You tooted:
  Toto @Toto@mastodon.example.com (id: 42)
  🔁:0  ★:0  5  12:27:42 (just now)
  In reply to @michel@instance.com:
  Qui aime le café ?
  @michel Moi moi moi o//
  J'en veux !!
  https://mastodon.example.com/@Toto/54454574

Comme vous pouvez le voir, la mention de l'utilisateur est ajoutée automatiquement.

Vous pouvez aussi en ajouter manuellement en commençant à taper le handle de l'utilisateur visé (ex: @michel@, si l'utilisateur vous suit ou que vous le suivez (ou qu'il a déjà pouêté) vous pourrez auto-compléter son nom avec la touche Tab.

Mettre un 'content warning'

Vous pouvez avoir envie (ou besoin) de placer un content warning sur votre pouêt. Pour ce faire, ajoutez le paramètre cw et la première ligne de votre pouêt sera la ligne d'avertissement (il faut donc insérer \n entre celle-ci et le reste du texte):

[@Toto]: toot cw -- ligne de cw\nTexte
You tooted:
  Toto @Toto@mastodon.example.com (id: 42)
  🔁:0  ★:0  6  12:28:42 (just now)
  __ligne de cw__
  Texte
  https://mastodon.example.com/@Toto/54454575

Comme vous le voyez, les pouêts contenant un content warning seront automatiquement dépliés, mais le texte d'avertissement sera séparé du texte et souligné (pour qu'il soit mis en valeur et permette de sauter le pouêt si nécessaire).

Choisir la visibilité

Par défaut, votre pouêt sera public, unlisted si vous répondez à un pouêt public ou direct si vous répondez à un DM. Mais vous pouvez avoir envie de manuellement créer un pouêt unlisted ou envoyer un DM à quelqu'un.

Pour ce faire ajoutez le paramètre vis avec la visibilité adaptée:

[@Toto]: toot vis:direct -- @michel@instance.com Coucou
You tooted:
  Toto @Toto@mastodon.example.com (id: 42)
  🔁:0  ★:0  7  12:29:42 (just now)
  @michel@instance.com Coucou
  https://mastodon.example.com/@Toto/54454576

Bien évidemment, l'url de pouêt ne sera ici pas consultable étant donné que le pouêt est un message direct dans le présent exemple.
C'est d'ailleurs un bon moyen de vérifier que ça fonctionne bien ;)

Les visibilités suivantes sont disponibles:

  • public: tout le monde verra votre pouêt, et il apparaîtra dans les timelines home, local et public des instances avec lesquelles la vôtre communique ;
  • unlisted: tout le monde peut consulter votre pouêt, mais il n'apparaîtra dans les timelines et/ou notifications qu'à ceux qui sont mentionnés ou en visitant votre profil ;
  • direct: ne sera visible qu'à ceux qui sont mentionnés (attention: Mastodon avait tendance avant la version 2.0 à envoyer les pouêts à toutes les instances quand même, c'est l'instance de l'autre coté qui devait respecter la visibilité1), donc votre pouêt risquerait d'être lu par d'autres instances ne respectant pas ce réglage, notamment les instances GNUSocial par exemple) ;
  • private: ne sera envoyé qu'aux personnes qui vous suivent.

Envoyer des media

Vous pouvez souhaiter envoyer des media avec vos pouêts, des images ou des vidéos par exemple.
Pour ce faire, il vous suffit simplement d'ajouter en paramètre “media:” suivi du chemin du fichier à poster.

Vous pouvez poster jusqu'à quatre media en un pouêt.

Par exemple, pour poster une image se trouvant dans /tmp/machin.jpg et /tmp/bidule.png:

[@Toto]: toot media:/tmp/machin.jpg media:/tmp/bidule.jpg -- Prout !
You tooted:
  Toto @Toto@mastodon.example.com (id: 42)
  🔁:0  ★:0  8  12:29:45 (just now)
  Prout !

  medias:
  > https://mastodon.example.com/system/media_attachments/files/000/071/787/original/machin.jpg
  > https://mastodon.example.com/system/media_attachments/files/000/071/788/original/bidule.png
  https://mastodon.example.com/@Toto/54454577

Découper ses pouêts

Pouêter c'est bien, mais parfois vous risquez de dépasser les 500 caractères…

Pour ne pas avoir à tout recommencer, vous pouvez intercaler “\n---\n” entre deux phrases, ceci servira simplement de marqueur pour indiquer à tootstream où découper.

Et vous pourrez ainsi poster directement un thread d'une seule commande :)

(Évidemment vous pouvez faire plus d'une découpe)

Voici un petit exemple:

[@Toto]: toot Bonjour Mastodon !\n---\nCeci est… un Thread !

  Toto @Toto (id: 42)
  🔁:0 ★:0 6  12:25:10 (just now)
  Bonjour Mastodon !
  https://mastodon.example.com/@Toto/4585452

  Toto @Toto (id: 42)
  🔁:0 ★:0 7  12:25:11 (just now)
  Ceci est… un Thread !
  https://mastodon.example.com/@Toto/4585453

Taper ses pouêts ailleurs

Écrire sur une ligne c'est déjà bien.

Mais pouvoir le faire dans un éditeur, c'est encore mieux !

Pour ce faire, vous pouvez utiliser la commande e à la place de toot.
Elle accepte tous les paramètres de cette dernière (cf. ci-dessus), mais vous ouvrira une fenêtre d'éditeur de texte pour que vous puissiez écrire votre pouêt ici à la place.

Pensez à configurer votre variable d'environnement $EDITOR convenablement (vous pouvez placer ceci dans le fichier ~/.bashrc le cas échéant : )

    export EDITOR="/usr/bin/nano"

Et vous ouvrira un fichier temporaire que vous pourrez remplir pour écrire votre (ou vos) pouêt.

De même que précédemment, si vous insérez une ligne ne contenant que “---”, cela permettra de découper en plusieurs pouêts au moment du post. :)

Découvrir des gens

Sur la première ligne des pouêts, vous verrez un “(id: <nombre>)” en mauve.
Ceci est l'id de l'utilisateur qui a envoyé le pouêt.

Cet id vous permettra d'avoir des infos sur cette personne avec info:

[@Toto]: info 1
Michel @michel@instance.com  id: 1
https://instance.com/@michel
32 statuses, 3 subscriptions, 5 followers
  Je suis michel !
info sans rien permet d'avoir un aperçu de votre profil. :)

Vous pouvez également consulter sa timeline avec user id:<numéro de l'utilisateur>:

[@Toto]: user id:1
Michel @Michel@instance.com (id: 1)
  🔁:0 ★:0 1  10:10:00 (2 hours ago)
  Prout !
  https://instance.com/@Michel/342541
	
  Michel @Michel@instance.com (id: 1)
  🔁:0 ★:0 3  10:12:25 (2 hours ago)
  In reply to @Jean@instance.truc:
  Brrr..... je sais pas quoi écrire.
	  
  @Jean bin n'écris rien ;)
  https://instance.com/@Michel/342543
	
  Michel @michel@instance.com (id: 1)
  🔁:0  ★:0 4  12:25:11 (10 minutes ago)
  Qui aime le café ?
  https://instance.com/@michel/254254

Vous pouvez utiliser follow ou unfollow suivi de l'id de la personne pour la suivre (ou ne plus suivre quelqu'un que vous suivez déjà).

De la même manière, mute et unmute suivi de l'id de la personne vous permettra de silencer ou dé-silencer quelqu'un.

Bloquer des personnes ou des domaines

De la même manière que (un)follow permet de suivre / oublier des gens, et (un)mute de les (dé)silencer, block permet de bloquer, débloquer des personnes ou des domaines entiers.

Pour bloquer une personne, utilisez block user :

  [@Toto]: block user 1
  > Blocked Michel (@Michel@instance.com).
  [@Toto]: unblock user 1
  > Unblocked Michel (@Michel@instance.com).

Pour un domaine tout entier, utiliisez à la place block domain :

  [@Toto]: block domain instance.com
  > Blocked domain instance.com
  [@Toto]: unblock domain instance.com
  > Unblocked domain instance.com

Pour lister les personnes bloquées, tapez simplement block sans arguments.

Dû à un bug ou un problème de compatibilité entre Mastodon >= 2.0 et Mastodon.py, à l'heure actuelle (c'est-à-dire Mastodon.py 1.1.1) il n'est pas possible de lister les domaines bloqués (Mastodon.py renvoie une erreur). :(

Reporter des pouêts abusifs

Si vous voyez des pouêts dont vous pensez qu'ils ne respectent pas les règles de votre instance, vous pouvez les reporter à l'administrateur, en utilisant la commande report.

Vous devez spécifier la liste des numéros des pouêts concernés, séparés par une virgule. Si vous voulez y adjoindre un commentaire, vous pouvez l'introduire avec --.

Exemple:

  [@Toto]: report 1,2 -- Explicit nsfw without tagging
  > Issued 1 report(s) affecting 2 toot(s) and 1 user(s), with comment: « Explicit nsfw without tagging »
  > Report id(s): 46

Suivre des gens

Pour suivre des gens dont vous n'avez pas l'id, vous pouvez utiliser la commande search suivie du terme à chercher.
Elle vous retournera les utilisateurs et tags qui correspondent à votre recherche.

Pour aller plus loin

Fonctions connexes

Utilisation d'un PAGER

Vous pouvez utiliser un pager pour lire tranquillement les timelines (home, public, local), les notifications, la timeline d'un utilisateur ou un thread.

Pour cela il suffit d'ajouter le paramètre less à n'importe laquelle de ces commandes (par exemple: taper tl home less au lieu de tl home), et cela affichera les pouêts dans le pager au lieu de directement.

Pour le configurer, utilisez la variable d'environnement $PAGER.

Ajoutez ceci dans le fichier ~/.bashrc:

export PAGER='/usr/bin/less -crfw'

Pour naviguer dans le pager, vous pouvez utiliser les flèches.
Pour retourner à tootstream, appuyez sur Q.

Si vous êtes dans une session tmux, le pager sera lancé depuis un nouvel onglet plutôt que sur l'onglet où se trouve tootstream, vous permettant de continuer à travailler sur autre chose.
Vous pouvez lancer autant d'onglets en parallèle que vous le souhaitez (pour lire la home timeline et la public timeline en même temps par exemple).

Épinglement de tags

Gestion du profil

Contribuer

1) ceci n'est plus vrai car il utilise désormais activitypub pour ce faire, mais les DMs n'arrivent alors plus aux instances non compatibles.
dev/python/tootstream.txt · Dernière modification: 2017-11-20 19:09 par electron