【環境】
Python3、macbook pro, Jupyter notebook
【コード】
from apiclient.discovery import build YOUTUBE_API_KEY = '自分のAPIキーを入力' youtube = build('youtube', 'v3', developerKey=YOUTUBE_API_KEY) search_response = youtube.search().list( part='snippet', #検索したい文字列を指定 q='荒野行動', #視聴回数が多い順に取得 order='viewCount', type='video', ).execute() def get_video_info(part, q, order, type, num): dic_list = [] search_response = youtube.search().list(part=part,q=q,order=order,type=type) output = youtube.search().list(part=part,q=q,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']] ddf = pd.concat([df1,df2], axis = 1) return ddf #関数の結果 get_video_info(part='snippet',q='荒野行動',order='viewCount',type='video',num = 20) ###videoカウントを追加する def get_statistics(id): statistics = youtube.videos().list(part = 'statistics', id = id).execute()['items'][0]['statistics'] return statistics df_static = pd.DataFrame(list(df['videoId'].apply(lambda x : get_statistics(x)))) df_output = pd.concat([df,df_static], axis = 1) df_output
【したいこと】
1関数の結果の場所のChannelIDをいれる
2channelIdとVideoViewの新しいDataFrameを作成する
3pd.concatでChannelIDを基準に新しいDFを作成する。
youtube.channels().list(part = 'statistics', id = '').execute()
【エラーメッセージ】
dfが存在しない。
For文なども試しましたが、失敗してしますのでご教授お願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。