Comment récupérer les vidéos d’une chaîne YouTube sur son site avec l’API YouTube Data

L’un de nos clients alimente régulièreYoutubement sa chaîne Youtube, ll était donc donc temps d’automatiser la récupération en php de l’ensemble des vidéos sur le site web tout en conservant la présentation.

Nous avons pour cela utilisé la YouTube Data API : une API qui crache du JSON :(structure de données javascript) https://developers.google.com/youtube/v3/?hl=fr

Côté php, google propose en beta la Google API Client Library for PHP https://developers.google.com/api-client-library/php/?hl=fr
Il s’agit d’une librairie assez peu documenté permettant d’accéder à l’ensemble des API google et pas uniquement à Youtube.

Les outils sont choisis, maintenant la mise en musique en 4 mouvements :

1) Etape 1 : le flux de vidéos est public, donc pas besoin d’authentification OAuth 2.0, il suffit d’utiliser une clé publique sur https://console.developers.google.com
Cette clé permet à google de comptabiliser les accès et mettre en oeuvre les quotas.
L’api youtube est limitée, en offre gratuite à 50 000 000 unités/jour et à 3 000 requêtes par seconde.

2) Etape 2 : utilisation de l’API Google Google_Client et déclaration de la clé publique :

$client = new Google_Client();
$client->setDeveloperKey('maclé');

3) Etape 3 : utilisation de l’api youtube pour récuperer les vidéos de la playlist « uploads »

$youtube = new Google_Service_YouTube($client);
$m = $youtube->playlistItems->listPlaylistItems('snippet', array('playlistId'=>'id du channel youtube upload', 'maxResults'=>50));

4) Parcours et affichage des vidéos

$videos = $m->getItems();
if ($videos) foreach($videos as $video) {
echo $video->snippet['title'];
...
}

Afin d’éviter d’appeler à nouveau l’api à chaque chargement de page, nous avons utiliser notre mécanisme de cache de page.

Pour voir le résultat sur Label Art : http://www.label-art.fr/cmt-videos

Partager :

Laisser un commentaire

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