La problématique :

Aujourd'hui, je vous propose d'aller "lire" des données des vidéo que vous uploadez sur youtube. Oui, je choisis désormais Youtube face à Dailymotion, pour la foule de fonctionnalités supplémentaires. En voila d'ailleurs une : récupérer des métadonnées sur votre page web, métadonnées déjà saisies sur Youtube. Pourquoi réinventer la roue, redupliquer des données, au risque que celles-ci soient erronées lors d'une malheureuse recopie avec des erreur, fautes de frappes... Non, là, on colle toutse les données dans youtube, et on va aller les rechercher.

Le service interrogé : YOUTUBE

Bon, oui le reprends le plan habituel mais vous avez déjà compris que le service que nous allons aller interroger est bel et bien Youtube. Nous n'irons pas poster des données (car je ne me suis pas encore interessé aux requêtes GET mais ca viendra sûrement un jour.)
Je n'ai pas fais de page d'exemples détaillées sur cet article mais si vous en souhaitez une, elle pourra être faite sur demande. Toutefois, j'ai quand même intégré les retours de données brutes. Mais je pense que vous savez désormais, comment extraire des données XML ou JSON facilement avec tous les exemples déjà créés.

Explications

La commande cURL est générique, elle est basée sur le modèle suivant :

curl -i -G -d "q=surfing&maxResults=25&part=snippet&key=[VOTRE_CLEF_API]" URL_DE_L'API

Voila le détail des 4 paramètres rouges cités ci-dessus :

  • q=surfing : "surfing" est le mot clef recherché pour la requete (ce que vous auriez tapé dans le champs de recherche de youtube)
  • maxresult=25 : la recherche se limite à 25 résultats, libre à vous de changer cette valeur, en gardant à l'esprit des possibles timeouts.
  • part=snippset
    Le paramètre "part" est un paramètre requis pour toute demande d'API qui récupère ou retourne une ressource. Le paramètre identifie une ou plusieurs propriétés de ressource de niveau supérieur (non imbriquées) à inclure dans une réponse d'API. Une ressource vidéo comprend les parties suivantes:
         - fragment
         - contentDetails
         - fileDetails
         - joueur
         - traitementDétails
         - enregistrementDétails
         - statistiques
         - statut
         - suggestions
         - sujetDétails
  • key=votre_clef_API. Vous l'aurez compris, c'est la clef API que vous avez demandé à Youtube et que vous devez passer ici en paramètres
  • URL_DE_L'API : Cette URL est bien une adresse web, mais il faut la voir non pas comme une page web, mais comme une chaine de caractères, qui prend effectivement la forme d'une URL, pour spécifier à l'API ce que vous souhaitez qu'elle vous retourne. Je répète, il faut vraiment voir cette chaine comme une chaine d'authentification de ce que vous demandez au service web. Toute la doc est sur le site de youtube : https://developers.google.com/youtube/v3/docs/

Et bien nous voila parés, on s'y met ?

Exemples

Voici la liste des commandes cURL testées.

1. Afficher le détail d'une vidéo : https://www.googleapis.com/youtube/v3/videos?id=kLCoFizS9xE&part=snippet%2CcontentDetails%2Cstatistics&key=[VOTRE_CLEF_API]

2. Faisons une recherche sur youtube sur un le mot clef "surfing" et récupérons les 25 premiers résultats  : https://www.googleapis.com/youtube/v3/search?q=surfing&maxResults=25&part=snippet&key=AIzaSyAwzSsXc0YVOgYag7z3rSl0tH0VmDZe1fk

3. Récupérons les information du canal (autrement appelé chaine) youtube (pour la référence du canal, aller sr la page web du canal dans les détails de la chaine) : https://www.googleapis.com/youtube/v3/channelSections?channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw&part=snippet%2CcontentDetails&key=[VOTRE_CLEF_API]

4. Affichons un thread de discussion : https://www.googleapis.com/youtube/v3/commentThreads?videoId=kLCoFizS9xE&part=snippet%2Creplies&key=[VOTRE_CLEF_API]

5. Récupérons toutes les vidéo d'une playliste : https://www.googleapis.com/youtube/v3/playlistItems?playlistId=PLBCF2DAC6FFB574DE&maxResults=25&part=snippet%2CcontentDetails&key=[VOTRE_CLEF_API]

6. Listes de lectures appartenant à la chaine youtube identifiée par le paramètre channelId de la requete : https://www.googleapis.com/youtube/v3/playlists?maxResults=25&channelId=UC_x5XG1OV2P6uZZ5FSM9Ttw&part=snippet%2CcontentDetails&key=[VOTRE_CLEF_API]

 

7. Liste des catégories associables à une video : https://www.googleapis.com/youtube/v3/videoCategories?regionCode=US&part=snippet&key=[VOTRE_CLEF_API]

 

8 Liste des métadonnées de la vidéo passée en paramètre (champ id) : https://www.googleapis.com/youtube/v3/videos?id=Ks-_Mh1QhMc&part=snippet%2CcontentDetails%2Cstatistics&key=[VOTRE_CLEF_API]

 

Mise à jour : Afin de détailler mes propos, j'ai recréé plusieurs articles plus détaillés. Vous y avez accès en cliquant sur le tag (étiquette) Youtube ci-dessous sur cette page