YouTube APIを使用して「いいね」の動画の数を取得する方法は知っていますが、それらの動画のリストを取得したいと思います。
ドキュメントを読んだ後、「いいね」プレイリストを取得することでそれを行うことができると思いますが、正確な方法はわかりません。
Javascript APIを介して「いいね」のビデオリストを取得できますか?
YouTube APIを使用して「いいね」の動画の数を取得する方法は知っていますが、それらの動画のリストを取得したいと思います。
ドキュメントを読んだ後、「いいね」プレイリストを取得することでそれを行うことができると思いますが、正確な方法はわかりません。
Javascript APIを介して「いいね」のビデオリストを取得できますか?
APIのv3を使用している場合は、お気に入りのビデオリストを取得できます。まず、次のようにチャンネルフィードを呼び出します。
https://www.googleapis.com/youtube/v3/channels?part=contentDetails&mine=true&key={YOUR_API_KEY}
次に、応答で、関連するプレイリストのリストが表示されます。1つには「いいね」というキーが付けられます。そのプレイリストIDを取得し、そのアイテムフィードをリクエストします。
https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId={PLAYLIST_ID}&key={YOUR_API_KEY}
APIのv3を使用しない場合、高評価の動画を取得するのにあまり成功しない可能性があります。
2020年の時点で、/videos
エンドポイントを使用すると、気に入った動画を直接フィルタリングできます。例:
GET https://www.googleapis.com/youtube/v3/videos?myRating=like&part=snippet
Authorization: Bearer <oauth token>
次の引数をに渡すplaylistItems.list
と、承認されたアカウントに関連付けられた高評価の動画の再生リストを取得できます。
auth: "your_auth_key"
playlistId: "LL"
これは、高評価の動画をテキストファイルで取得するために実行したスクリプトのコードスニペットです。
注:YouTube APIドキュメントで提供されているヘルパーコードを使用して、を取得authkey
し、関数に渡しました。
// get all the liked videos by a channel
async function get_liked_playlist(authkey){
fs.writeFile("./output/"+"all_liked_videos"+".txt", "\n"+time_stamp, { flag: 'a+' }, e => console.log(e) );
let nextPageToken_ = null;
let text__ = "";
let i = 0;
do {
await API.playlistItems.list({
key: process.env.API_KEY,
auth: authkey,
part: "snippet",
maxResults: 50, // 50 is the max value
playlistId: "LL",
pageToken: nextPageToken_
})
.then(res => {
let results = res.data.items;
nextPageToken_ = res.data.nextPageToken;
results.forEach(item => {
// console.log(`Title: ${item.snippet.title}\tURL: https://youtu.be/${item.snippet.resourceId.videoId}`)
i++;
text__ += "\nTitle: "+item.snippet.title+"\tURL: https://youtu.be/"+item.snippet.resourceId.videoId;
});
console.log("items done: "+i+"\tnextPageToken: "+nextPageToken_);
})
.then( fs.writeFile("./output/"+"all_liked_videos"+".txt", text__ , { flag: 'a+' }, e => { if(e) console.log("error with fs\t"+e); }) )
.then( text__ = "" )
.catch( e => console.log("error here\t" + e) )
} while (nextPageToken_ != null)
if(text__.length>1) fs.writeFile("./output/"+"all_liked_videos"+".txt", text__ , { flag: 'a+' }, e => { if(e) console.log("error with fs\t"+e); });
}