使用twitter gem和ruby进行搜索和跟踪时遇到困难

时间:2012-03-29 16:50:16

标签: ruby twitter twitter-gem

所以在PHP中,这段代码在几个月前完成了。

$tweetsToSlippy = $connection->get('http://search.twitter.com/search.json', array('q' => $query, 'since_id' => $since_id))->results;
foreach ($tweetsToSlippy as $tweet) 
{
    $user_id = $tweet->from_user;
    echo "adding $user_id <br>\n";
    $connection->post('friendships/create', array('screen_name' => $user_id));  
}

我正在尝试用Ruby做同样的事情。我可以回复,我可以更新,但我缺乏理解尝试完成我在上面的代码中所做的事情,这会进行API调用并检索Json列表,然后从中提取用户。

def searchAdd
    topics = ['topic1', 'topic2']
    userBank = []
    topics.each do |topic|
        userBank << Twitter.search(topic, :result_type => "recent")
    end
    userBank.each do |user|
    Twitter.follow(user)
        puts user
    end
end

我迷路了,帮帮忙!

2 个答案:

答案 0 :(得分:1)

让我们看看你的代码(我简化了一下)

attr_accessible :client
def initialize 
  client = Twitter::Client.new
end
.... 
def searchAdd(topics)
  [*topics].each do |topic|                                        
    Twitter.search(topic, :result_type => "recent").each do |tweet| 
      client.follow :screen_name => tweet.from_user_id)
      # OR without client ↴
      # Twitter.post('friendships/create',:screen_name => tweet.from_user_id)
    end
  end
end

它做什么?

  • 浏览每个主题
  • 搜索最近的主题
  • 关注符合我想要的主题的用户

我不太熟悉,不知道友谊/创建是否与设置用户遵循相同,但如果它是它的作用。我希望这有帮助

请勿查看api的使用情况

答案 1 :(得分:1)

Twitter.search.results不返回Twitter::User个对象,它会返回Twitter::Status个对象。

如果我试图实现你想要实现的东西,我会这样写:

require 'twitter'

def search_add
  topics = ['peanut butter', 'jelly']
  search_results = topics.collect do |topic|
    Twitter.search(topic, :result_type => 'recent').results
  end
  search_results.flatten.each do |status|
    puts status.from_user
    Twitter.follow(status.from_user_id)
  end
end