📘

[Python] Youtube APIを使って動画の視聴回数動向をExcel出力しグラフ化

2022/01/15に公開

はじめに

  • 今回はPythonを使ってYoutubeのAPIを呼び出して視聴回数動向のグラフを作成したいと思います。
  • スクリプト中に無駄な部分があるのは許してください。笑

対象者

  • Pythonを使ったYoutubeAPIの使い方に興味がある人
  • グラフ作成を自動化してみたい人

項目

1.概要
2.スクリプトとグラフ
3.おわりに

概要

  • 流れ:①YoutubeAPIKEYを作成、②任意の動画のIDをURLから取得、③プログラムを作成、④実行してファイルに出力(私の場合はExcel)

  • API Keyの作成方法については以下のURLを参考にしました。
    1.【データサイエンス】YouTubeのAPIを使ってYouTube内のデータを収集してみよう
    https://blog.codecamp.jp/programming-api-youtube
    2.Youtube Data API Key の取得手順
    http://piyohiko.webcrow.jp/kids_tube/help/index.html

  • 本スクリプトは、API Keyと動画のIDのXXXの部分を任意の値に編集、インポートが必要なモジュールが使える、Excelが使える環境であれば、コピペで動作させることができます。

スクリプトとグラフ

Sample.py

'''
YoutubeのAPIを使って、Youtube内の特定の動画の情報を取得し、
Excelに結果を吐き出して、その値を使って自動的にグラフを生成するプログラム 
'''
import json
import requests
import datetime
from apiclient.discovery import build #GoogleAnalyticsAPI  
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference
import numpy as np
import time

YOUTUBE_API_KEY = "XXXXX" #自分で作成したAPI KEY
YOUTUBE_MOVIE_ID = 'XXXXXX' #取得したい動画のID
API_SERVICE_NAME = "youtube"
API_VERSION = "v3"
youtube = build(API_SERVICE_NAME, API_VERSION, developerKey=YOUTUBE_API_KEY)
list_statistics =[0]
list_dt2 =[0]
snippet = youtube.videos().list(part = 'snippet', id = YOUTUBE_MOVIE_ID).execute()['items'][0]['snippet']
#print('動画タイトル : ',snippet['title'])
for i in range(10):
 statistics = youtube.videos().list(part = 'statistics', id = YOUTUBE_MOVIE_ID).execute()['items'][0]['statistics']
 list_statistics.append(statistics['viewCount'])
 dt2 = datetime.datetime.now()
 list_dt2.append(dt2)
wb = Workbook()
sheet = wb.create_sheet("sheet01",0) #sheet名
sheet.cell(row = 1, column = 1, value = "取得順序")
sheet.cell(row = 1, column = 2, value = "再生回数")
X = np.arange(10)
len_data = len(X)
for i in range(1, len_data):
    sheet.cell(row= i + 1, column = 1, value = X[i])
    sheet.cell(row= i + 1, column = 2, value = int(list_statistics[i]))
chart = BarChart()
values = Reference(sheet,
                min_row=1, min_col=2,
                max_row=11, max_col=2)
chart.add_data(values, titles_from_data=True)
xvalues = Reference(sheet,
                min_row=2, min_col=1,
                max_row=11, max_col=1)
chart.set_categories(xvalues)

sheet.add_chart(chart, "E15")
wb.save("視聴動向回数グラフ.xlsx") #左記ファイル名で保存


  • このグラフは以下のyoutube(アーティストのLisaさんの炎のFIRST TAKE)の視聴回数を取得しました(URL末尾のv=XXXXXの部分が動画のIDになります)。
    https://www.youtube.com/watch?v=4Q9DWZLaY2U
  • なお、再生回数が一定なのは、取得期間である、10秒以内に回数が上昇していないからです。
    スクリーンショット 2022-01-12 20.57.50.png

おわりに

  • 今回はPythonを使ってYoutubeAPIを呼び出し、取得したデータをエクセルに出力後、グラフ化するプログラムを紹介しました。
  • カラムの位置とか割とつまずきましたが、意外と簡単にできますね!
  • 引き続き、アウトプットたくさん作れるように努めていきます。

Discussion