【问题标题】:Get LIKED youtube videos via API通过 API 获取 LIKED youtube 视频
【发布时间】:2013-01-20 14:15:36
【问题描述】:

我知道如何使用 YouTube API 获取“喜欢”视频的数量,但我想获取这些视频的列表。

阅读文档后,我认为可以通过获取“喜欢”播放列表来完成,但我不知道具体如何。

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

【问题讨论】:

    标签: youtube youtube-api


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您将以下参数传递给playlistItems.list,您可以获得与授权帐户关联的喜欢视频的播放列表。

      auth: "your_auth_key"
      playlistId: "LL"
      

      这是我运行的脚本中的代码 sn-p,用于在文本文件中获取喜欢的视频。
      注意:我使用 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); });
      
      }
      

      【讨论】:

        【解决方案3】:

        如果您使用 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,您可能不会在获得喜欢的视频方面取得很大成功。

        【讨论】:

        • 很抱歉这么晚才回复你……没关系。但是,现在,我无法对 API 进行简单的访问...... :(
        • 我不知道如何对其进行身份验证。我不想要求用户进行自动化。它必须已经过自动化。
        • 在这两个请求中,您必须将 &key={YOUR_API_KEY} 替换为 &acces_token={ACCESS_TOKEN}。它仅适用于授权查询
        猜你喜欢
        • 1970-01-01
        • 2023-03-30
        • 2019-10-06
        • 2017-12-10
        • 2019-09-12
        • 1970-01-01
        • 2014-11-20
        • 2019-01-11
        • 2015-03-27
        相关资源
        最近更新 更多