【问题标题】:Youtube API 3 get latest videosYoutube API 3 获取最新视频
【发布时间】:2015-11-11 11:46:19
【问题描述】:

所以我试图从用户上传的视频中抓取 10 个最新视频。

现在唯一的问题是 playlistitems 请求中唯一可见的日期是 publishedAt,即视频上传的日期 - 不是公开的日期,这有很大的不同。

我注意到我可以通过 video 请求获取正确的日期,但这似乎不是最好的地方。

让我给你看一个我正在处理的例子。

让我们使用 Maroon5 频道。

forUserName: Maroon5VEVO

GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=Maroon5VEVO&key={YOUR_API_KEY}

https://developers.google.com/youtube/v3/docs/channels/list#try-it

这里是我们抓取的地方:

uploadsId: UUN1hnUccO4FD5WfM7ithXaw

所以我们可以查询:

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

https://developers.google.com/youtube/v3/docs/playlistItems/list#try-it

然后我们可以看一些视频。

让我们抓住最新的。对我来说就是这个:

"title": "Maroon 5 - This Summer's Gonna Hurt Like A ... (Explicit)", "videoId": "Wa64gOwuIyE"

最重要的是:

"publishedAt": "2015-06-01T17:41:58.000Z",

现在让我们通过运行以下查询来获取该视频的更多详细信息:

GET https://www.googleapis.com/youtube/v3/videos?part=snippet&id=Wa64gOwuIyE&key={YOUR_API_KEY}

https://developers.google.com/youtube/v3/docs/videos/list#try-it

在这里,我们可以得到更详细的视图,其中包含...不同的日期!

"publishedAt": "2015-06-01T20:00:01.000Z",

这意味着播放列表中的 publishedAt 日期实际上是上传日期,而不是视频公开的日期。

在我们的 10 个最新项目列表中,我们想要最新发布的视频,而不是最新上传的视频。

如果你知道如何处理它,请分享。

这是我现在的 sn-p(使用错误的发布日期)

 $.get(
        "https://www.googleapis.com/youtube/v3/playlistItems",{
        part : 'snippet',
        maxResults : 10,
        playlistId : UPLOADS_PID,
        key: YOUR_API_KEY},
        function(data) {

            $.each( data.items, function(i, item ) {                

                (...)

            });
        }
    );

【问题讨论】:

  • 您的用例是什么? playlistItems 的publishedAt 日期应该是视频添加到播放列表的时间,也是视频上传的时间,你是对的。但我怀疑这些视频是否会在它们实际发布之前提前上传,这会产生巨大的影响。最坏的情况,您可以获取最后 15-20 个视频,使用 videos.list 并获取每个视频的 publishedAt 值,然后按此方式排序。
  • 不幸的是,在我的用例中,我们正在处理一个有许多私人视频的频道,这些视频正在内部审查然后公开(不幸的是它在同一个播放列表中)。例如,我们有一个 5 个月前上传的视频,但刚刚公开 - 所以您可以想象,通过 playlistItem 请求,它与前 10 个结果相去甚远。 videos.list 可以工作,但问题是上传了 1000 个视频,这并不是一种好方法,因为您必须将 1000 个 id 传递给 queryParam,然后按日期对整个内容进行排序。

标签: youtube-api youtube-data-api


【解决方案1】:

我相信您可以使用 /search 端点。由于您想从用户上传的视频中抓取 10 个最新视频,您可以使用频道 ID 代替播放列表 ID。

请求:

GET https://www.googleapis.com/youtube/v3/search?part=snippet&channelId={CHANNEL_ID}&maxResults=10&order=date&type=video&key={YOUR_API_KEY}

【讨论】:

  • 完美。这正是我一直在寻找的。荣誉。
  • 我在获取视频列表时遇到了一些问题。任何想法?? stackoverflow.com/questions/43950504/…
  • 遗憾的是,使用搜索并不总是返回所有结果。
  • 它只返回最后 500 个视频。如何获取频道的所有视频?
  • 如果你担心配额,它可以占用超过 100 个配额;)尝试视频方法它需要 1
猜你喜欢
  • 1970-01-01
  • 2020-04-10
  • 2019-10-06
  • 2020-12-07
  • 2019-08-10
  • 2020-08-17
  • 1970-01-01
  • 2020-04-20
  • 2014-11-20
相关资源
最近更新 更多