Contexte
Il était nécessaire de collecter des données sur plus de 2000 vidéos YouTube, à partir desquelles il était nécessaire d'extraire le nom de la vidéo, de la chaîne et de la langue.
La fonction IMPORTXML, avec laquelle vous pouvez effectuer une analyse à partir de sites, n'a pas aidé, car, comme il s'est avéré plus tard, youtube stocke des données dans des fichiers JSON. Je ne voulais pas trier autant de vidéos avec mes mains et j'ai commencé à chercher des moyens d'automatiser ou du moins de simplifier cette tâche.
J'ai trouvé
un vieil article de 15 ans sur Habré , qui décrit comment obtenir le nombre de vues vidéo, mais dès le moment de sa publication, YouTube a mis à jour l'API et j'avais besoin d'obtenir des données un peu différentes.
Dans le processus de résolution du problème à l'aide de l'API YouTube et des tableaux Google, il s'est avéré non seulement d'extraire des données d'une liste pré-préparée d'URL de vidéos, mais également d'analyser la sortie de YouTube par mot clé.
Étant dans la plus grande joie du résultat, j'ai décidé de partager mon expérience et de décrire le processus plus en détail.
La méthode elle-même n'est certainement pas idéale. Il peut être décrit comme une solution simple à la hâte. Mais jusqu'à ce que je commence à apprendre le Python (j'espère que ce jour arrivera tôt ou tard), je dois tout faire à l'ancienne dans les tableaux.
La préparation
Pour que l'analyseur fonctionne, comme dans l'article d'origine, nous avons besoin du script ImportJSON et de l'API YouTube.
Importjson
Téléchargez le script depuis
github et installez-le dans le tableau via l'outil >> éditeur de script.
API Youtube
Nous obtenons notre API - la clé
Youtube Data API V3 dans la bibliothèque et créons des informations d'identification pour elle. Auparavant, bien sûr, nous créons un compte, si vous n'êtes pas déjà inscrit sur google cloud.
Les informations sur la vidéo sont stockées dans un fichier JSON, disponible sur le lien:
www.googleapis.com/youtube/v3/videos?id= {Video_ID} & key = {API_Key} & part = {Part_Parametr}
où
Video_ID - identifiant vidéo
API_Key - la clé API que vous obtenez dans la console
Part_Parametr - partie du fichier dans laquelle les informations sont stockées
Les parties d'un fichier peuvent être de plusieurs types:
extrait - contient presque toutes les informations de base sur la vidéo:
1. date de publication
2. titre de la vidéo
3. nom du canal
4. identifiant du canal
5. description sous la vidéo (Description)
6. catégorie de vidéo (nombre)
7. balises
contentDetails - contient la durée et la résolution de la vidéo.
topicDetails - contient la catégorie vidéo sous la forme d'un lien Wikipedia avec le nom de la catégorie, mais cette section n'est pas toujours remplie.
les statistiques1. vues
2. nombre de commentaires
3. aime
4. n'aime pas
En général, ce sont les principales parties dont vous pourriez avoir besoin, mais une liste complète, le cas échéant, se trouve
dans l'aide .
Récupération des données de liste d'URL
Considérez le travail de l'analyseur en utilisant l'
exemple de la revue de
mauvaise qualité. Pour obtenir des informations sur une vidéo, nous avons seulement besoin de son identifiant (
Video_ID ), dans ce cas, il s'agit de
EOWa0fmSGs8 .
Nous obtenons et structurons des informations à l'aide de la formule ImportJSON et du langage de requête XPath.
Voici à quoi ressemble le fichier JSON sur le serveur:

La formule pour obtenir le nombre de vues dans les tables:
= ImportJSON ('' https://www.googleapis.com/youtube/v3/videos?id=EOWa0fmSGs8&key= {API_Key} & part = statistics ''; "/ items / statistics / viewCount"; '' noHeaders ''))
En principe, XPath ne peut pas être utilisé dans la requête, mais vous obtiendrez alors tout le contenu du fichier JSON, sans segmentation par paramètres. Après avoir créé le nombre nécessaire de formules avec les paramètres XPath, vous n'obtiendrez que les données nécessaires, qui seront plus faciles à traiter.
Obtenir une liste de vidéos par mot-clé
Le principe d'analyse de la sortie est le même que dans l'exemple ci-dessus, mais la structure de la demande change légèrement.
Dans ce cas, le fichier JSON avec les résultats de la vidéo se trouve sur le lien
www.googleapis.com/youtube/v3/search?part=snippet&q= {Your_Query} & type = video & key = {API_Key}
où le paramètre type indique exactement ce que nous obtenons dans la sortie:
type = video - une liste de vidéos pertinentes pour la demande
type = canal - liste des canaux
type = playlist - liste des playlists
Vous pouvez également spécifier dans la demande:
1. date de publication ou plage de dates
2. région et langue de recherche
3. durée de la vidéo
4. nombre de résultats (par défaut 5, maximum 50), etc.
Une liste complète des paramètres et du constructeur de requêtes est disponible ici .
Pour obtenir une liste des identifiants pour badcomedian, utilisez la formule:
= ImportJSON (" www.googleapis.com/youtube/v3/search?part=snippet&q=badcomedian&type=video&key= {API_Key}"; "/ items / id / videoId"; '' noHeaders '')
ImportJSON fonctionne bien en conjonction avec la fonction CONCEPT, qui nous permet, en modifiant divers paramètres, d'effectuer une analyse de masse ou une analyse vidéo.
Un exemple de l'organisation du tableau:

Méthode moins
Un inconvénient majeur de cette méthode d'analyse des informations est l'épuisement rapide de la limite quotidienne de demandes d'API. Je n'ai pas trouvé de moyen de limiter le nombre de demandes ou de créer un appel cohérent à l'API. En d'autres termes, une tentative d'analyse simultanée d'informations sur plus de 10 clés a conduit à une erreur - la fin de la limite de requête quotidienne. Par conséquent, vous devez décomposer les mots clés en petits groupes et enregistrer les résultats en tant que valeurs.