通过API获取YouTube视频

时间:2013-01-20 14:15:36

标签: youtube youtube-api youtube-javascript-api

我知道如何从youtube API获取likescount,但我想获得喜欢的列表。 阅读文档,我认为可以完成获取喜欢的播放列表,或类似的东西......

我可以通过Javascript API获取我喜欢的视频列表吗?

3 个答案:

答案 0 :(得分:19)

如果你正在使用API​​的v3,那么你可以获得你喜欢的视频列表。首先,拨打您的频道Feed,如下所示:

https://www.googleapis.com/youtube/v3/channels?part=contentDetails&mine=true&key={YOUR_API_KEY}

然后,在回复中,您将获得相关播放列表的列表 - 其中一个将被键入"喜欢。"获取该播放列表ID并请求其商品Feed:

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId={PLAYLIST_ID}&key={YOUR_API_KEY}

如果您不使用API​​的v3,您可能无法在获取喜欢的视频方面取得很大成功。

答案 1 :(得分:4)

从2020年开始,/videos端点可让您直接过滤喜欢的视频,例如:

GET https://www.googleapis.com/youtube/v3/videos?myRating=like&part=snippet
Authorization: Bearer <oauth token>

答案 2 :(得分:3)

如果您将以下参数传递给 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); });

}