使用Ruby Gem for Twitter获取Hashtag的搜索结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Ruby Gem for Twitter获取Hashtag的搜索结果相关的知识,希望对你有一定的参考价值。
我正在尝试使用此Twitter gem与Twitter连接并返回所有具有特定主题标签的推文列表。截至目前,我已经能够连接到API并返回数据,所以我知道连接正常。我已经阅读了文档,我只是不了解如何实现我所看到的。我真的很擅长连接和使用API,我们真的很感激一些澄清。这是我到目前为止的代码。
的Gemfile
#####################
### My Added Gems ###
#####################
# Define Ruby Version
ruby "2.5.0"
# Social Connections
gem 'twitter'
# ENV Variables
gem 'dotenv-rails'
视图/页/ home.html.erb
<h1>Tweets</h1>
<% @tweets.each do |tweet| %>
<%= tweet.full_text %>
<br>
<% end %>
控制器/ pages_controller.rb
class PagesController < ApplicationController
require 'twitter'
def home
client = Twitter::REST::Client.new do |config|
config.consumer_key = ENV.fetch("YOUR_CONSUMER_KEY")
config.consumer_secret = ENV.fetch("YOUR_CONSUMER_SECRET")
config.access_token = ENV.fetch("YOUR_ACCESS_TOKEN")
config.access_token_secret = ENV.fetch("YOUR_ACCESS_SECRET")
end
@tweets = client.user_timeline('trendingfaith', count: 20)
end
end
这将打印出用户@TrendingFaith的推文列表。
我试图用#TrendingFaith标签打印所有推文:
pages_controller.rb
class PagesController < ApplicationController
require 'twitter'
def home
tweets = Twitter::REST::Search.new do |config|
config.consumer_key = ENV.fetch("YOUR_CONSUMER_KEY")
config.consumer_secret = ENV.fetch("YOUR_CONSUMER_SECRET")
config.access_token = ENV.fetch("YOUR_ACCESS_TOKEN")
config.access_token_secret = ENV.fetch("YOUR_ACCESS_SECRET")
end
@tweets = tweets.search(q, options = {:hash => 'trendingfaith'}) ⇒ Twitter::SearchResults
end
end
得到以下错误:syntax error, unexpected tIDENTIFIER, expecting keyword_end
我尝试通过this doc on the Twitter Gem和Twitter API docs阅读。我现在无法理解它如何实现它。非常感谢任何指导。
更新:收到答复后的工作代码
根据@SimonFranzen的回答,我缺少的代码是client.search('#SpecificTag')
语法来搜索特定的主题标签。
这是我的代码现在的样子:
控制器/ pages_controllers.rb
class PagesController < ApplicationController
require 'twitter'
def home
tweets = Twitter::REST::Client.new do |config|
config.consumer_key = ENV.fetch("YOUR_CONSUMER_KEY")
config.consumer_secret = ENV.fetch("YOUR_CONSUMER_SECRET")
config.access_token = ENV.fetch("YOUR_ACCESS_TOKEN")
config.access_token_secret = ENV.fetch("YOUR_ACCESS_SECRET")
end
@tweets = tweets.search('#TrendingFaith')
end
end
我在这上面运行了byebug,并且能够通过此搜索查看从Twitter返回的数据。 (请参阅下面的哈希数据),因此可以像这样更新我的视图:
视图/页/ home.html.erb
<h1>TrendingFaith.org - Coming Soon</h1>
<% @tweets.each do |tweet| %>
User @<%= tweet.user.screen_name %> said: "<%= tweet.text %>" on <%= tweet.created_at.strftime('%-m/%d/%Y') %>
<br>
<% end %>
这能够提取Twitter用户的名字,推文的文本以及推特时的推文。这正是我所寻找的。
Twitter哈希被归还给我,放在这里供其他可能想知道的人。此外,您可以在页面底部see it here in their documentation。
{
:created_at=>"Sun Mar 04 18:20:42 +0000 2018",
:id=>970363418858332160,
:id_str=>"970363418858332160",
:text=>"A place where you can find things trending in the Christian faith. Questions and stories. #TrendingFaith",
:truncated=>false,
:entities=>
{
:hashtags=>[{
:text=>"TrendingFaith",
:indices=>[90, 104]
}],
:symbols=>[],
:user_mentions=>[],
:urls=>[]
},
:metadata=>
{
:iso_language_code=>"en",
:result_type=>"recent"
},
:source=>"<a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>",
:in_reply_to_status_id=>nil,
:in_reply_to_status_id_str=>nil,
:in_reply_to_user_id=>nil,
:in_reply_to_user_id_str=>nil,
:in_reply_to_screen_name=>nil,
:user=>
{
:id=>970155879180873733,
:id_str=>"970155879180873733",
:name=>"Trending Faith",
:screen_name=>"TrendingFaith",
:location=>"",
:description=>"",
:url=>#Twitter URL Shortener (Had to remove for Stackoverflow),
:entities=>
{
:url=>
{
:urls=>[
{
:url=>#Twitter URL Shortener (Had to remove for Stackoverflow),
:expanded_url=>"http://trendingfaith.org",
:display_url=>"trendingfaith.org",
:indices=>[0, 23]
}
]
},
:description=>
{
:urls=>[]
}
},
:protected=>false,
:followers_count=>0,
:friends_count=>3,
:listed_count=>0,
:created_at=>"Sun Mar 04 04:36:00 +0000 2018",
:favourites_count=>0,
:utc_offset=>nil,
:time_zone=>nil,
:geo_enabled=>false,
:verified=>false,
:statuses_count=>1,
:lang=>"en",
:contributors_enabled=>false,
:is_translator=>false,
:is_translation_enabled=>false,
:profile_background_color=>"F5F8FA",
:profile_background_image_url=>nil,
:profile_background_image_url_https=>nil,
:profile_background_tile=>false,
:profile_image_url=>"http://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png",
:profile_image_url_https=>"https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png",
:profile_link_color=>"1DA1F2",
:profile_sidebar_border_color=>"C0DEED",
:profile_sidebar_fill_color=>"DDEEF6",
:profile_text_color=>"333333",
:profile_use_background_image=>true,
:has_extended_profile=>false,
:default_profile=>true,
:default_profile_image=>true,
:following=>false,
:follow_request_sent=>false,
:notifications=>false,
:translator_type=>"none"
},
:geo=>nil,
:coordinates=>nil,
:place=>nil,
:contributors=>nil,
:is_quote_status=>false,
:retweet_count=>0,
:favorite_count=>0,
:favorited=>false,
:retweeted=>false,
:lang=>"en"
}
新问题
现在要弄清楚为什么只有一条推文回来了,因为有数百个我正在搜索的主题标签,但只有一个对我来说。我通过搜索标签'#HelloWorld'进行检查,然后又回来了许多。所以,它不只是搜索我的推文。我猜测所有其他带有我正在寻找的标签的人都可能是私人推文,除非通过Twitter推特?或者这是我的代码的另一个问题?如果这是我原来问题的一个无关问题,我可以创建一个新问题并提出问题。
最终更新:回答最后一个问题
之所以只有我的推文被标记为“TrendingFaith”,但是在拉动标签'HelloWorld'时我得到了更多的推文是因为我的推文是在过去一周内用'#TrendingFaith'制作的。标准Twitter API搜索仅提取过去7天的推文。您必须拥有高级或企业级帐户才能搜索30天或完整存档的帖子。他们的高级水平目前(截至2014年3月4日)处于测试阶段并且要求进入候补名单。
gem install twitter
或将其包含在您的Gemfile中
创建Twitter应用程序,获取身份验证代码
Init API
require 'twitter'
client = Twitter::REST::Client.new do |config|
config.consumer_key = "YOUR_CONSUMER_KEY"
config.consumer_secret = "YOUR_CONSUMER_SECRET"
config.access_token = "YOUR_ACCESS_TOKEN"
config.access_token_secret = "YOUR_ACCESS_SECRET"
end
提出请求“推文给用户”
// get from user
tweets = client.user_timeline('rubyinside', count: 20)
tweets.each { |tweet| puts tweet.full_text }
提出请求“按标签搜索”
client.search('#searchHash').take(3).each do |tweet|
puts tweet.inspect
end
检查这个以建立您的查询:qazxsw poi或qazxsw poi
以上是关于使用Ruby Gem for Twitter获取Hashtag的搜索结果的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails - 迭代 Twitter Gem 搜索结果的问题
ruby gem_opencv_for_ruby_linux.rb
使用 ruby 邮件 gem 获取电子邮件正文而不获取附件