Aujourd'hui 8 février, nous allons ouvrir un grand dossier "Youtube" concernant les API, qui va durer sur plusieurs numéros.
J'ai en effet regardé depuis quelques semaines déjà, l'ensemble des API de type "GET" de youtube et me suis rendu compte qu'il y avait tellement de choses à dire que j'ai décidé de scinder mes habituels articles plus plusieurs "sous-articles", chacun d'entre eux traitant une rubrique particulière.
Au cours de ce dossier, ces semaines à venir, nous allons nous pencher sur plusieurs thématiques telles que les Youtube Data API, les activités, les chaines.... j'en passe et des meilleures.
Mes démonstrations, pour des raisons de simplicité, suivront au mieux la documentation officielle des API youtube.
Ouvrons le dossier avec cette première partie concernant les activités. Mais avant cela, cet article étant le point de départ d'un grand dossier, voyons comment obtenir... une clef API !

L'obtention du token d'accès youtube

Bon, je ne vous cacherai pas que cette grande série d'articles qui s'ouvre à ma date anniversaire, c'est le cadeau que je vous fais pour ces ... ans. (chuuuut). Alors on ne cesse de le voir dans mes articles, pour pouvoir interagir avec Youtube, nous avons besoin de notre jeton d'accès (access token). Comment l'obtient-on ? Simple, enfin pas tant que ça, j'ai longuement cherché !
Avant tout, je reviens sur la différence entre tous ces termes.

  • La clef API est une chaine de caractères vous permettant de vous authentifier auprès du serveur pour lui faire une demande/requête http
  • Le token (ou jeton) est un jeton numérique limité dans le temps, vous authentifiant et autorisant certains droits et lancement de "commandes", pour une durée limitée dans le temps.

De ce fait, j'attire vraiment votre attention à bien passer dans les paramètres, soit l'une, soit l'autre donnée en fonction de ce que Youtube vous demande !

Le jeton d'accès ou access token

Vous l'aurez compris, ce paragraphe est essentiel pour toute la suite de mes articles : comment obtenir ce précieux sésame ?
Et bien en le demandant à Google mais pas n'importe comment, et pas n'importe quand. Ce sésame ayant une durée de vie limité (sans quoi nous n'aurions besoin que de la clef API qui elle est illimitée dans le temps), il faut le demander A CHAQUE REQUETE HTTP en spécifiant simplement le paramètre key dans l'URL, avec votre clef API. A priori, tout le reste est transparant pour le développeur. Mais il y a un mais...
En effet, vous pouvez être amené à vouloir connaitre les informations sur ce token d'accès. Après tout il est a vous. :-)
Il suffit d'en faire la demande ainsi :

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=VOTRE_TOKEN_ICI

L'autorisation, vous le verrez dans la doc de l'API, est necessaire à chacune de vos demandes d'accès aux API. De ce fait, un écran d'authentification sera affiché pour demande de confimation d'accès a votre "compte API" à chacune des sessions d'accès à votre API. Et il ne faut pas croire que c'est pour embêter tout le monde que cette demande est effectuée côté "client", cela ne reste que de la sécurité. A votre demande, je pourrais revenir dessus.

Préambule important !

Google a mis en place un outil fabuleux vous permettant de tester "hors code" vos requêtes. En effet, lorsque vous vous connectez à leur documentation de leurs Liste des leurs API, vous remarquerez le panneau sur la droite, masquable, vous permettant de lancer vos requêtes à tester. Ceci vous permettant de bien tester votre requête, de voir si tous les paramètres sont bien rentrés (euh... c'est du vécu) et voir aisi que la requête http fonctionne (ou pas). Usez-en, voire abusez-en, vous gagnerez un temps fou surtout au début)

Google tests API

Les activities

Qu'est-ce qu'une activité ?

Je pense qu'il faut commencer par décrire une activité puisque cet article ne traite que de ce sujet. Au sens Youtube, on appelle Activité un ensemble d'informations sur une action entreprise par une chaîne ou un utilisateur particulier sur YouTube. Finalement cette définition est simple et définit bien les contours d'une activité Youtube !
Nous comprenons désormais que de cette activité, nous allons pouvoir extraire une sorte d'historique des actions effectuées sur un compte particulier Youtube. Et là, je pense notamment aux parents sans forcement d'accès parental sur leur ordinateur ou s'ils doutent de l'activité des enfants sur Youtube, qui pourront otenir l'extraction des activités, pouvant etre fort interessant pour voir si les enfant recherchent plutôt des vidéos des Teletubbies ou des videos d'Anna POLINA sur Youtube, ce contrôle pouvant se faire "après coups" !

Lançons-nous

Dans un premier temps, je ne peux que vous conseiller de vous impreigner de la documentation dont je vous ai donné l'URL, ca va drôlement vous aidert lorsqu'on va vous demander de remplir des paramètres... que vous ignorez.
Gardons à l'esprit tout au long de ces tutoriels, que nous n'allons travaillez que sur NOS PROPRES données publiée sur Youtube, donc essentiellement sous notre nom (même s'il y aura des cas particuliers comme lors de recherches). Et oui, les API ne nous autorisent pas d'aller forcément récupérer des infos d'autres chaines. Imaginez vous si on pouvait supprimer des videos, par exemple, des plus grands youtubeurs actuels... Toutes mes démos se feront sur ma propre chaine, bien faible en terme de vidéos, je vous l'accorde.

Regardons désormais ce que l'on vous demande de remplir.

Le channelID.

Allez sur votre chaine et arrêtez vous une fois la page chargée. Regardez l'URL, elle ressemble à https://www.youtube.com/channel/UCsAP8nA6S_6J31ny-q_Qbwg (cette URL est bidon, prenez la vôtre). Je pense qu'il ne faut pas vous faire de dessin, l'identifiant de votre chaine devant etre un identifiant UNIQUE, il s'agit de le chaine en rouge https://www.youtube.com/channel/UCsAP8nA6S_6J31ny-q_Qbwg. Nous allons donc recopier cette chaine, enfin plutot la copier-coller, dans le champs qui nous le demandait et cliquer, au bas de la zone, sur le bouton execute. Oh miracle, et grâce à moi (pour info, mes chevilles vont bien), vous avez obtenu un code retour 200 (ce code est une norme du protocole HTTP) signifiant que la requête HTTP a été traité avec succès. Il ne vous reste plus qu'a regarder de plus près les données retournées. Alors voyons ca de plus près, je chausse mes lunettes.

Données en retour

Parfois en JSON, parfois en XML on d'en d'autres formats normés, Google, maison mère de Youtube, à choisi de retourner les informations utiles issues des appels aux API, au format JSON. Qu'a-t-on en retour ?
Nous avons trois grandes information, la dernière étant la plus importante :

  • kind : affiche le type de requête exécutée. Ici un liste d'activités. Notez le bien, je ne reviendrais pas dessus lors de mes prochains articles, ou en survolant l'information
  • etag : Fait partie intégrante de la normalisation http, permet aux applications de se référer à une version spécifique d'une ressource API particulière. La ressource peut être un flux entier ou un élément de ce flux.Bien que retournée, cette information n'est pas forcément utile à ce que nous souhaitons faire
  • pageInfo : permet de travailler lorsque le retour de données comporte plusieurs pages, permettant la pagination des résultats retournés. Nous allons l'ignorer pour l'instant
  • id : Bon je fais pas de dessin, c'est l'identifiant de la vidéo.
  • items : C'est là que ca devient interessant : c'est à partir de Items que nous avons un sous-ensemble de résultats de votre requête. Alors allons y :
    • kind : identifiant du type de ressource retournée par l'API. L'ensemble des types de ressources sont visibles sur la page Youtube Activity
    • etag : Un ETag est un identifiant unique opaque assigné par le serveur web à chaque version d'une ressource accessible via une URL. Si la ressource accessible via cette URL change, un nouvel ETag différent du précédent sera assigné. Utilisés ainsi, les ETags sont similaires à des empreintes digitales, et peuvent être rapidement comparés pour vérifier si deux versions sont identiques, et ainsi savoir si une demande peut être honorée par un cache local ou pas. (Voir l'article sur Wikipedia)
    • id : C'est l'identifiant, dans la sous-partie items, de la vidéo retournée
      • snippet : fragments
        • publishedAt : Date de publication de la vidéo
        • channelId : Identifiant du canal
        • title : Titre de la vidéo
        • description : Description textuelle de la vidéo
        • thumbnail : Miniature image de la vidéo, retournée dans 4 définitions d'images différentes. Nous retrouvons :
          • url : Adresse URL de l'image
          • width : longueur de la miniature retournée
          • height : largeur de la miniature retournée
        • channelTitle : Titre du canal
        • type : Type d'activité décrit par la ressource.
  • nextPageToken : La valeur qui peut être utilisée comme valeur du paramètre pageToken pour récupérer la page suivante dans la liste des résultats retournés
  • prevPageToken : La valeur qui peut être utilisée comme valeur du paramètre pageToken pour récupérer la page précédente dans la liste des résultats retournés
  • pageInfo : L'objet pageInfo encapsule les informations de pagination pour le jeu de résultats. On y retrouve :
    • totalResults : Le nombre total de résultats retournés
    • resultsPerPage : Nombre de résultats par page.
  • items[] : Une liste d'activités ou d'événements qui correspondent aux critères de l'utilisateur.

En fonction des requetes http, d'autres résultats peuvent etres inclus à cette liste. L'ensemble des champs retournés possibles est accessible sur https://developers.google.com/youtube/v3/docs/activities.

Voila pour la première partie de ce tuto qui va en comporter plusieurs.