我知道如何使用 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}
然后,在响应中,您将获得相关播放列表的列表——其中一个将被键入“喜欢”。获取该播放列表 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); });
}