TwitterAPI

【Twitter API】PHPで自動的にツイートをいいね(favorite)をする方法

こんにちは。

今回は、PHPを使ってTwitterのツイートを自動的にいいねしてくれる本格的なBotアプリを作る方法を紹介します。

1.事前準備

(1) Twitter Appにアクセスします。リンク: https://apps.twitter.com/

(2) [Create New App]で新規アプリを作ります。

(3) 各種Keyを入手します。

・Consumer Key (API Key)

・Consumer Secret (API Secret)

・Access Token

・Access Token Secret

(4) 余裕があったらTwitter API documentを理解する。(今回はTwitter)

2.PHPでTwitter APIを使えるようにする

今回はTwitteroauthというPHP向けのライブラリを使いますが、

「HTTPリクエストくらい自分で書くわ!!」って人は別にこのライブラリを使う必要はないと思います。

インストール方法は簡単で、

https://github.com/abraham/twitteroauth

からダウンロードします。

インポートできればどこに置いてもいいのですが、私の場合はたくさんTwitter APIを使ったアプリを作ろうと思っているので、

ディレクトリの構成を

Twitter / abraham / twitteroauth というふうに設置して

Twitter / apps / ソースコード というふうに自分で書いたコードを保存しました。

3. 実際にPHPコードを書いていく

はじめにcommon.phpというファイルを作ります。

 

defineを二つのブロックに分けて使っています。

一つ目のブロックはTwitter APIを操作するためのKeyを定義する部分で、さきほど(1)で取得したKeyのことです。

二つ目のブロックはMySQLデータベースにアクセスするために必要なKeyです。

(今回はデータベースは使用しないので、二つ目のブロックを作る必要はないです。)

common.phpは他にもTwitter APIを使ってアプリを作るつもりの人はTwitteroauthライブラリをインストールした時と同じように共通したディレクトリを作ることをオススメします。

4.必要なものを読み込む

次にコードを書くにあたって必要になるものを読み込みます。

require_once()を使ってtwitteroauthライブラリと先ほど書いたcommon.phpを使えるようにします。

3行目のuseですが、これはtwitteroauthライブラリのTwitterOAuth()クラスを使うために必要です。

5. メイン処理を書いていく

まずはソースコード全体です。

全体の流れとしては、

  1. 先ほど説明した(4)のように必要なものをインポートする
  2. 処理に必要な関数を二つ作る(1)
  3. 処理に必要な関数を二つ作る(2)
  4. それらの関数を実行する

という流れになっています。

2と3について順に説明していきましょう。

2.処理に必要な関数を二つ作る(1)

まずはsearchTweet()という関数を作ります。

この関数は引数が0個、戻り値がAPIで取得したツイートのIDを格納した配列を返します。

リソースのURLは

https://api.twitter.com/1.1/search/tweets.json

です。

twitteroauthライブラリのTwitterOAuth()を使って検索に引っかかったツイートたちを取得しています。

今回はツイートを検索によって取得していますが、

別に検索以外にもある特定の人のツイートをだけを取得するなどのようにいいねをするツイートの取得方法については好きなようして大丈夫です。

12行目からはtwitteroauthライブラリからTwitterOAuthオブジェクトを生成しています。

このオブジェクトのOAuthRequest()を使うことによってAPIを叩いています。

OAuthRequest()の引数は

  1. APIのURL(https://api.twitter.com/1.1/search/tweets.json)
  2. リクエストメソッド(GET)
  3. パラメータの配列( array(q => 検索クエリcount => 取得するツイート数) )

という風になっています。

今回は7,8行目であらかじめ用意された検索クエリの中から一つランダムに選ぶということをしていますが、これはただの好みでやっただけなので別にやらなくていいです。

14.19行目では、json_decode()で取得したツイートたちの各IDを取り出して配列にしています。

ちなみにjson_decode()の第二引数をtrueにすることによってjsonを連想配列に変換してくれます。

そして最後に、このID配列を返しています。

3.処理に必要な関数を二つ作る(2)

次にfavoriteTweet()という関数を作ります。

これは引数としてツイートIDの配列を受け取ります。

foreach()を使ってIDを一つづつ配列から取り出して、その取り出したIDのツイートをいいねするいう処理を繰り返します。

今回はURLが「https://api.twitter.com/1.1/favorites/create.json」

リクエストメソッドが「POST」

パラメータ配列はIDのみとなっています。

これらの情報元に、先ほどと同じようにOAuthRequest()を使ってTwitter APIを叩いて一つ一ついいねしていきます。

4.それらの関数を実行する

47行目以降がメイン処理となっています。

まずは

$id_array = searchTweet();

によって$id_arrayに取得したツイートのIDを格納していき、

favoriteTweet($id_array);

でID配列に入っているIDのツイートをいいねしていきます。

関数を作るとコードが簡単になり、テストやメンテナンスもしやすくなるのでオススメです。

6. 作成したPHPソースコードを自動で呟けるように設定する

私の場合だとCronというシステムを使ってソースコードを自動実行しますが、他にも方法がたくさんあるのでここで説明するのは控えることにします。

あわせて読みたい

ABOUT ME
miyadiary.net
当サイトを管理しています。IT(プログラミング)、旅行、アニメ関係などを中心とした総合ブログです。 私は主にIT技術についての記事を書いています。

COMMENT

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