我一直在搞乱使用twitter rails API而且我在收到推文的位置时遇到了麻烦。这似乎总是失败而且不会返回任何东西。我也试过做tweet.coordinates,但它似乎没有用。
tweets = client.user_timeline("gems")
puts "size : #{tweets.size}"
tweets.each do |tweet|
if(tweet.place)
puts tweet.place.attributes
end
end
我正在使用以下Twitter gem。 https://github.com/sferik/twitter
编辑:
tweets = client.search("a", geocode: "40.7128,-74.0059,50mi").take(100)
tweets.each do |tweet|
if tweet.place?
puts tweet.place.full_name
elsif tweet.geo?
puts "geofound"
elsif tweet.user.location?
puts tweet.user.location
end
所以我尝试上面的代码寻找具有地理编码的推文,但似乎没有一个地方或地理位置,它总是返回tweet.user.location,但这不是很准确。输出只有很多纽约,但也有很多来自其他城市,所以当其他城市不存在/远离纽约时,我真的不知道Twitter如何获得这些查询。我错过了另一个位置字段吗?我还注意到输出的数量不等于推文数组的大小。
这是一个示例输出
答案 0 :(得分:0)
正如twitter
gem文档中所述,您应该使用place?
或geo?
方法。
空对象
在版本4中,您希望返回Twitter对象的方法 如果该对象丢失,则返回nil。这可能导致了 一个
NoMethodError
。为了防止此类错误,您可能已经介绍过了 检查响应的真实性,例如:
status = client.status(55709764298092545)
if status.place
# Do something with the Twitter::Place object
elsif status.geo
# Do something with the Twitter::Geo object
end
在第5版中,所有这些 方法将返回
Twitter::NullObject
而不是nil
。这应该 阻止NoMethodError,但如果您可能会导致意外行为 有正确的检查,因为Ruby中的一切都是真实的 除了假和零。对于这些情况,现在有谓词 方法:
status = client.status(55709764298092545)
if status.place?
# Do something with the Twitter::Place object
elsif status.geo?
# Do something with the Twitter::Geo object
end