TootoPHP : Récupérez vos Pouets de Mastodon en PHP

tootophp

Je n’ai pas encore parlé de Mastodon. Pas que je m’y suis inscrit tard non, au contraire même. J’aime bien, et surtout, ça fait renaitre chez moi l’envie du libre. J’essayerai de reparler d’ailleurs des changements que je suis en train d’opérer plus tard. Bref, aujourd’hui je vais vous présenter un des mes petits projets : TootoPHP.

Attention : Cet article traite d’une ancienne version de TootoPHP. Référez-vous à la documentation fournie sur le repo TootoPHP sur Framagit.

TootoPHP : Ma contribution à Mastodon

En lisant des articles sur Mastodon, notamment sur Le Journal Du Hacker, j’ai trouvé pas mal de code pour récupérer les Pouets, ou pour les poster sur Twitter etc, toujours en Python. Mais à ce jour, je n’ai rien trouvé de tel pour PHP.
J’avoue que ça me surprend, mais Mastodon étant codé en Ruby, plus rien ne m’étonne. *Joke*

En passant, remarquez que j’ai inséré un bouton dans la sidebar pour me suivre sur Mastodon

Aussi, j’ai voulu participer à mon niveau à l’effort de guerre, et c’est pourquoi j’ai créé TootoPHP.

Cette classe PHP permet de récupérer les derniers Pouets (ou Toots, je ne suis pas sectaire ) d’un compte sur une instance Mastodon.

La source est disponible ici : TootoPHP sur Framagit.

Comment ça fonctionne ?

Chaque utilisateur d’une instance de Mastodon possède un flux Atom disponible à l’adresse suivante : https://instance/users/name.atom

Comme ce type de flux n’est ni plus ni moins qu’un format XML, il suffit de parser ce fichier et d’en extraire les informations qui nous intéressent.
Bien entendu, étant donné que ce fichier est public, seuls les pouets publics seront présents.

Testons ça !

Je vous laisse récupérer la source de la classe TootoPHP.

Voyons comment instancier cette classe :

<?php

require 'TootoPHP.php';

$tooto = new TootoPHP('mastodon.xyz', 'maxk');

if ($tooto->on_error) die("L'utilisateur ou l'instance n'existe pas.");

A la création de l’instance, il faut spécifier 2 paramètres : L’instance et le pseudo de l’auteur des pouets à récupérer.
A l’issue, on peut faire un check sur l’attribut

on_error
. Si le résultat est
true
, c’est que le flux n’a pas été trouvé. Sinon on peut continuer.

A partir de ce moment, plusieurs informations sur l’auteur sont disponibles via les attributs suivants :

$tooto->uri // URL du profil de l'utilisateur

$tooto->name // Pseudo de l'utilisateur

$tooto->email // Mail Mastodon de l'utilisateur.
// Il faut que je m'intéresse à ça :)

$tooto->summary // Description de l'utilisateur

$tooto->alternate // URL du profil (encore)

$tooto->header // Bannière de fond de l'utilisateur

$tooto->avatar // Avatar de l'utilisateur

Récupérer les Pouets

Pour récupérer les pouets, la classe dispose d’une simple fonction n’acceptant qu’un argument facultatif :

$toots = $tooto->getToots(15);

Ici, on indique qu’on souhaite récupérer 15 entrées (toots). Si aucun argument n’est fourni, 5 entrées seront retournées.

Ne reste plus qu’à exploiter les données, retournées dans un tableau :

Exploit du tableau

Le tableau retourné contient ainsi une ou plusieurs entrées, qui sont elles-mêmes des tableaux associatifs.
Voici la liste des clés disponibles :

published
: Timestamp de la date et heure où le pouet a été posté
updated
: Timestamp de la dernière modification du post
title
: Titre du post (généralement ‘New status by name‘)
content
: Contenu du toot
pic
: Cas particulier (il en fallait un ^^). Cette valeur est un tableau contenant les URL de toutes les images postées dans le post.

Voyons comment utiliser cela :

foreach ($toots as $entry) {
    echo date("F j, Y, g:i a", $entry['published']);
    echo $entry['content'];
    foreach ($entry['pic'] as $pic) {
        echo '<img src="' . $pic . '" />';
    }
}

Oui je sais ça fait dégueux, mais mettez-y du votre aussi.
Avec un peu de balises et de CSS il y a moyen de se faire un petit widget pour votre blog

Alors, pas facile tout ça ?

L’article TootoPHP : Récupérez vos Pouets de Mastodon en PHP est apparu en premier sur Max-Koder.

Vus : 308
Publié par Max Koder : 16