Aujourd'hui nous allons faire un petit tour d'horizon de l'utilisation des API de Youtube, un groduit Google désormais (et oui, Youtube n'a pas toujours appartenu à Google, Google a finalisé son rachat le 9 octobre 2006)

La problématique

Youtube, comme tous les services que je vous propose ici, possède son lot d'API plutôt sympas d'ailleurs. Comme à mon habitude, je ne vous montrerai pas TOUTES les API de youtube, il y en a beaucoup, beaucoup trop pour tout détailler, mais quelques exemples qui vous permettront d'êre autonome sur l'ensemble des API proposées par ce service. Toutes ces API sont désignées par Google comme des Activités (j'en profite pour vous spécifier la terminologie exacte utilisée par la société de Larry Page) que vous pourrez retrouver sur la page des activités youtube.

Le service interrogé : youtube

Le service interrogé est donc Youtube, l'accès aux API d'interrogations s'effectue grâce à l'URL https://www.googleapis.com/youtube/v[N]/, n (sans les crochets, cela va de soit) étant un chiffre représentant la version de l'API à utiliser. A l'heure où j'écris ces lignes, n vaut 4, l'appel aux API s'effectue donc par l'URL : https://developers.google.com/youtube/v3/

Pour le reste des choses à connaître, j'aurais tendance à dire "tout est dans la doc" mais, en disant ceci, l'objet de mon article n'a plus aucun sens. Voyons donc quelques exemples afin de mieu cerner l'API. Pour l'instant, je n'ai volontairement pas effecturé d'upload de vidéo par les API mais ca viendra sûrement. Nous allons donc partir d'une vidéo existante, déjà uploadée sur Youtube, on l'identifiera bien évidemment par la référence qui est placée dans l'URL de la video sous la forme d'une chaine absconse, au hasard : UulkGrJjOM8 (finalement est-ce un hasard ?) pour la vidéo accessible par l'URL https://www.youtube.com/watch?v=UulkGrJjOM8

Avant de commencer la pratique, n'oubliez pas de vous créer une clef API. Pour ceci, connectez vous dans un premier temps à votre compte google, ceci vous permettant de vous authentifier auprès des services Google, puis rendez vous sur la page d'obtention d'une clef. Remplissez et valider le formulaire, la clez API vous est affectée. Sauvegardez là bien, nous allons l'utiliser.

Comment faire ?

Rentrons désormais dans le vif du sujet, car c'est ce que vous attendez tous. Commençons par aller sur la doc de la page des activités dont je vous ai mis le lien dans mon introduction. Dans la colonne de gauche, vous avez toutes les actions possibles via les API, classées par "thématique" si l'on puis dire ainsi (Activities, Caption, ChannelBanners...). Nous allons commenceer simplement par une recherche. Pourquoi une recherche est-elle qualifiée de simple ? Car vous ne demandez à Google simplement de lancer une requête avec un seul paramètre (la chaine recherchée). En fait il y en a deux :

  • Votre clef API
  • La chaine recherchée

Afin d'éclaircir mes explications ultérieures, ayez à l'esprit que la clef API est toujours à passer dans l'url, même si je ne le mentionne pas dans mes explications.

Le paramètre part=snipset spécifie à l'API de retourner TOUTES les propriétés qu'elle peut nous renvoyer. Je vous conseille donc ce paramètre, du moins pendant la phase de développement.

Je me permets de vous rappeler que l'ordre des paramètres dans l'URL n'au AUCUNE importance

Dernière petite information pour mieux comprendre la suite, ayant préparé ce tutoriel sur un poste Linux, pour tester mes commandes, j'ai utilisé la commande curl de la façon classique "curl commande". Si vous n'avez pas cette commande à disposition (est-elle présente sou windows ? Elle est présente sous MacOS en mode Terminal !), lancez sulplement la commande (sans "curl") dans un navigateur, en collant l'URL dans la barre d'adresse..

Recherchons des vidéos de chats

Dans mes exemples suivants, lorsque vous écrivez votre clef API, ne mettez pas les crochets que j'ai mis pour suivre la convention normale d'écriture !
Oui, moi aussi je sais être original :-)

la commande est
curl "https://www.googleapis.com/youtube/v3/search?key=[VOTRE CLEF API]&part=snippet&q=cats"

ATTENTION : il est fort probable que vous soyiez amené à un moment ou à un autre de faire une recherche sur une chaine de caractères. Là où dans Google, vous allez saisir "Victor Hugo" (aves les guillemets) pour que le blanc soit pris en compte dans la recherche, ici que nenni ! Il faut "URLEncoder" la chaine (et vous n'êtespas sans savir que l'encodage d'un expace est %20. Nous devons donc écrire :

curl "https://www.googleapis.com/youtube/v3/search?key=[VOTRE CLEF API]&part=snippet&q=Victor%20Hugo"

Recherchons les sous-titres disponibles pour la publicité "Epic Split" de Volvo Trucks, mettant en vedette Jean-Claude Van Damme.

(Cette vidéo a été sélectionnée parce qu'elle contient de nombreuses pistes de légende et aussi parce qu'elle est géniale.)

La commande est de la forme :

curl https://www.googleapis.com/youtube/v3/captions?videoId=M7FIvfx5J10&part=snippet&key=[VOTRE CLEF API]

Récupération des données du canal Google sur youtube de GoogleDeveloppers

Les informations sur le canal (channel ou chaine youtube) sont renvoyées en JSON.

curl -i -G -d "id=UC_x5XG1OV2P6uZZ5FSM9Ttw&part=snippet%2CcontentDetails%2Cstatistics&key=[VOTRE CLEF API]" https://www.googleapis.com/youtube/v3/channels

Récupère les sections de canal affichées sur le canal Google Developers

Un paramètre est nécéssaire, c'est l'id du canal :

curl -i -G -d "channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw&part=snippet%2CcontentDetails&key=[VOTRE CLEF API]" https://www.googleapis.com/youtube/v3/channelSections

Une simple recherche sur un mot clef, ici "surfing"

curl -i -G -d "q=surfing&maxResults=25&part=snippet&key=[VOTRE CLEF API]" https://www.googleapis.com/youtube/v3/search

Souscrire aux notifications d'une chaines

Idéal pour les youtuber qui peuvent lancer (en ajax par exemple) cette URL depuis leur propre site afin que l'internaute s'abonne à la chaine youtube, pour peu qu'il soit connecté à son compte Google, sans aller sur Youtube !

curl https://www.youtube.com/xml/feeds/videos.xml?channel_id=CHANNEL_ID

Et pour ceux qui ne connaisent opas leur channel ID, il est là : Le channel ID se trouve là : https://www.youtube.com/account_advanced