📘
[Python] Youtube APIを使って動画の視聴回数動向をExcel出力しグラフ化
はじめに
- 今回は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秒以内に回数が上昇していないからです。
おわりに
- 今回はPythonを使ってYoutubeAPIを呼び出し、取得したデータをエクセルに出力後、グラフ化するプログラムを紹介しました。
- カラムの位置とか割とつまずきましたが、意外と簡単にできますね!
- 引き続き、アウトプットたくさん作れるように努めていきます。
Discussion