お気に入りのユーチューバーの過去の動画を探すとき、スクロールがとても大変に感じたことはありませんか?そのような場合、動画のタイトルと動画のURL情報がセットになっている一覧が取得できたら便利ですよね。
そこで今回はYouTube Data APIを使用して指定したユーチューバーの動画情報を取得しましょう。
これにより、過去の動画のURLへのアクセスが容易になるかもしれません。
ではいってみましょう。
パッケージのインストール
まずは以下の3つのパッケージをインストールしましょう。
1 |
pip install isodate |
1 |
pip install google-api-python-client |
1 |
pip install python-dateutil |
コードサンプル
こちらが指定したユーチューバーの動画情報を全件取得するコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
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を使用して、指定したユーチューバーの動画情報を取得する方法をご紹介しました。
ぜひご活用ください。
※参考にさせていただいたサイトです。
コメント