0

我用 Ruby 编写了代码,可以显示特定用户的时间线。我想编写代码,以便能够仅搜索 twitter 以找到每个提到一个词的用户。我的代码目前是:

require 'rubygems'
require 'oauth'
require 'json'

# Now you will fetch /1.1/statuses/user_timeline.json,
# returns a list of public Tweets from the specified
# account.


  baseurl = "https://api.twitter.com"
path    = "/1.1/statuses/user_timeline.json"
query   = URI.encode_www_form(
    "q" => "Obama"
    )
address = URI("#{baseurl}#{path}?#{query}")
request = Net::HTTP::Get.new address.request_uri

# Print data about a list of Tweets
def print_timeline(tweets)
  tweets.each do |tweet|
  require 'date'
    d = DateTime.parse(tweet['created_at'])
    puts " #{tweet['text'].delete ","} , #{d.strftime('%d.%m.%y')} , #{tweet['user']['name']}, #{tweet['id']}"
  end
end

# Set up HTTP.
http             = Net::HTTP.new address.host, address.port
http.use_ssl     = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER

# If you entered your credentials in the first
# exercise, no need to enter them again here. The
# ||= operator will only assign these values if
# they are not already set.
consumer_key = OAuth::Consumer.new(
    "")
access_token = OAuth::Token.new(
    "")

# Issue the request.
request.oauth! http, consumer_key, access_token
http.start
response = http.request request

# Parse and print the Tweet if the response code was 200
tweets = nil
puts "Text,Date,Name,id"
if response.code == '200' then
  tweets = JSON.parse(response.body)
  print_timeline(tweets)
end
nil

我怎么可能更改此代码以在所有 twitter 上搜索特定单词?

4

2 回答 2

3

最简单的方法是使用“Twitter”gem。有关更多信息和搜索结果的结果类型,请参阅此链接。一旦您拥有所有正确的授权属性(oAuth-Token、oAuth-secret 等),您应该能够搜索为

Twitter.search('Obama') 

或者

Twitter.search('Obama', options = {}) 

让我们知道,如果这对你有用。

ps - 如果对您有帮助,请将帖子标记为已回答。否则,请对缺少的内容发表评论。

于 2013-06-17T16:12:57.773 回答
0

Twitter API建议您用于全局搜索的 URI 是,https://api.twitter.com/1.1/search/tweets.json这意味着:

  • 您的base_url组件将是https://api.twitter.com
  • 您的 path组件将是/1.1/search/tweets.json
  • 您的query组件将是您正在搜索的文本。

根据 API 规范,该query部分需要很多值。请参阅规范,您可以根据需要进行更改。

提示:尝试使用irb(我推荐pry)REPL,它可以更轻松地探索 API。此外,请查看Faraday gem,它比 Ruby IMO 中的默认 HTTP 库更易于使用。

于 2013-06-17T15:28:32.967 回答