gpt4 book ai didi

ruby - 如何使用 Yt gem 获取 YouTube channel 的所有视频?

转载 作者:行者123 更新时间:2023-12-03 05:55:37 24 4
gpt4 key购买 nike

我想使用 Yt gem获取 channel 的所有视频。我使用我的 YouTube 数据 API key 配置 gem。

不幸的是,当我使用它时,它最多返回约 1000 个视频,即使对于拥有超过 1000 个视频的 channel 也是如此。 Yt::Channel#video_count返回正确数量的视频。

channel = Yt::Channel.new id: "UCGwuxdEeCf0TIA2RbPOj-8g"
channel.video_count # => 1845
channel.videos.map(&:id).size # => 949

Youtube API 不能设置为每个请求返回超过 50 个项目,所以我猜 Yt 会自动执行几个请求,遍历每个下一页结果,以便能够返回超过 50 个结果。

出于某种原因,尽管它没有遍历所有结果页面。我在 Yt 中没有看到一种方法来控制它如何通过结果页面。特别是我找不到强制它获取单页结果的方法,访问返回值 nextPageToken ,以便使用此值执行新请求。

任何的想法?

最佳答案

查看 gem 的/spec 文件夹,您可以看到代码测试。

 describe 'when the channel has more than 500 videos' do
let(:id) { 'UC0v-tlzsn0QZwJnkiaUSJVQ' }

specify 'the estimated and actual number of videos can be retrieved' do
# @note: in principle, the following three counters should match, but
# in reality +video_count+ and +size+ are only approximations.
expect(channel.video_count).to be > 500
expect(channel.videos.size).to be > 500
end
end

我做了一些测试,我注意到了这一点:video_count 是 youtube 上显示在 channel 名称旁边的数字。这个值是不准确的。不确定它代表什么。

如果你这样做 channel.videos.size ,这个数字也不准确,因为视频集合可以包含一些空(?)记录。

如果你这样做 channel.videos.map(&:id).size返回的值应该是正确的。正确我的意思是它应该等于列出的视频数量:

https://www.youtube.com/channel/:channel_id/videos

关于ruby - 如何使用 Yt gem 获取 YouTube channel 的所有视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com