【问题标题】:get lateset videos from some Youtube channels, using youtube API使用 youtube API 从一些 Youtube 频道获取最新视频
【发布时间】:2020-12-07 11:21:50
【问题描述】:

我正在尝试建立网站(为我自己的),向我展示来自 youtube 上 20 个频道的 5 个最新视频。 因此,我在以下请求中为每个特定频道使用:

https://www.googleapis.com/youtube/v3/search?key={API_KEY}&channelId={CHANNEL_ID}&part=snippet,id&order=date&maxResults=5

每个请求需要 100 个单位,20 个频道是 2000 个单位,而由于 youtube API 的配额,我每天只有 10,000 个单位。而且因为我试图弄清楚它是如何工作的,有时也有错误,我多次使用同一个请求,我的配额很快就用完了。

所以我的问题是:有什么方法可以替换SEARCH 中的请求,CHANNEL/VIDEOS(列表)请求以降低请求的成本(这个成本只有 1 个单位)。 或者也许可以在一个请求中获取来自所有 20 个频道的所有 5 个视频?

对不起,如果我的英语有任何错误 在此先感谢大家。

【问题讨论】:

    标签: youtube-api youtube-data-api


    【解决方案1】:

    您可以使用Activities.list API 端点,通过以下方式查询:

    • channelId=CHANNEL_ID,
    • part=snippet,contentDetails,
    • fields=items(snippet(type,publishedAt),contentDetails(upload)),和
    • publishedAfter=...

    其中 CHANNEL_ID 在所有频道的 ID 中有所不同 您的兴趣(因此 N 频道暗示 N 端点调用)。

    您应该计算一个有意义的publishedAfter 值以传递给端点。将这样的值附加到您在应用中监控的每个频道,并将其保持为 1 秒加上与该频道的最新视频相对应的publishedAt 属性的值

    只需在不带publishedAfter 参数的情况下发出端点调用即可初始化/重置每个通道的日期时间值。

    根据文档,您将从该端点获得一个由 Activities resource 项组成的结果集,其中包含以下信息:

    contentDetails.upload(对象)
    上传对象包含有关上传视频的信息。仅当 snippet.typeupload 时,此属性才存在。

    contentDetails.upload.videoId(字符串)
    YouTube 用于唯一标识已上传视频的 ID。

    官方文档指出,对Activities.list 端点的每次调用都有一个单位的quota cost

    【讨论】:

    • 感谢您的支持!它解决了我的问题。我没有使用publishedAfter,它返回5个最新视频(maxResults)。
    猜你喜欢
    • 1970-01-01
    • 2020-08-17
    • 2019-08-10
    • 2019-10-06
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 2016-03-01
    • 2015-11-11
    相关资源
    最近更新 更多