Vous devez récupérer pour un projet les informations d'une vidéo Youtube, d'une photo Flickr ou Instagram en PHP ? Essayez la lib Essence qui sera parfaite pour vous !

Essence, c'est son p'tit nom, vous permet d'extraire tout un tas de données relatives à une URL. Par exemple, on peut récupérer facilement la miniature d'une vidéo Youtube à partir de son URL.

La lib utilise les protocoles oEmbed et OpenGraph pour aller chercher les infos.

Ainsi, Essence vous permet de récupérer les informations à partir des sites suivants :

Mais, vous pouvez bien entendu ajouter vos propres services assez facilement, à coup d'expressions régulières.

Passons à la pratique !

Installation

Rien de plus basique ici, on va passer par Composer. Si vous avez déjà un composer.json à la racine de votre projet, faites juste un :

composer require essence/essence

Sinon, passez d'abord par la création du composer.json via composer init tout en renseignant essence/essence lorsque le prompt vous demande une dépendance. Finissez par composer install pour récupérer les différents paquets.

Si vous ne voulez pas utiliser Composer, téléchargez l'archive du projet ici.

Quelques exemples

On va faire un script simple qui va permettre de récupérer les informations d'une vidéo Youtube, puis d'une image DeviantArt et enfin un statut Twitter.

Youtube

<?php
require 'vendor/autoload.php';

$Essence = new Essence\Essence();
$Media = $Essence->extract('https://www.youtube.com/watch?v=JZcTHl0Mdpk');
print_r($Media);

Le retour ($Media est un objet) est très intéresssant :

DeviantArt

C'est le même principe ici, on met juste l'URL à questionner en paramètre de la méthode extract :

<?php
require 'vendor/autoload.php';

$Essence = new Essence\Essence();
$Media = $Essence->extract('http://www.deviantart.com/art/Piled-up-with-water-367947087');
print_r($Media);

Ici, le retour est plus imposant (capture tronquée) :

Twitter

<?php
require 'vendor/autoload.php';

$Essence = new Essence\Essence();
$Media = $Essence->extract('https://twitter.com/TweetBoxBot/status/656740789263970304');
print_r($Media);

Comme vous pouvez donc le voir, extraire les données d'une URL est ultra simple avec Essence !

Comme le spécifie la documentation, Essence retourne par défaut plusieurs propriétés comme :

  • type
  • version
  • url
  • title
  • description
  • width
  • height
  • ...

La liste entière est disponible ici.

Ainsi, pour tester si une propriété existe, Essence fourni la méthode has() :

<?php
require 'vendor/autoload.php';

$Essence = new Essence\Essence();
$Media = $Essence->extract('http://www.deviantart.com/art/Piled-up-with-water-367947087');

if (!$Media->has('tags'))
    echo 'Pas de propriété "tags"';

Conclusion

Essence est donc un outil assez pratique et vraiment très simple à utiliser pour extraire des données relatives à des services. Je vous conseille de l'essayer et même de l'adopter pour vos projets !