認証されたユーザーに対して、新しい YouTube API v3 を介して ID で特定の動画を「いいね」できるようにする必要があります。ここにあるアクティビティ/挿入ガイドに従っています。
https://developers.google.com/youtube/v3/docs/activities/insert
このコード例は、自分のチャンネルに速報を投稿する場合には問題なく動作しますが、本文を変更して like ステートメントを形成しようとすると、400 エラーが発生し続けます。body dict が設定されている元の例から私が変更したものは次のとおりです。
body = {}
body["snippet"] = dict(type='like')
body["contentDetails"] = dict(
like=dict(
resourceId=dict(
kind="youtube#video",
videoId='_M9khs87xQ8'
)
)
)
次のドキュメントによると、フィールドは正しく設定されているようです。
https://developers.google.com/youtube/v3/docs/activities
しかし、私は 400 HttpEror を取得し続けます
<HttpError 400 when requesting https://www.googleapis.com/youtube/v3/activities?alt=json&part=snippet%2CcontentDetails returned "Bad Request">
また、これをビデオ アクションのお気に入りに適用しようとしましたが、同じ結果が得られました。必須フィールドのいくつかが欠けていますか? これは、like アクションを作成するための正しいエンドポイントですか?
前もって感謝します、ジャスティン
アップデート
この問題はジェフによって回答されており、実際の解決策は以下に掲載されています
for item in youtube.channels().list(part='contentDetails', mine=True).execute().get('items', []):
playlists = item['contentDetails'].get('relatedPlaylists', {})
if 'likes' in playlists:
body = {
"snippet": {
"playlistId": playlists['likes'],
"resourceId": {
"kind": 'youtube#video',
"videoId": '_M9khs87xQ8'
}
}
}
youtube.playlistItems().insert(body=body, part='snippet').execute()