【问题标题】:Looping through Twitter search query results - Ruby on Rails gem遍历 Twitter 搜索查询结果 - Ruby on Rails gem
【发布时间】:2015-07-19 21:04:58
【问题描述】:

我正在构建一个报告工具来帮助一家社交媒体机构收集他们管理的帐户的统计信息。我正在使用Twitter gem

我想收集一个帐户当周收到的@提及次数。

由于有很多帐户(例如,大约 70 个),我希望该工具使用一个用户上下文来收集数据,而不是作为不同帐户重复登录和退出。

据我所知,这意味着我不能使用提及时间线请求,因为它需要特定的用户上下文。

相反,我正在这样做:

twitter_mentions = twitter(twitter_token, twitter_secret).search("@{account.twitter_handle}", options = { since: from_date, until: to_date, count: 100 }).count

def from_date
  9.days.ago.strftime("%Y-%m-%d")
end

def to_date
  2.days.ago.strftime("%Y-%m-%d")
end

def twitter(token, secret)
  Twitter::REST::Client.new do |config|
    config.consumer_key        = ENV["twitter_api_key"]
    config.consumer_secret     = ENV["twitter_api_secret"]
    config.access_token        = token
    config.access_token_secret = secret
  end
end

唯一的问题是返回的推文的最大数量限制为 100。我从 the documentation 知道我可以使用 max_id 进行几个单独的调用,然后我可以总结,但是我在构建时遇到了麻烦这在 Ruby 中很优雅。

任何帮助表示赞赏。

【问题讨论】:

    标签: ruby-on-rails ruby twitter twitter-oauth


    【解决方案1】:

    我不记得具体是怎么做的了,但可以使用 twitter 实时流 API 实时“收听”twitter 搜索。

    我使用 tweetstream gem 完成了我的一个项目。它实时接收推文并依次在每个推文上运行一段代码。从理论上讲,这将能够删除数据库中的行,只要它不会在一秒钟内返回很多结果。

    这是我项目中的一些相关代码 (https://github.com/AJFaraday/Text-to-music/blob/master/scripts/twitter-search.rb):

    consumer_key, consumer_secret, oauth_token, oauth_token_secret = get_twitter_auth(config)
    
    TweetStream.configure do |config|
      config.consumer_key       = consumer_key
      config.consumer_secret    = consumer_secret
      config.oauth_token        = oauth_token
      config.oauth_token_secret = oauth_token_secret
      config.auth_method        = :oauth
    end
    
    # Set up new TweetStream client
    ts = TweetStream::Client.new
    
    ts.track("@username") do |status|
      puts "[#{status.user.screen_name}] - #{status.source}"
      puts status.text
    end
    

    (get_twitter_auth方法在https://github.com/AJFaraday/Text-to-music/blob/master/lib/twitter-auth.rb中,将初始的twitter授权存储在twitter.yml文件中。)

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2016-07-12
      • 2015-08-13
      • 2013-05-24
      • 2019-03-18
      • 1970-01-01
      • 2013-12-23
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多