お気に入りのユーチューバーの過去の動画を探すとき、スクロールがとても大変に感じたことはありませんか?そのような場合、動画のタイトルと動画のURL情報がセットになっている一覧が取得できたら便利ですよね。
そこで今回はYouTube Data APIを使用して指定したユーチューバーの動画情報を取得しましょう。
これにより、過去の動画のURLへのアクセスが容易になるかもしれません。
ではいってみましょう。
パッケージのインストール
まずは以下の3つのパッケージをインストールしましょう。
pip install isodate
pip install google-api-python-client
pip install python-dateutil
コードサンプル
こちらが指定したユーチューバーの動画情報を全件取得するコードです。
import datetime
import csv
import isodate
from googleapiclient.discovery import build
from dateutil.relativedelta import relativedelta
#-------↓パラメータ入力↓-------
developerKey = "ここに自身のAPIキー"
channel_id = "ここにYouTuberのチャンネルID"
#-------↑パラメータ入力↑-------
youtube = build("youtube", "v3", developerKey=developerKey)
video_info = []
def youtube_search(pagetoken, st, ed):
# YouTubeAPIをビルド
youtube = build("youtube", "v3", developerKey=developerKey)
# 指定したチャンネルの情報を取得
search_response = youtube.search().list(
part = "snippet",
channelId = channel_id,
maxResults = 50,
type = "video",
publishedAfter = st, #'2013-01-01T00:00:00Z',
publishedBefore = ed, #'2014-01-01T00:00:00Z',
order = "date",
pageToken = pagetoken
).execute()
# 取得したチャンネルの情報から動画IDを取得
video_list = []
for search_result in search_response.get("items", []):
if search_result["id"]["kind"] == "youtube#video":
video_list.append(search_result["id"]["videoId"])
# 動画IDの一覧から動画情報を取得
video_response= youtube.videos().list(
part = "id,snippet,contentDetails,player,statistics",
id = ",".join(video_list)
).execute()
# 取得した動画情報から各情報を取得
for video_result in video_response.get("items", []):
# API参考URL = https://developers.google.com/youtube/v3/docs/videos?hl=ja#resource
publishedAt = video_result["snippet"]["publishedAt"] if 'publishedAt' in video_result['snippet'] else ''
title = video_result["snippet"]["title"] if 'title' in video_result['snippet'] else ''
video_id = video_result["id"]
url = 'https://www.youtube.com/watch?v=%s' % video_result["id"]
categoryId = video_result["snippet"]["categoryId"] if 'categoryId' in video_result['snippet'] else ''
if "duration" in video_result["contentDetails"]:
duration = isodate.parse_duration(video_result["contentDetails"]["duration"])
else:
""
viewCount= video_result["statistics"]["viewCount"] if 'viewCount' in video_result['statistics'] else ''
likeCount = video_result["statistics"]["likeCount"] if 'likeCount' in video_result['statistics'] else ''
commentCount = video_result["statistics"]["commentCount"] if 'commentCount' in video_result['statistics'] else ''
video_info.append([publishedAt,title,video_id,url,categoryId,duration,viewCount,likeCount,commentCount])
print(video_info)
try:
nextPagetoken = search_response["nextPageToken"]
youtube_search(nextPagetoken, st, ed)
except:
return
# ここを適宜変更してください
dt = datetime.datetime(2024, 1, 1, 0, 0)
for i in range(1, 9):
youtube_search('', dt.isoformat()+'Z', (dt + relativedelta(months=1)).isoformat()+'Z')
dt = dt + relativedelta(months=1)
dt_now = datetime.datetime.now().strftime('%Y%m%d_%H%M%S')
with open(dt_now + '_' + channel_id + '_channel-video-info.csv', 'w', newline='', encoding='utf-16') as f:
writer = csv.writer(f, dialect='excel-tab', quoting=csv.QUOTE_ALL)
writer.writerows(video_info)
使用方法
YouTubeの動画情報を取得するためにはYouTubeAPIを使用する必要があります。APIを使用するにはAPIキーを取得する必要があります。
YoutubeAPIキーの取得
こちらの記事を参考にAPIキーを取得しましょう!

APIキーをプログラムに記載
取得したAPIキーをプログラムの次の部分に記載しましょう。
#——-↓パラメータ入力↓——-
developerKey = “ここに自身のAPIキー“
channel_id = “ここにYouTuberのチャンネルID”
#——-↑パラメータ入力↑——-
YouTuberのチャンネルIDを調べる
こちらのサイトでYouTuberのチャンネルIDを調べましょう。

チャンネルIDをプログラムに記載
調査したチャンネルIDをプログラムの次の部分に記載しましょう。
#——-↓パラメータ入力↓——-
developerKey = “ここに自身のAPIキー“
channel_id = “ここにYouTuberのチャンネルID”
#——-↑パラメータ入力↑——-
取得期間の変更
取得する動画の投稿日を適宜変更してください。例えば2023年の3月からの動画を取得したい場合は赤字の部分を2023, 3に変更します。そしてrange(1, 9)は、何か月分を取得するかを指定します。例えばrange(1, 9)は8回ループするので、8か月分が取得されます。
# ここを適宜変更してください
dt = datetime.datetime(2024, 1, 1, 0, 0)
for i in range(1, 9):
youtube_search(”, dt.isoformat()+’Z’, (dt + relativedelta(months=1)).isoformat()+’Z’)
dt = dt + relativedelta(months=1)
実行結果
同じ階層に実行結果のCSVファイルが作成されます。

さいごに
いかがだったでしょうか。
今回はYouTube Data APIを使用して、指定したユーチューバーの動画情報を取得する方法をご紹介しました。
ぜひご活用ください。
※参考にさせていただいたサイトです。
コメント