[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!

introduction

Maintenant que j'ai la possibilité de toucher à l'API de données YouTube, je voudrais résumer les informations.

Qu'est-ce que l'API de données YouTube?

https://developers.google.com/youtube/v3/docs

Avec l'API fournie par YouTube, vous pouvez obtenir des informations telles que des vidéos et des chaînes et les utiliser dans votre site Web ou votre application. Veuillez noter que la limite maximale d'utilisation de l'API (quota) par jour est de 10 000.

Obtenez la clé API

Créer un projet sur Google Cloud Platform

À partir de là Créez un projet.

Le nom du projet est arbitraire, ** N'oubliez pas de changer l'ID du projet. ** **

プロジェクトの作成

Activer l'API de données YouTube v3

Activez l'API de données YouTube, car elle sera utilisée dans le projet créé.

À partir d'ici Valable après la sélection d'un projet À

APIを有効にする

Créer des identifiants

À partir de là (https://console.cloud.google.com/apis/api/youtube.googleapis.com/credentials?hl=ja) Créez une clé API.

API キーの作成

Notez la clé API que vous avez créée, car elle sera utilisée lorsque vous utilisez réellement l'API.

Essayez d'obtenir diverses informations avec l'API de données YouTube

Installez les packages requis

Utilisez pyenv pour changer la version de python.

$ pyenv install 3.8.3
$ pyenv local 3.8.3

Installez le package pour utiliser l'API de données YouTube.

$ pip install google-api-python-client==1.9.3

Rechercher des informations sur la chaîne YouTube

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json

from apiclient.discovery import build

API_KEY = '<Entrez la clé API que vous avez obtenue la dernière fois>'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'
SEARCH_TEXT = '<Nom de la chaîne que vous souhaitez rechercher>'

youtube = build(
    YOUTUBE_API_SERVICE_NAME,
    YOUTUBE_API_VERSION,
    developerKey=API_KEY
)

response = youtube.search().list(q=SEARCH_TEXT, part='id,snippet', maxResults=25).execute()

for item in response.get('items', []):
    if item['id']['kind'] != 'youtube#channel':
        continue
    print('*' * 10)
    print(json.dumps(item, indent=2, ensure_ascii=False))
    print('*' * 10)

↓ Le résultat ressemble à ceci ↓

**********
{
  "kind": "youtube#searchResult",
  "etag": "jjisWD5m1O7aBCLstjwy_ldRnf4",
  "id": {
    "kind": "youtube#channel",
    "channelId": "UCTmRAt3wuYY8W5z9j9va97Q"
  },
  "snippet": {
    "publishedAt": "2017-12-13T04:47:03Z",
    "channelId": "UCTmRAt3wuYY8W5z9j9va97Q",
    "title": "Yahoo!Réseau de développeurs",
    "description": "Yahoo! JAPAN Technology channel produced by Yahoo! JAPAN.",
    "thumbnails": {
      "default": {
        "url": "https://yt3.ggpht.com/-ZUW9jc79uzQ/AAAAAAAAAAI/AAAAAAAAAAA/LWM2XNvQPmI/s88-c-k-no-mo-rj-c0xffffff/photo.jpg "
      },
      "medium": {
        "url": "https://yt3.ggpht.com/-ZUW9jc79uzQ/AAAAAAAAAAI/AAAAAAAAAAA/LWM2XNvQPmI/s240-c-k-no-mo-rj-c0xffffff/photo.jpg "
      },
      "high": {
        "url": "https://yt3.ggpht.com/-ZUW9jc79uzQ/AAAAAAAAAAI/AAAAAAAAAAA/LWM2XNvQPmI/s800-c-k-no-mo-rj-c0xffffff/photo.jpg "
      }
    },
    "channelTitle": "Yahoo!Réseau de développeurs",
    "liveBroadcastContent": "none",
    "publishTime": "2017-12-13T04:47:03Z"
  }
}
**********

Obtenez plus d'informations sur les chaînes YouTube

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json

from apiclient.discovery import build

API_KEY = '<Entrez la clé API précédemment obtenue>'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'
CHANNEL_ID = '<ID de la dernière chaîne acquis>'

youtube = build(
    YOUTUBE_API_SERVICE_NAME,
    YOUTUBE_API_VERSION,
    developerKey=API_KEY
)

response = youtube.channels().list(
    part = 'snippet,statistics',
    id = CHANNEL_ID
    ).execute()

for item in response.get("items", []):
    if item["kind"] != "youtube#channel":
        continue
    print('*' * 10)
    print(json.dumps(item, indent=2, ensure_ascii=False))
    print('*' * 10)

↓ Le résultat ressemble à ceci ↓

**********
{
  "kind": "youtube#channel",
  "etag": "itHsa0qDp15obMLvkpN6HnFjF_M",
  "id": "UCTmRAt3wuYY8W5z9j9va97Q",
  "snippet": {
    "title": "Yahoo!Réseau de développeurs",
    "description": "Yahoo! JAPAN Technology channel produced by Yahoo! JAPAN.",
    "customUrl": "yahoodevelopernetworkjp",
    "publishedAt": "2017-12-13T04:47:03Z",
    "thumbnails": {
      "default": {
        "url": "https://yt3.ggpht.com/a/AATXAJzznTJCL9uFV63JvRtbeYwgzur7mwoqtPRQvg=s88-c-k-c0xffffffff-no-rj-mo",
        "width": 88,
        "height": 88
      },
      "medium": {
        "url": "https://yt3.ggpht.com/a/AATXAJzznTJCL9uFV63JvRtbeYwgzur7mwoqtPRQvg=s240-c-k-c0xffffffff-no-rj-mo",
        "width": 240,
        "height": 240
      },
      "high": {
        "url": "https://yt3.ggpht.com/a/AATXAJzznTJCL9uFV63JvRtbeYwgzur7mwoqtPRQvg=s800-c-k-c0xffffffff-no-rj-mo",
        "width": 800,
        "height": 800
      }
    },
    "localized": {
      "title": "Yahoo!Réseau de développeurs",
      "description": "Yahoo! JAPAN Technology channel produced by Yahoo! JAPAN."
    },
    "country": "JP"
  },
  "statistics": {
    "viewCount": "7471",
    "commentCount": "0",
    "subscriberCount": "157",
    "hiddenSubscriberCount": false,
    "videoCount": "12"
  }
}
**********

Obtenez des informations sur les vidéos publiées par les chaînes YouTube

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json

from apiclient.discovery import build

API_KEY = '<Entrez la clé API précédemment obtenue>'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'
CHANNEL_ID = '<ID de chaîne précédemment obtenu>'

youtube = build(
    YOUTUBE_API_SERVICE_NAME,
    YOUTUBE_API_VERSION,
    developerKey=API_KEY
)

response = youtube.search().list(
    part = "snippet",
    channelId = CHANNEL_ID,
    maxResults = 1,
    order = "date" #Trier par date
    ).execute()

for item in response.get("items", []):
    if item["id"]["kind"] != "youtube#video":
        continue
    print('*' * 10)
    print(json.dumps(item, indent=2, ensure_ascii=False))
    print('*' * 10)

↓ Le résultat ressemble à ceci ↓

**********
{
  "kind": "youtube#searchResult",
  "etag": "CtC0g1Ocx7pK6H8Yhd3hGS5z3uY",
  "id": {
    "kind": "youtube#video",
    "videoId": "vd3YVCtW-LY"
  },
  "snippet": {
    "publishedAt": "2020-02-20T06:02:39Z",
    "channelId": "UCTmRAt3wuYY8W5z9j9va97Q",
    "title": "Conception de transition d'écran à l'aide du nouveau portail HTML ~ PayPay Mall et Yahoo!Avec un exemple d'actualité ~/ Developers Summit 2020 14-A-2",
    "description": "Vidéo de la session au Developers Summit 2020. Décrit le portail. Cliquez ici pour un aperçu de l'étape https://event.shoeisha.jp/devsumi/20200213/session/2384/...",
    "thumbnails": {
      "default": {
        "url": "https://i.ytimg.com/vi/vd3YVCtW-LY/default.jpg ",
        "width": 120,
        "height": 90
      },
      "medium": {
        "url": "https://i.ytimg.com/vi/vd3YVCtW-LY/mqdefault.jpg ",
        "width": 320,
        "height": 180
      },
      "high": {
        "url": "https://i.ytimg.com/vi/vd3YVCtW-LY/hqdefault.jpg ",
        "width": 480,
        "height": 360
      }
    },
    "channelTitle": "Yahoo!Réseau de développeurs",
    "liveBroadcastContent": "none",
    "publishTime": "2020-02-20T06:02:39Z"
  }
}
**********

Obtenez des informations détaillées sur la vidéo

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import json

from apiclient.discovery import build

API_KEY = '<Entrez la clé API précédemment obtenue>'
YOUTUBE_API_SERVICE_NAME = 'youtube'
YOUTUBE_API_VERSION = 'v3'
CHANNEL_ID = '<ID de chaîne précédemment obtenu>'
VIDEO_ID_LIST = ['<ID de la dernière vidéo acquis>']

youtube = build(
    YOUTUBE_API_SERVICE_NAME,
    YOUTUBE_API_VERSION,
    developerKey=API_KEY
)

for video_id in VIDEO_ID_LIST:
    response = youtube.videos().list(
      part = 'snippet,statistics',
      id = video_id
      ).execute()

    for item in response.get("items", []):
        if item["kind"] != "youtube#video":
            continue
        print('*' * 10)
        print(json.dumps(item, indent=2, ensure_ascii=False))
        print('*' * 10)

↓ Le résultat ressemble à ceci ↓

**********
{
  "kind": "youtube#video",
  "etag": "Y5QH8Ur-9BQigbr4XHTRNldn7_I",
  "id": "vd3YVCtW-LY",
  "snippet": {
    "publishedAt": "2020-02-20T06:02:39Z",
    "channelId": "UCTmRAt3wuYY8W5z9j9va97Q",
    "title": "Conception de transition d'écran à l'aide du nouveau portail HTML ~ PayPay Mall et Yahoo!Avec un exemple d'actualité ~/ Developers Summit 2020 14-A-2",
    "description": "Vidéo de la session au Developers Summit 2020.\Décrit nportal.\n\n Cliquez ici pour un aperçu de la scène\nhttps://event.shoeisha.jp/devsumi/20200213/session/2384/\n\n Cliquez ici pour les matériaux\nhttps://www.slideshare.net/techblogyahoo/htmlportal-paypayyahoo-devsumi",
    "thumbnails": {
      "default": {
        "url": "https://i.ytimg.com/vi/vd3YVCtW-LY/default.jpg ",
        "width": 120,
        "height": 90
      },
      "medium": {
        "url": "https://i.ytimg.com/vi/vd3YVCtW-LY/mqdefault.jpg ",
        "width": 320,
        "height": 180
      },
      "high": {
        "url": "https://i.ytimg.com/vi/vd3YVCtW-LY/hqdefault.jpg ",
        "width": 480,
        "height": 360
      }
    },
    "channelTitle": "Yahoo!Réseau de développeurs",
    "tags": [
      "devsumi",
      "devsumiA",
      "Portals"
    ],
    "categoryId": "28",
    "liveBroadcastContent": "none",
    "defaultLanguage": "ja",
    "localized": {
      "title": "Conception de transition d'écran à l'aide du nouveau portail HTML ~ PayPay Mall et Yahoo!Avec un exemple d'actualité ~/ Developers Summit 2020 14-A-2",
      "description": "Vidéo de la session au Developers Summit 2020.\Décrit nportal.\n\n Cliquez ici pour un aperçu de la scène\nhttps://event.shoeisha.jp/devsumi/20200213/session/2384/\n\n Cliquez ici pour les matériaux\nhttps://www.slideshare.net/techblogyahoo/htmlportal-paypayyahoo-devsumi"
    },
    "defaultAudioLanguage": "ja"
  },
  "statistics": {
    "viewCount": "74",
    "likeCount": "2",
    "dislikeCount": "0",
    "favoriteCount": "0",
    "commentCount": "0"
  }
}
**********

à la fin

Comment était-ce? Il existe de nombreuses autres publications sur les Exemples de code, alors jetez-y un œil et essayez-les. Si vous trouvez quelque chose qui ne va pas, veuillez commenter mm

Recommended Posts

[Python] J'ai essayé d'obtenir diverses informations en utilisant l'API de données YouTube!
J'ai essayé de rechercher des vidéos à l'aide de l'API de données Youtube (débutant)
J'ai essayé d'utiliser l'API de données YOUTUBE V3
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
J'ai essayé d'obtenir diverses informations de l'API codeforces
[Python] Obtenez tous les commentaires à l'aide de Youtube Data Api
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
J'ai essayé d'obtenir les informations du Web en utilisant "Requests" et "lxml"
[Python] J'ai essayé de collecter des données en utilisant l'API de wikipedia
J'ai essayé d'obtenir rapidement des données d'AS / 400 en utilisant pypyodbc
J'ai essayé d'utiliser l'API UnityCloudBuild de Python
J'ai essayé d'obtenir rapidement des données d'AS / 400 en utilisant pypyodbc Préparation 1
Comment obtenir des données d'article à l'aide de l'API Qiita
Obtenir des informations sur les vidéos mises en ligne sur YouTube [Python]
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
J'ai essayé de résumer diverses phrases à l'aide de l'API de synthèse automatique "summpy"
J'ai essayé l'analyse de données IRMf avec python (Introduction au décodage des informations cérébrales)
[Rails] Comment obtenir des informations de localisation à l'aide de l'API de géolocalisation
J'ai essayé de démarrer avec le script python de blender_Part 01
Obtenez des données Youtube avec python
Obtenez des données LEAD à l'aide de l'API REST de Marketo en Python
Programmation Python: j'ai essayé d'obtenir (l'exploration) des articles de presse en utilisant Selenium et BeautifulSoup4
J'ai essayé de démarrer avec le script python de blender_Partie 02
[Python] Obtenez des données insight à l'aide de l'API Google My Business
J'ai essayé d'obtenir une AMI en utilisant AWS Lambda
[Python] J'ai essayé d'obtenir Json de squid ring 2
Programmation Python: j'ai essayé d'obtenir des informations sur l'entreprise (exploration) de Yahoo Finance aux États-Unis en utilisant BeautifulSoup4
J'ai essayé d'accéder aux feuilles de calcul Google en utilisant Python
J'ai essayé d'extraire diverses informations du PC distant de Python par la bibliothèque WMI
J'ai essayé de créer un cadre de données pandas en grattant les informations de rappel d'aliments avec Python
J'ai essayé d'obtenir les informations de localisation du bus Odakyu
J'ai essayé de créer une API list.csv avec Python à partir de swagger.yaml
J'ai essayé différentes méthodes pour envoyer du courrier japonais avec Python
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé d'analyser les données scRNA-seq en utilisant l'analyse des données topologiques (TDA)
Exportez les informations produit au format CSV à l'aide de l'API de recherche de produits Rakuten [Python]
Jouez avec l'API de données YouTube v3 à l'aide du client Python de l'API Google
Appelez l'API github en python pour obtenir des informations sur la demande d'extraction
Obtenir des données Salesforce à l'aide de l'API REST
J'ai essayé de créer l'API Quip
J'ai essayé de toucher Python (installation)
Obtenez des données Amazon à l'aide de Keep API # 1 Obtenez des données
J'ai essayé d'utiliser Thonny (Python / IDE)
J'ai touché l'API de Tesla
J'ai essayé d'utiliser l'API checkio
J'ai essayé d'obtenir une base de données sur les courses de chevaux en utilisant Pandas
J'ai essayé d'obtenir l'index de la liste en utilisant la fonction énumérer
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé d'analyser mon chanteur préféré (SHISHAMO) en utilisant l'API Spotify
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
Collectez des informations sur les produits et traitez les données à l'aide de l'API de recherche de produits Rakuten [Python]
J'ai essayé d'obtenir une liste de noms AMI en utilisant Boto3
J'ai essayé de visualiser les données BigQuery à l'aide de Jupyter Lab avec GCP