Il y a des moments où vous souhaitez simplement enregistrer le nombre de vues YouTube, n'est-ce pas? J'étais accro à une vidéo de danse et je me demandais si le nombre de vues était lié à l'exposition médiatique, alors j'ai décidé de l'obtenir, et je viens d'enregistrer le nombre en utilisant l'API de données Youtube, Lambda, Cloud Watch et les feuilles de calcul Google. Je l'ai fait.
Python 3.7, l'environnement est Windows. Pour Mac, lisez la commande, etc.
Je l'ai fait en référence à ce qui suit https://qiita.com/akabei/items/0eac37cb852ad476c6b9 https://qiita.com/masaha03/items/fab8c8411a020ff2bd42
Activez les API Youtube, Google Drive et Google Spreadsheet.
Inscrivez-vous pour utiliser GCP Même si vous n'utilisez que l'API, vous devez enregistrer le projet sur GCP. Le nom du projet est arbitraire.
Activer l'API à partir de la bibliothèque d'API Recherchez des API dans la bibliothèque "API et services". Recherchez et activez l'API de données Youtube, l'API Google Drive et l'API Google Sheets.
Obtenez la clé d'authentification Créez une clé à partir de "Credentials". L'API de données Youtube s'authentifie avec la clé API, l'API Google Drive, l'API Google Sheets avec un compte de service. Enregistrez le compte de service en tant que fichier JSON.
Préparez une feuille de calcul. (Cette fois, le nom de la feuille est créé par défaut)
Écrivez le nombre de vues et de commentaires sur la feuille de calcul. La différence entre le nombre de lectures et le nombre de commentaires étant définie du côté de la feuille de calcul, laissez ce champ vide lors de l'écriture.
import gspread
import json
import const
from datetime import datetime
from googleapiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
def youtube_count(request, context):
YOUTUBE_API_KEY = const.getYoutubeApiKey()
#Identifiant vidéo YouTube que vous souhaitez obtenir
YOUTUBE_MOVIE_ID = 'ID vidéo'
#S'authentifier avec la clé API
youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)
#Obtenez le nombre de vues et le nombre de commentaires (en plus de cela, vous pouvez également obtenir le nombre de likes)
statistics = youtube.videos().list(part = 'statistics', id = YOUTUBE_MOVIE_ID).execute()['items'][0]['statistics']
#Il semble que vous deviez continuer à émettre des jetons d'actualisation si vous ne décrivez pas comme suit
scope = ['https://spreadsheets.google.com/feeds','https://www.googleapis.com/auth/drive']
#Définissez le nom du fichier json téléchargé
credentials = ServiceAccountCredentials.from_json_keyfile_name('nom de fichier', scope)
#Connectez-vous à l'API Google à l'aide de vos informations d'identification OAuth2.
gc = gspread.authorize(credentials)
#Variables pour les clés de feuille de calcul partagées[SPREADSHEET_KEY]Stocker dans.
SPREADSHEET_KEY = const.getSpleadsheetKey()
#Ouvrez la feuille 1 de la feuille de calcul partagée
worksheet = gc.open_by_key(SPREADSHEET_KEY).sheet1
#Heure actuelle
now_date = datetime.now().strftime("%Y/%m/%d %H:%M")
#écrire
worksheet.append_row([now_date,statistics['viewCount'], '', statistics['commentCount']])
En plus du fichier principal, placez le fichier JSON du compte de service, le fichier const.py qui décrit la clé de feuille de calcul à renseigner et la clé API de l'API de données Youtube dans la même hiérarchie.
Définissez le fichier Python créé dans Lambda.
Définir la bibliothèque sur les couches Lambda C'est assez chargé, donc j'écris un autre article. https://qiita.com/chr36/items/eb6e98f81c8d358ae64c
Configurer Lambda (La création de compte AWS est omise) Sélectionnez "Nouvelle fonction" dans Lambda et créez une fonction. Déployez le code créé ci-dessus et le fichier de paramètres, puis liez les couches enregistrées.
Réglage du fuseau horaire Il est nécessaire de définir le fuseau horaire pour afficher la date et l'heure. Cette fois, le fuseau horaire est changé en "Asie / Tokyo" dans la variable d'environnement, mais ce n'est officiellement ** pas recommandé **. http://blog.serverworks.co.jp/tech/2019/10/30/lambda-timezone-2/
Autres réglages Il semble que cela puisse prendre un certain temps pour obtenir l'API Youtube, et si le délai d'expiration est défini sur 3 secondes, l'acquisition peut échouer. De plus, comme le paramètre par défaut est de réexécuter en cas d'échec, le même contenu peut être enregistré deux fois si le paramètre par défaut est utilisé. Par conséquent, ** définissez le délai d'expiration à environ 10 secondes **, et si vous n'avez pas besoin de l'obtenir, définissez ** la ré-exécution une fois ou moins **.
Déclenché par CloudWatch Events. Cette fois, j'ai pensé que je devrais l'obtenir une fois par heure pour le moment, alors j'essaierai de l'obtenir une fois par heure avec une formule d'horaire.
Cela remplira automatiquement la feuille de calcul. Après avoir été écrit dans la feuille de calcul, j'essaie de calculer automatiquement la différence de formatage et de nombre de lectures à l'aide de GAS, mais cela sera fait à une date ultérieure.
Cliquez ici pour la vidéo accro. "Crazy F-R-E-S-H Beat" de Snow Man. https://www.youtube.com/watch?v=lfVfBqkk2Vo
Recommended Posts