2015-05-08 83 views
1

我正在构建一个报告工具来帮助社交媒体代理收集他们管理的帐户的统计信息。我正在使用Twitter gem通过Twitter搜索查询结果循环 - Ruby on Rails gem

我想收集一周内收到的帐户的数量。

由于存在大量帐户(大约70个,我们假设),我希望该工具使用一个用户上下文来收集数据,而不是以不同的帐户重复登录和注销。

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

相反,我这样做:

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中优雅地构造它时遇到了困难。

任何帮助表示赞赏。

回答

0

我完全记不起我是如何处理这件事的,但可以用twitter live-streaming API直接“聆听”twitter现场直播。

我已经使用tweetstream gem完成了我的一个项目。它实时接收tweets,并依次在每个tweets上运行一段代码。从理论上讲,只要不会一秒钟返回多个结果,就可以删除数据库中的行。

下面是从我的项目(https://github.com/AJFaraday/Text-to-music/blob/master/scripts/twitter-search.rb)一些相关的代码:(该get_twitter_auth方法是https://github.com/AJFaraday/Text-to-music/blob/master/lib/twitter-auth.rb,它存储在twitter.yml文件最初的Twitter授权)

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 

希望这帮助。