1
Help us understand the problem. What are the problem?

posted at

updated at

Organization

[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秒以内に回数が上昇していないからです。 スクリーンショット 2022-01-12 20.57.50.png

おわりに

  • 今回はPythonを使ってYoutubeAPIを呼び出し、取得したデータをエクセルに出力後、グラフ化するプログラムを紹介しました。
  • カラムの位置とか割とつまずきましたが、意外と簡単にできますね!
  • 引き続き、アウトプットたくさん作れるように努めていきます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?