【问题标题】:Trying to get list of friends from twitter using httparty(ruby)尝试使用 httparty(ruby) 从 twitter 获取朋友列表
【发布时间】:2011-05-18 16:06:25
【问题描述】:

我正在尝试从 twitter 获取特定用户的朋友列表。
这是我的代码 -

require 'rubygems'
require 'httparty'

class TwitterData
  include HTTParty
  base_uri 'http://api.twitter.com/1/'
  default_params :output => 'json'
  format :json

  def self.get_username_data(username)
    get('statuses/friends.json' , :query => { :screen_name => username })
  end
end

puts "Please your twitter username - "
twitter_username = gets
puts TwitterData.get_username_data(twitter_username).inspect

这是我得到的错误 -

Please your twitter username -
twitter
C:/Ruby192/lib/ruby/gems/1.9.1/gems/crack-0.1.8/lib/crack/json.rb:14:in `rescue in parse': Invalid JSON string (Crack::ParseError)
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/crack-0.1.8/lib/crack/json.rb:12:in `parse'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:116:in `json'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:136:in `parse_supported_format'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:103:in `parse'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/parser.rb:66:in `call'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/request.rb:180:in `parse_response'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/request.rb:164:in `handle_response'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty/request.rb:57:in `perform'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty.rb:280:in `perform_request'
        from C:/Ruby192/lib/ruby/gems/1.9.1/gems/httparty-0.6.1/lib/httparty.rb:232:in `get'
        from twitter_friends_2.rb:11:in `get_username_data'
        from twitter_friends_2.rb:17:in `<main>'

【问题讨论】:

  • 你试过用 user_id 代替 screen_name 吗?
  • 这似乎是 Crack 的问题。我在使用 gem 时偶尔会遇到它:/

标签: ruby twitter httparty


【解决方案1】:

用这个替换你的方法

def self.get_username_data(username)
  get("/statuses/friends.json?screen_name=#{username}")
end

def self.get_username_data(username)
  get('/statuses/friends.json' , :query => { :screen_name => username.strip })
end

您需要删除用户名,因为从命令行中,当用户输入 twitter 用户名并按回车键时,用户名会附加一个“\n”,并且相同的用户名会作为导致问题的参数发送。上面给出的任何代码 sn-ps 都应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多