Aujourd'hui nous allons ouvrir un dossier de plusieurs articles dans lesquels nous allons nous intéresser aux API et autres fonctionnalités adaptées aux développeurs, de YouTube.
L'API de Youtube tellement grosse mais tellement intéressante que j'ai décidé non pas d'abandonner mais de créer plusieurs articles sur le sujet. Contrairement à tous les autres articles que j'ai écrit jusqu'à maintenant, je vais découper celui de l'accès aux API Youtube en plusieurs morceaux.
Même si j'ai déjà écrit quelques articles concernant Youtube et certaines fonctionnalités pour les développeurs, nous allons, au cours de ces articles, rentrer vraiment dans le détail afin de pouvoir utiliser et récupérer des informations issues de vos comptes YouTube. N'ayaynt toujours pas réussi à faire un upload de video, désolé mais je ne vais m'attaquer qu'aux requetes de type GET. Que ces informations soient publiques ou privées, c'est-à-dire répondant à la clé API vous appartenant, nous allons voir comment nous allons pouvoir extraire des informations du mastodonte de la vidéo.

Dans cette première partie, nous allons nous consacrer à un besoin que j'avais personnellement, à savoir la recherche de vidéos sur YouTube. En effet, Google nous donne accès à des tas de fonctionnalité nous permettant de rechercher et récupérer des informations sur les vidéos, de manière très précise, au moyen de différents paramètres dans les URL d'accès aux API.

Que vous soyez néophyte ou développeur, si vous savez ne serait-ce que manipuler un petit peu du JSON, cet article va forcément vous intéresser si vous êtes youtubeur.

Avant de commencer, je tiens à préciser que les différents articles concernant YouTube ne seront peut-être pas consécutifs.

Les API Google

Que ce soit avec Google ou que ce soit avec Facebook, vous avez sûrement plus remarqué, si vous n'êtes qu'utilisateur de ces outils, qu'à certains moments, lorsque depuis Facebook où depuis un site tiers, vous utilisez un service nécessitant une authentification, comme Facebook, vous avez une fenêtre qui apparaît, au moment de l'authentification, qui vous demande si vous êtes d'accord d'utiliser ce service avec le compte que vous avez sélectionné. Cette partie est très intéressante, car elle permet de donner des accès et des droits aux API que nous allons utiliser. C'est le même principe lorsque votre service vous demande cette information, c'est simplement un droit d'accès à ce service que vous attribuez. Une fois qu'on a compris ceci, on a compris beaucoup de choses. Je ne reviens pas sur ce message, vous avez forcément déjà vu lorsque vous utilisez une connexion Facebook pour vous connecter à un service. Rentrons dans le vif du sujet

Nous allons regarder aujourd'hui si méthode de faire des recherches sur YouTube. Je vous ai présélectionné plusieurs types de requêtes et donc de recherche sur youtube.

Googlelisons Youtube :)

Prérequis

Si vous souhaitez faire une recherche via les API avec une chaîne de caractères contenant un espace (je vais reprendre l'exemple de Mistress Harley, car cet exemple contient deux mots séparés par un espace) il faut entourer la chaîne de double cotes. On obtient donc "Mistress Harley". Mais c'est pas fini. On voit bien qu'entre les deux mots, il y a un espace. On a donc besoin "d'URLEncoder" la chaîne (pas de panique, les navigateurs modernes le font automatiquement !) Une fois urlencodée, on obtient "Mistress%20Harely". Et oui, tous les caractères spéciaux sont remplacés par un équivalent numérique. Et si vous est etes curieux, je vous renvoie sur la page Wikipedia du Percent-encoding.

Un chercheur qui cherche, on en trouve, mais un chercheur qui trouve... on en cherche !

Le chercheur en l'occurence, ici, c'est le moteur Google. Regardons les recherches que l'on peut faire.

Faisons une recherche telle qu'on la ferait sur Youtube

Avec un mot

C'est le + simple :

https://www.googleapis.com/youtube/v3/search?part=snippet&q=Martinet&key=votre_code_API

Je prends 2 minutes pour détailler cette URL :

Avec plusieurs mots

Effectivement, là ca se "complexifie" quelque peu (enfin la complexité ici, c'est pas grand chose par rapport à la suite). Il va falloir encoder les doubles cotes (") car ce caractère est interdit dans uen URL, tout comme l'espace encodé (ATTENTION : j'ai deja vu que sous IE ca marchait.... On se demande pourquoi). Nous allons faire une recherche Youtube sur Sébastien LHUILLIER. Ma première recherche ne comporte pas de double cote, on fait donc une recherche simple sans rechercher la phrase exacte. (Si vous voulez vous simplifier la vie, faites vos recherche dans Youtube et récupérez l'URL générée)

https://www.googleapis.com/youtube/v3/search?part=snippet&q=%22Sebastien%20LHUILLIER%22&key=[VOTRE CLEF API]

Bon, j'espère n'avoir perdu personne car là, nous n'en sommes qu'au Prérequis des recherches youtube. Mais si vous avez tout compris jusque là, je ne vais désormais que vous montrer des critère de restrictions des résultats retournés.

Ajoutons des critères de restrictions

Vous l'aurez compris, désormais c'est du bonus. En effet, Youtube propose des tas de critères supplémentaires pour affinez vos recherches. J'emploie le terme affiner, qui n'est pas très juste. En effet, dans la suite de ma démonstration, il faut noter que le paramètre q= n'est pas obligatoire. Nous le verrons notamment avec une recherche par zone géographique, où l'utilisation d'un mots clef reste facultatif. (on peut chercher une vidéo faite dans une rayon de X km2 sans spécifier de terme de recherche). Afin de récupérer une URL de recherche propre, et pour ne pas écrire un inventaires des possibilités, je vous renvoie sur la doc de Google qui possède un outils plutot très bien fait, qui va vous générer la bonne URL désirée : https://developers.google.com/youtube/v3/docs/search/list. Alors, oui, je ne vais pas faire un inventaire à la Prévert, mais le vous ai quand meme préparé quelques exemples afin de comprendre et de se lancer.

Recherche des vidéos sur le nom de l'utilisateur

L'URL est de la sorte : https://www.googleapis.com/youtube/v3/channels?part=snippet%2CcontentDetails%2Cstatistics&forUsername=sebastien.lhuillier&key=votre_code_API
Attention a bien prendre le nom de l'utilisateur et pas le "label" qui s'affiche dans youtube.

Recherche par rapport à des données géographiques

https://www.googleapis.com/youtube/v3/search?part=snippet&location=21.5922529%2C-158.1147114&locationRadius=10mi&q=surfing&type=video&key=votre_code_API
Vous l'aurez compris, les paramètres du paramètre de l'URL "location" sont la latitude et la longitude, séparées par une virgule.

Recherche de lives sur contenant le mot "Nancy"

Et oui, il est aussi possible de demander à Youtube de ne retourner que des lives (en français, des diffusions de vidéos en temps réel) sur la ville de nancy (paramètre à modifier ou supprimer bien entendu) cette façon :
https://www.googleapis.com/youtube/v3/search?part=snippet&eventType=live&maxResults=25&q=nancy&type=video&key=votre_code_API

Recherches de lives circonscrits à une zone géographique :

https://www.googleapis.com/youtube/v3/search?part=snippet&eventType=live&maxResults=25&q=nancy®ionCode=Fr&type=video&key=votre_code_API

Recherches de lives dans un rayon de 10 Km

https://www.googleapis.com/youtube/v3/search?part=snippet&location=21.5922529%2C-158.1147114&locationRadius=10km&q=surfing&type=video&key=votre_code_API

Recherchons "mes vidéos" (les videos de j'ai uploadé sur mon compte)

A priori, les résultats apparaissent de manière antéchronologiquement, sauf à spécifier le paramètre order : https://www.googleapis.com/youtube/v3/search?part=snippet&forMine=true&maxResults=25&type=video&key=votre_code_API

Voici pour quelques exemples. Je n'ai pas fait le tour intégral car je ne peux pas. Vous aurez un aperçu de ma façon de faire.
Si vous utiliser des spécificités dans les recherches que vous faites, envoyez-les moi par mail, en me précisant le titre de cet article, je me serai un plaisir de les rajouter à la liste, en précisant, si vous le souhaitez, l'auteur de la requete.