【问题标题】:Twitter gem get location of tweetTwitter gem 获取推文的位置
【发布时间】:2017-09-16 12:13:05
【问题描述】:

我一直在搞乱 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 是如何获得这些查询的。我错过了另一个位置字段吗?我还注意到输出的数量不等于推文数组的大小。

https://pastebin.com/eW18Ri2S

这是一个示例输出

【问题讨论】:

  • 你的输出是什么?它是否正确显示尺寸?您可以在循环体的第一行尝试puts tweet.inspect 以查看推文是否存在。
  • 大小为20。我试过输出文本,它们都很好。
  • 推文是否真的包含地理元数据?并非所有推文都这样做 - 需要选择正确的帐户。即使在 Twitter 的示例输出中,place 也是 null dev.twitter.com/rest/reference/get/statuses/user_timeline
  • @KZeng 你能做tweet.inspect 并将结果与​​问题一起粘贴吗?
  • 是的,我注意到并非所有人都有正确的元数据,所以我尝试使用地理编码选项搜索内容,但仍然没有运气。带有地理元数据的推文很少见吗?

标签: ruby-on-rails ruby twitter


【解决方案1】:

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 中的一切都是真实的 除了 false 和 nil。对于这些情况,现在有谓词 方法:

 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

【讨论】:

  • 我尝试了您的建议,但仍然遇到一些问题。我做了检查,他们似乎都有一些推特 ID。
猜你喜欢
  • 2015-06-28
  • 1970-01-01
  • 2011-12-27
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-23
  • 1970-01-01
相关资源
最近更新 更多