繁体   English   中英

对于 rails 上的 twitter gem,我如何有效地调用 user_timeline 并为多个用户抓取推文?

[英]For the twitter gem on rails, how do I efficiently call user_timeline and grab tweets for multiple users?

在我的 rails 控制器中,我有一个名为“usernames”的数组,它只有 10 个没有“@”符号的 twitter 句柄。 我将这些用户的最新推文存储在一个名为“tweets”的数组中,并具有以下分配:

tweets = usernames.map{|username| $client_local.user_timeline(username,count: 1)[0].text}

$client_local 在哪里:

$client_local = Twitter::REST::Client.new do |config|
    config.consumer_key = 'xxxx'
    config.consumer_secret = 'xxxx'
    config.access_token = 'xxxx'
    config.access_token_secret = 'xxxx'
end

我使用了 ruby​​ 基准测试模块,发现“推文”分配需要 2.5 秒才能运行。 我猜这需要很长时间,因为 user_timeline 函数被调用了 10 次,从而建立了 10 个单独的连接。

寻找解决方案,我去了sferik的github进行配置选项,根据页面上的这个解释,似乎“承载tokan”是我需要的:

client.user("sferik")

注意:第一次调用该方法时,会发出两次 API 请求。 首先,它将获取访问令牌以执行请求。 然后,它将获取请求的用户。 访问令牌将被缓存以用于使用同一客户端发出的后续请求,但您可能希望手动获取访问令牌一次并在初始化客户端时使用它以避免每次发出两个请求。

client.bearer_token

此令牌永不过期,除非失效,否则不会更改。 获得不记名令牌后,您可以使用它来初始化客户端以避免发出额外的请求。

  1. 我一直无法找到我的应用的不记名令牌或弄清楚如何获得一个
  2. 如果这是我问题的解决方案,或者我应该寻找其他东西,我不是 100%。

想法?

在网上搜索,我看到有人建议在我的 Twitter 帐户上列出这些用户,然后请求“列出/状态”。 这不是一个选项,因为每次设置数组时,“usernames”数组中的 10 个用户名都不同。

  1. 在 gem 之外,您可以从POST /oauth2/token请求不记名令牌,其描述在https://dev.twitter.com/oauth/reference/post/oauth2/token

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM