Youtube api v3获取用户列表';s视频

Youtube api v3获取用户列表';s视频,youtube,youtube-api,youtube-data-api,Youtube,Youtube Api,Youtube Data Api,有了Youtube api v2,就有了获取视频的简单方法。只需发送如下查询: Youtube api v2还有一个用于构建查询的交互式演示页面: 对于Youtube api v3,我不知道相应的方法。请用api v3为我指路 谢谢大家! 该方法将返回一个JSON,其中包含有关频道的一些信息,包括“上载”播放列表的播放列表ID: https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername

有了Youtube api v2,就有了获取视频的简单方法。只需发送如下查询:

Youtube api v2还有一个用于构建查询的交互式演示页面:

对于Youtube api v3,我不知道相应的方法。请用api v3为我指路

谢谢大家!

该方法将返回一个JSON,其中包含有关频道的一些信息,包括“上载”播放列表的播放列表ID:

https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=OneDirectionVEVO&key={YOUR_API_KEY}
使用播放列表ID,您可以通过以下方法获取视频:


您可以在文档页面的末尾测试它们。

这样就可以了。这段代码只获取并输出标题,但您可以获取任何想要的详细信息

// Get Uploads Playlist
$.get(
   "https://www.googleapis.com/youtube/v3/channels",{
   part : 'contentDetails', 
   forUsername : 'USER_CHANNEL_NAME',
   key: 'YOUR_API_KEY'},
   function(data) {
      $.each( data.items, function( i, item ) {
          pid = item.contentDetails.relatedPlaylists.uploads;
          getVids(pid);
      });
  }
);

//Get Videos
function getVids(pid){
    $.get(
        "https://www.googleapis.com/youtube/v3/playlistItems",{
        part : 'snippet', 
        maxResults : 20,
        playlistId : pid,
        key: 'YOUR_API_KEY'},
        function(data) {
            var results;
            $.each( data.items, function( i, item ) {
                results = '<li>'+ item.snippet.title +'</li>';
                $('#results').append(results);
            });
        }
    );
}


<!--In your HTML -->
<ul id="results"></ul>
//获取上传播放列表
美元(
"https://www.googleapis.com/youtube/v3/channels",{
第部分:“内容详细信息”,
forUsername:'USER\u CHANNEL\u NAME',
key:'您的_API _key'},
功能(数据){
$.each(data.items,function(i,item){
pid=item.contentDetails.relatedPlaylists.uploads;
getVids(pid);
});
}
);
//获取视频
函数getVids(pid){
美元(
"https://www.googleapis.com/youtube/v3/playlistItems",{
部分:'代码片段',
最大结果:20,
playlid:pid,
key:'您的_API _key'},
功能(数据){
var结果;
$.each(data.items,function(i,item){
结果=“
  • ”+item.snippet.title+”
  • ; $(“#结果”)。追加(结果); }); } ); }

      另一种方法是通过:property mine=true获取当前oauth身份验证用户的播放列表

      其中,oauth access_令牌在身份验证后检索:


      在API的V3中,情况发生了很大的变化。下面是一个示例,它将引导您通过v3api调用获取在给定频道上载的视频列表,并使用API浏览器进行实时演示


      YouTube开发者现场直播:在v3中获得频道上传-

      您发布的请求实际上是在3.0 api中进行搜索,而不是播放列表请求。这样做也更容易。不过,您确实需要更改频道ID的用户名


      例如,获取{YOUR_API_KEY}

      如果要获取播放列表中包含300多个视频的视频,请不要使用playlitems.list。您可以在“试用”部分的“谷歌链接”中试用。它返回undefined

      我在我的项目中也使用了。它只返回未定义的值。

      在PHP中: 我使用pageToken属性转到播放列表的所有页面。希望它能帮助您

      //step 1: get playlist id
      
       $response = file_get_contents("https://www.googleapis.com/youtube/v3/channels?key={$api_key}&forUsername={$channelName}&part=contentDetails");
       $searchResponse = json_decode($response,true);
       $data = $searchResponse['items'];
       $pid =  $data[0]['contentDetails']['relatedPlaylists']['uploads'];
      
      //step 2: get all videos in playlist
      
       $nextPageToken = '';
       while(!is_null($nextPageToken)) {
           $request = "https://www.googleapis.com/youtube/v3/playlistItems?key={$api_key}&playlistId={$pid}&part=snippet&maxResults=50&pageToken=$nextPageToken";
      
          $response = file_get_contents($request);
          $videos = json_decode($response,true);
      
          //get info each video here...
      
         //go next page
          $nextPageToken = $videos['nextPageToken'];
      }
      

      如果这对这里的任何人都有帮助,这就是我发现的,到目前为止似乎对我很有效。在发出此请求之前,我正在通过OAuth 2.0对该成员进行身份验证,这将为我提供已验证成员的视频。与往常一样,您的个人里程可能会有所不同:D

      curl https://www.googleapis.com/youtube/v3/search -G \
      -d part=snippet \
      -d forMine=true \
      -d type=video \
      -d order=date \
      -d access_token={AUTHENTICATED_ACCESS_TOKEN}
      

      下面是一些使用官方Google API节点库()的代码

      const readJson=require(“r-json”);
      const google=require('googleapis');
      constyoutube=google.Youtube('v3');
      //不要将凭据存储在版本控制中
      const CREDENTIALS=readJson(“/some/directory/CREDENTIALS.json”);
      让用户=”;
      设numberItems=10;
      让channelConfig={
      key:CREDENTIALS.youtube.API_key,
      第部分:“内容详情”,
      forUsername:user
      };
      Youtube.channels.list(channelConfig,函数(错误,数据){
      如果(错误){
      log(“获取YouTube用户视频列表时出错”,错误);
      返回;
      }
      //获取上传的播放列表Id
      让uploadsPlaylistId=data.items[0].contentDetails.relatedPlaylists.uploads;
      让播放列表配置={
      部分:'代码片段',
      最大结果:大小,
      PlayId:uploadsPlaylistId,
      密钥:CREDENTIALS.youtube.API\u密钥
      };
      //从上载播放列表中获取项目
      Youtube.playlitems.list(播放配置,函数(错误,数据){
      如果(错误){
      log(“获取YouTube用户视频列表时出错”,错误);
      }
      doSomethingWithYourData(data.items);
      });
      });
      
      如果配额成本是一个考虑因素,那么遵循这个简单的算法可能是有益的

      首先从…获取数据。。。这是一个简单的XML提要,它将为您提供视频ID,但您不能进一步指定“部分”(统计等)

      使用该列表中的视频ID,在/videos API端点上执行查询,该端点允许使用逗号分隔的视频ID列表,该列表只会导致1个配额成本,再加上0-2的任何其他零件参数。正如@chrismacp所指出的,使用/search端点更简单,但配额成本为100,这可以快速增加


      在进行第二次调用时,这里需要考虑资源(cpu、内存等),但我相信在许多情况下,这是一种有用的方法。

      在node.js中,可以通过以下代码实现

      需要
      authKey
      channelId
      作为
      options
      对象参数

      cb
      在获取数据后调用回调

      async function fetchChannelInfo(options) {
        const channelUrl = `https://www.googleapis.com/youtube/v3/channels?part=contentDetails,statistics&id=${
          options.channelId
        }&key=${options.authKey}`;
        const channelData = await axios.get(channelUrl);
      
        return channelData.data.items[0];
      }
      function fetch(options, cb) {
        fetchChannelInfo(options).then((channelData) => {
          options.playlistId = channelData.contentDetails.relatedPlaylists.uploads;
          const paylistUrl = `https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=${
            options.playlistId
          }&key=${options.authKey}`;
      
          axios
            .get(paylistUrl)
            .then((response) => {
              const payloadData = ;
      
              const videoList = [];
              response.data.items.forEach((video) => {
                videoList.push({
                  publishedAt: video.snippet.publishedAt,
                  title: video.snippet.title,
                  thumbnails: thumbnails,
                  videoId: video.snippet.resourceId.videoId,
                });
              });
      
              cb(null, videoList);
            })
            .catch((err) => {
              cb(err, null);
            });
        });
      }
      
      注意:axios用于RESTful请求。安装

      npm install axios
      
      上传功能可以是

      function uploads(pvideo){
      
      
             $.get(
              "https://www.googleapis.com/youtube/v3/playlistItems",{
                part: 'snippet',
                maxResults:12,
                playlistId:pvideo,
                key: api},
                function(data){
      
      
                  $.each(data.items, function(i, item){
      
                       videoTitle = item.snippet.title;
                   videoId = item.id;
                  description = item.snippet.description;
                  thumb = item.snippet.thumbnails.high.url;
                  channelTitle = item.snippet.channelTitle;
                  videoDate = item.snippet.publishedAt;
                  Catagoryid = item.snippet.categoryId;
                  cID = item.snippet.channelId;
      
                  })
                }
              );
           }
      

      函数tplawesome(e,t){res=e;for(var n=0;我找到了它。从中,我可以使用查询{YOUR\u API\u KEY}我搞不清楚你的API密钥是什么-玩过之后,我得到了--->你的API项目->API和身份验证->凭证->公共API访问->服务器密钥知道返回的JSON排序不同的原因吗?视频是一样的,但排序顺序与实际视频页面上的不同。我无法按上载日期/发布日期找到排序参数谢谢你的约会you@orbitory显然,排序是缺少的功能,请参阅此问题和可能的“解决方案”这里:哇!两个json调用来查看我自己的视频?可能是重复的我注意到Youtube的API引用中的视频非常过时,而且由于很多人都在努力使其正常工作,我创建了这个5m视频教程来帮助用户生成API密钥并启用Youtube API
      
      async function fetchChannelInfo(options) {
        const channelUrl = `https://www.googleapis.com/youtube/v3/channels?part=contentDetails,statistics&id=${
          options.channelId
        }&key=${options.authKey}`;
        const channelData = await axios.get(channelUrl);
      
        return channelData.data.items[0];
      }
      function fetch(options, cb) {
        fetchChannelInfo(options).then((channelData) => {
          options.playlistId = channelData.contentDetails.relatedPlaylists.uploads;
          const paylistUrl = `https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=${
            options.playlistId
          }&key=${options.authKey}`;
      
          axios
            .get(paylistUrl)
            .then((response) => {
              const payloadData = ;
      
              const videoList = [];
              response.data.items.forEach((video) => {
                videoList.push({
                  publishedAt: video.snippet.publishedAt,
                  title: video.snippet.title,
                  thumbnails: thumbnails,
                  videoId: video.snippet.resourceId.videoId,
                });
              });
      
              cb(null, videoList);
            })
            .catch((err) => {
              cb(err, null);
            });
        });
      }
      
      npm install axios
      
      $.get(
          "https://www.googleapis.com/youtube/v3/channels",{
            part: 'snippet,contentDetails,statistics,brandingSettings',
            id: viewid,
            key: api},
            function(data){
      
              $.each(data.items, function(i, item){
      
      
                channelId = item.id;
                pvideo = item.contentDetails.relatedPlaylists.uploads;
                uploads(pvideo);
      });
      
            });
      
      function uploads(pvideo){
      
      
             $.get(
              "https://www.googleapis.com/youtube/v3/playlistItems",{
                part: 'snippet',
                maxResults:12,
                playlistId:pvideo,
                key: api},
                function(data){
      
      
                  $.each(data.items, function(i, item){
      
                       videoTitle = item.snippet.title;
                   videoId = item.id;
                  description = item.snippet.description;
                  thumb = item.snippet.thumbnails.high.url;
                  channelTitle = item.snippet.channelTitle;
                  videoDate = item.snippet.publishedAt;
                  Catagoryid = item.snippet.categoryId;
                  cID = item.snippet.channelId;
      
                  })
                }
              );
           }