LoginSignup
4
1

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-01-12

はじめに

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1