YouTube Data API を使ってチャンネルIDから動画の情報を取得する

YouTube Data API を使ってチャンネルIDから動画の情報を取得します.

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

# YouTube Data APとは

YouTubeが提供しているAPIで、動画やチャンネル、再生リストに関わる情報を取得して、自分のWebサイトやアプリケーションで使用することができます。
公式のドキュメントが用意されているので、詳しくはこちらをご覧ください。
https://developers.google.com/youtube/v3/getting-started?hl=ja
引用元:YouTube Data API v3を使用して、YouTubeページと同じリストモジュールを作ってみた (opens new window)

YouTube が提供している API で、動画やチャンネルなど情報を取得して、自分の Web サイトやアプリケーションで使用することができます。
一日あたりのAPI使用量(クォータ)の上限が10000になっているので、注意して使用してください。
引用元:【Python】YouTube Data API を使って、いろんな情報を取得してみた! (opens new window)

# モジュールのインストール

!pip install google-api-python-client

# youtubeの情報を取得(複数の動画)

特定のキーワードで検索かけて,複数の動画の情報を取得します.

最終的には,DataFrameで出力します.

ここでは,以下の情報を取得します.

  • video_id
  • タイトル
  • クレイピング日時
  • 動画の公開日時
  • チャンネルタイトル
  • チャンネルID
  • 概要欄
  • サムネイル

# 特定のチャンネルの動画情報を取得

特定のチャンネルから動画情報を取得します.

チャンネルIDはyoutubeチャンネルページのURLの末尾の文字列に記載されています.

https://www.youtube.com/channel/{チャンネルID}

ここでは,こーじさんの情報を抽出します(https://www.youtube.com/channel/UCrkqNT0_Fd5_TIWdjey6K0A).

YouTubeのチャンネル情報を取得するためにYouTubeAPIを使ってみた。YouTubeAPIを使うには (opens new window)

import datetime
import pandas as pd
from apiclient.discovery import build

#numに入れた数字×5件の情報を取得
#その他のパラメーターはAPIから情報を取得するパラメータと同じ
# 動画のタイトル等を抜粋()
def get_channel_video_info(part, channel_Id, order, type, num):
    dic_list = []
    search_response = youtube.search().list(part=part,channelId=channel_Id,order=order,type=type)
    output = youtube.search().list(part=part,channelId=channel_Id,order=order,type=type).execute()

    #一度に5件しか取得できないため何度も繰り返して実行
    for i in range(num):        
        dic_list = dic_list + output['items']
        search_response = youtube.search().list_next(search_response, output)
        output = search_response.execute()

    df = pd.DataFrame(dic_list)
    #各動画毎に一意のvideoIdを取得
    df1 = pd.DataFrame(list(df['id']))['videoId']
    #各動画毎に一意のvideoIdを取得必要な動画情報だけ取得
    df2 = pd.DataFrame(list(df['snippet']))[['channelTitle','publishedAt','channelId','title','description','thumbnails']]
    
    ddf = pd.concat([df1,df2], axis = 1)
    
    # 日本時刻に修正+9hours
    ddf['publishedAt'] = pd.to_datetime(ddf['publishedAt']) + datetime.timedelta(hours=9)

    return ddf

#videoIdを入力することで、その動画の具体的な再生回数やいいね数を取得する関数を作成
def get_statistics(id):
    statistics = youtube.videos().list(part = 'statistics', id = id).execute()['items'][0]['statistics']
    return statistics

def make_channel_video_dataframe(YOUTUBE_API_KEY, channel_Id, order, num):
    # 動画情報の取得
    df_snippet = get_channel_video_info(part='snippet',channel_Id=channel_Id,order=order,type='video',num = num)
    # 動画の再生回数等を取得
    df_static = pd.DataFrame(list(df_snippet['videoId'].apply(lambda x : get_statistics(x))))
    
    # データフレームの結合
    df_output = pd.concat([df_snippet,df_static], axis = 1)
    
    # スクレイピング日時を入力
    scrape_date = str(datetime.date.today()).replace('-','')
    df_output['scrape_date'] = scrape_date
    
    return df_output
# 引数
YOUTUBE_API_KEY = '************'
channel_Id = 'UCrkqNT0_Fd5_TIWdjey6K0A'
order = 'date'
num = 2 #Max:75/day

# APIの取得
youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY)
# データフレーム実行とcsv出力
df_csv = make_channel_video_dataframe(YOUTUBE_API_KEY, channel_Id, order, num)
display(df_csv[0:3])
# df_csv.to_csv('./channel_csv/{0}_{1}.csv'.format(str(datetime.date.today()).replace('-',''), channel_Id), index=False)
videoId channelTitle publishedAt channelId title description thumbnails viewCount likeCount dislikeCount favoriteCount commentCount scrape_date
0 QCC3xzGELuw こーじ 2021-06-29 20:43:53+00:00 UCrkqNT0_Fd5_TIWdjey6K0A 固定式ダイヤル錠の仕組みを解説【物理エンジン】 使用ソフト ・Unity(メイン) ・Blender(3Dモデリング) ・Tinkercad... {'default': {'url': 'https://i.ytimg.com/vi/QC... 42725 1310 29 0 106 20210701
1 iij0p63r0bM こーじ 2021-06-27 23:59:28+00:00 UCrkqNT0_Fd5_TIWdjey6K0A 【物理エンジン】スケボーが曲がる仕組みを分かりやすく解説【凄い】 使用ソフト ・Unity(メイン) ・Blender(3Dモデリング) ・Tinkercad... {'default': {'url': 'https://i.ytimg.com/vi/ii... 42126 1516 12 0 134 20210701
2 iloc3Qp2AyM こーじ 2021-06-24 17:53:11+00:00 UCrkqNT0_Fd5_TIWdjey6K0A 【ゴルフ打ちっ放し】2階3階からの飛距離は実際には何ヤードなのか?【物理エンジン】 使用ソフト ・Unity(メイン) ・Blender(3Dモデリング) ・Tinkercad... {'default': {'url': 'https://i.ytimg.com/vi/il... 48782 1174 27 0 106 20210701

# 参考サイト

【Python】YouTube Data API を使って、いろんな情報を取得してみた! (opens new window)

YouTube Data API v3を使用して、YouTubeページと同じリストモジュールを作ってみた (opens new window)

Youtube Data APIを使ってPythonでYoutubeデータを取得する (opens new window)

Search: list | YouTube Data API | Google Developers (opens new window)

全国630店舗以上!もみほぐし・足つぼ・ハンドリフレ・クイックヘッドのリラクゼーション店【りらくる】

YouTube Data API を使って再生リストから動画の再生回数等の情報を取得する

YouTube Data API を使って再生リストから動画の再生回数等の情報を取得する

YouTube Data API を使って再生リストから動画の再生回数等の情報を取得します.

Python + CycleGAN-VC2で音質変換を実装する

Python + CycleGAN-VC2で音質変換を実装する

Clubhouseの影響で音質系に興味を持ちました.本稿では,Python + CycleGAN-VC2で音質変換を実施します.