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.