5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsでツイート検索

Last updated at Posted at 2019-11-05

内容

RailsでツイッターAPIを用いてツイートの取得を行います。

ツイッターAPIキーの取得

Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報
上記の記事を参考に作成しました。
APIキー取得後ツイート取得のための下準備をします。

.envファイルの使用

APIキーを念のために.envに書くようにする

Gemfileに gem 'dotenv-rails'を記載しbundle

Gemfile
gem 'dotenv-rails'
$ bundle install

.envファイルの編集

.env
TWITTER_CONSUMER_KEY=取得したキーを入れてください
TWITTER_CONSUMER_SECRET=取得したキーを入れてください
TWITTER_ACCESS_TOKEN=取得したキーを入れてください
TWITTER_ACCESS_TOKEN_SECRET=取得したキーを入れてください

settings.ymlの編集

settings.yml
twitter_api:
  consumer_key: <%= ENV['TWITTER_CONSUMER_KEY'] %>
  consumer_secret: <%= ENV['TWITTER_CONSUMER_SECRET'] %>
  access_token: <%= ENV['TWITTER_ACCESS_TOKEN'] %>
  access_token_secret: <%= ENV['TWITTER_ACCESS_TOKEN_SECRET'] %>

ツイート検索

準備

Gemfileに gem 'twitter''を記載しbundle

Gemfile
gem 'twitter'
$ bundle install

検索(Controller)

ハッシュタグ付きまたは、ハッシュタグなしのキーワードで検索しています。

.rb
  def index
    @tweets ||= []
    tweet_search('検索するワード')
  end

  def tweet_search(keyword)
    # ツイート検索のオプションを記入
    twitter_params = { count: 15, lang: 'ja', result_type: 'recent', exclude: 'retweets', tweet_mode: 'extended' }
    begin
      @tweets = twitterClient.search("##{keyword} OR #{keyword}", **twitter_params).take(10).map do |tweet|
      {
        tweet_link: "https://twitter.com/#{tweet.user.screen_name}/status/#{tweet.id}"
      }
      end
    rescue => exception
      @tweets = []
    end
  end

  def twitterClient
    @twitterClient ||= Twitter::REST::Client.new do |config|
      config.consumer_key = Settings.twitter_api.consumer_key
      config.consumer_secret = Settings.twitter_api.consumer_secret
      config.access_token = Settings.twitter_api.access_token
      config.access_token_secret = Settings.twitter_api.access_token_secret
    end
  end

表示

ツイッターにはツイートを表示する際に規約があるのでそれに準ずるためにレイアウトを独自に組むOR埋め込み、今回は埋め込みを使います。
https://developer.twitter.com/en/developer-terms/display-requirements.html

.erb
  <% @tweets.each do |tweet| %>
    <blockquote class="twitter-tweet tw-align-center" data-lang="ja" data-cards="hidden">
      <%= link_to '',tweet[:tweet_link], target: :_blank %>   
    </blockquote>
  <% end %>
  <%= javascript_include_tag '//platform.twitter.com/widgets.js', charset: 'utf-8', async: 'async' %>
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?