Aujourd'hui nous allons regarder de plus prêt, comment vous pouvez intégrer sur une page web, un live ou une vidéo pré-programmée par son utilisateur/diffuseur sur Youtube, en allant rechercher la vidéo en elle-même, mais aussi toutes les métas données qui lui sont rattachées. Le principe n'est pas très compliqué, mais il faut savoir où chercher l'information dans l'API de Youtube ! J'ai fouillé la doc de l'API Youtube pour vous.

La requête est de la forme :

https://www.googleapis.com/youtube/v3/videos?part=snippet&liveStreamingDetails&id=F25G5koi1F8&key=votreClefAPI

Détaillons cette ligne :

  • https://www.googleapis.com/youtube/v3/videos : URL de base pour effectuer cette fonction

  • part=snippet,live : quel type de données sont elles à renvoyer (je vous renvoie à la doc Google pour comprendre. Attention : jusque maintenant, nous avons essentiellement travaillé avec le paramètre snippet. Ici, il faut en + rajouter le paramètre liveStreamindDetail, après une virgule.)

  • Id : identifiant du flux en streaming que vous souhaitez récupérer

  • key : votre clef API personnelle

 

Une fois la requête lancée, l'API va vous retourner toutes les informations nécessaires à l'intégration de votre stream une une page web.
Mais pour pouvoir intégrer votre vidéo, il faut récupérer l'ID de la vidéo (enfin du live) qui est souvent passé dans l'URL sur la plateforme Youtube.
Reprenons, pour clarifier la situation, les étapes à réaliser, avant que nous nous plongions dans le code :

1. Tester si l'URL contient l'ID de la chaîne

2. Si non, on affiche un message d'erreur. Si oui, on questionne l'API sur le prochain live prévu par la chaîne de cette façon :

https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=ID_DE_LA_CHAINE_INTERROGEE&type=video&eventType=upcoming&key=MA_CLEF_API

L'API retourne à l'utilisateur un flux JSON qui contient l'ID du stream qui vous intéresse. Dans notre cas, partons du principe que nous ne travaillerons que sur le premier prochain streaming programmé, mais il est possible de travaille sur TOUS les streams retournés puisqu'ils le sont dans la réponse à la requête http.

Nous extrayons donc, à ce moment l'id de la vidéo, que nous allons réinjecter directement dans une autre requête sur l'API de Youtube afin de récupérer les détails de la video :

https://www.googleapis.com/youtube/v3/videos?part=snippet&liveStreamingDetails&id=VIDEOIDkey=MACLEFAPI;

Cette requête va retourner un flux JSON que nous allons parser. Pour des raisons de facilités à mon goût, je colle tous les résultats dans un tableau (avec le paramètre TRUE de la fonction json_decode) que je parcours.

 

PARCOURS DU TABLEAU

 

A chaque ligne du tableau trouvée, j'extrais le titre, la date du prochain live, et l'id de la vidéo, ceci me permettant de reconstituer l'Iframe dans laquelle je vais intégrer la vidéo.

A des fins d'ergonomie pour l'utilisateur, à l'aide d'expression régulière, je transforme toutes les url contenues dans le texte descriptif de la vidéo que je récupère, afin d'en reconstituer des liens cliquables, et j'en profite pour transformer tous les retours chariot en tag html <br>.

Pour finir, toujours à l'aide d'expressions régulières, je transforme toutes les chaînes symbolisant des mots-dièse (hashtags en anglais) en liens cliquables de recherche sur youtube.