【TwitterAPI】時刻を指定してツイートを取得する【Laravel】

スポンサーリンク

TwitterAPIとMoment.jsを利用して入力したキーワードと日時でツイートを検索します。

前回の続きでキーワードを入力してツイートを検索するようにしたところから始めます。サンプルは最後にあるGitHubから取得できます。

画面

時間を入力するフォームを用意します。今回はFromとToで範囲を指定するので、それぞれ日付と時間で分けて入力するフォームを追加します。

次のJavaScriptでFormにイベントをつけるために、Formにid「search_form」を指定しています。

  • Form::date〜:日付を指定するフォーム
  • Form::time〜:時間を指定するフォーム。分は5分間隔にしています。
  • Form::hidden〜:日付の情報をJSで加工して、hiddenに設定してサーバに送ります。

今回は、時間も検索するのでツイートは時間を表示するようにします。

修正前は画面側でフォーマット指定していますが、修正後は値を表示するのみにしています。日時のフォーマットはサーバ側で行います。

JavaScript

Twitterの時刻での検索は、下のような形でキーワードと一緒にリクエストすれば、その範囲のツイートを取得できます。

  • since:YYYY-MM-DD_HH:mm:SS_JST
  • until:YYYY-MM-DD_HH:mm:SS_JST

今回は、画面で入力した日付をJSで「YYYY-MM-DD_HH:mm:SS」形式に直してサーバに送り、ツイートを検索するようにします。

JSでの時刻の加工には、Moment.jsを使用します。

  • Moment.jsのインストールの一例
JSで「検索」ボタン押下時に時刻の加工を行います。(JS更新したらビルド「npm run dev」を忘れずに)

やっていること

  • フォームから入力値を取得
  • 日付と時刻を文字列結合
  • 結合した日時でmomentオブジェクトを生成
  • フォーマットを指定してhiddenの値に設定

Controller

この後に検索したツイートの日時を日本時間に直すため、先にタイムゾーンの設定をしておきます。

config/app.phpのtimezoneを修正します。デフォルトだと「UTC」になっているのを「Asia/Tokyo」に直します。configを直したら「php artisan config:clear」で修正を反映しておいてください。

続いて検索時の処理を修正します。

検索ボタンで処理するsearchメソッドで日時をTwitterAPIの検索条件になるように加工して、キーワードと一緒にクエリを送信します。

ただ検索するだけだと日本時間にならないため、検索結果をループして日本時間に直します。

こんな感じで指定した範囲のツイートが検索できます。
※TwitterAPIの仕様上、無料だと過去7日間のツイートしか取得できません。

サンプル

GitHub:naoto-mitsuya / search_tweet_with_time

参考にさせて頂きました

スポンサーリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です