我正在使用twitter gem来运行Ruby 2.2.1上的Rails 4.2项目。我有以下代码:
def fetch_aisis_writer_tweets
# Cache the tweets and expire after 5 minutes.
data = Rails.cache.fetch([:aisis_twitter_feed, Time.now.to_i/60/5], expires_in: 15.seconds){
tweet_array = [];
tweet = twitter_client.search("#AisisWriter").take(10).each do |tweet|
tweet_array.push(tweet)
end
}
render json: data
end
返回一个空的推文数组。运行twitter_client.search("#AisisWriter").take(10)
不返回任何内容。然而,如果我们去推特并搜索特定的标签,#AisisWriter我们可以看到我确实收到了包含这个标签的大量推文。
那么为什么上面的代码返回一个空的推文数组?
更新
以下有些人建议我使用Streaming API。所以我更新了我的代码,使用他们的代码示例和流API来显示新的数据对象。
def fetch_aisis_writer_tweets
# Cache the tweets and expire after 5 minutes.
data = Rails.cache.fetch([:aisis_twitter_feed, Time.now.to_i/60/5], expires_in: 15.seconds){
tweet_array = [];
tweet = twitter_stream.filter(track: '#AisisWriter') do |streamed_tweet|
tweet_array.push(streamed_tweet)
end
}
render json: data
end
但是唉,没有任何事情发生,控制台只显示:
Processing by Api::Internal::TwitterController#fetch_aisis_writer_tweets as */*
并且页面一直在尝试加载。 在一天结束时,我只想要来自此特定哈希标记的最新10条推文。
答案 0 :(得分:0)
来自https://dev.twitter.com/rest/public/search:
在介入之前,重要的是要知道Search API专注于相关性而非完整性。这意味着搜索结果中可能缺少某些推文和用户。如果要匹配完整性,则应考虑使用Streaming API。
这可以解释为什么twitter_client.search("#AisisWriter").take(10)
返回一个空数组。
twitter_client.search
不是流API终结点。
假设twitter_client
被定义为Twitter::Streaming::Client
个对象,以下内容应该有效(假设有#AisisWriter
的新推文:
twitter_client.filter(track: "#AisisWriter") do |object|
puts object.text if object.is_a?(Twitter::Tweet)
end