QR Code Business Card

リツイート数ランキングの作り方【Twitter REST API 1.1編】

 前回Topsyを使ったリツイートランキング(RTランキング)の作り方をご紹介しましたが、Topsyが有料化してしまい、残念ながら無料では使えなくなってしまいました。今回は別の方法としてTwitterのAPIを試してみました。TwitterのAPIでもリツイート数は表示されますので、これを使ってランキングを作成します!


【関連記事】
 Topsyを使う方法はこちらをどうぞ!
リツイート数ランキングの作り方【Topsy編】

概要

全体の流れ

記事のリツイート数・リンク・タイトルを取得(getTweet.php)
(Twitter REST APIから取得)
    ↓
データをテキスト形式で保存(getTweet.php)
    ↓
ランキングデータ(data.php)

ランキングデータ(data.php)
    ↓
データとそれを元にWordPressからアイキャッチ画像を取得して表示(disp.php)


 リツイート数(RT数)の取得には、Twitter REST API 1.1を使用します。また取得したリンクから、記事のタイトルやアイキャッチ画像を取得するのに、WordPressの関数を使います。

 本当はランキングの表示部分はAjaxとかで作りたかったのですが、WordPressの関数を使いますのでphpで作成しています。逆にこのWordPressの関数を別の形にできれば、WordPress以外でも使えると思います。

 後はお好みでcssでデザインして表示させれば完成です。jQueryなどで動きをつけるのも面白いです!



Twitter REST API 1.1を使う準備をする

Twitter Developersでアプリケーション登録する


 REST API 1.0では必要ありませんでしたが、1.1からはAPIを使用するには、Twitter Developersにてアプリケーション登録を行い、OAuth認証用に下の4つのキーを発行をする必要があります。

Consumer key
Consumer secret
Access token
Access token secret



Twitter Developers

Twitter Developers

 アプリケーションの登録を行います。上のTwitter Developersにて、右上の「Sign in」よりログインして下さい。通常のTwitterと一緒の「Username」「Password」を入力して下さい。



My Applications

 次に右上のアイコンにマウスオーバーすると表示されるメニューから、「My Applications」をクリックして下さい。



My applications - Twitter Developers

 My applicationsの画面にて、右上の「Create a new application」をクリックして下さい。



Create an application

 Create an applicationの画面にて、アプリの「Name」「Description」「Website」、画像認証を入力して、「Create your Twitter application」をクリックして下さい。「Callback URL:」は今回は使用しませんので、空欄にして下さい。



Application Details

これでアプリの登録が完了しました。「Consumer key」「Consumer secret」が現在表示されていると思います。「Access token」「Access token secret」については、下の方にある「Create my access token」をクリックすると生成されると思います。

 この4つのキーは後ほどphpに入力しますので、メモしておいて下さい。


OAuth認証用ライブラリ


 REST API 1.1のOAuth認証を簡単にしてくれるライブラリを準備します。

abraham / twitteroauth

 「twitteroauth」というフォルダのなかに、「OAuth.php」と「twitteroauth.php」というファイルがありますので、ダウンロードして下さい。

 今回作成するリツイートランキング用のファイルと一緒に使います。

 これでREST API 1.1を使う準備は完了しました。



ソース

ファイル構成

ファイル構成

 data.php データを保存するファイルです。(初期は空です)[666]
 disp.php 保存したデータを表示します。[755]
 getTweet.php TwitterのAPIにアクセスしてリツイート数順にデータを整形・保存します。[755]
 timestamp.php データの保存した日時を記録します。(初期は空です)[666]


 流れとしては、2つの仕組みに分けています。

 一つはgetTweet.phpで、Twitter REST APIにアクセスして、ツイートを取得、リツイート数順にソートしてdata.phpに保存します。もう一つは保存したデータをdisp.phpに読み込んで、リンクからタイトルとアイキャッチ画像を取得して表示する仕組みです。(このリンクからタイトルなど取得する際に、WordPressの関数を使うのでphpで作成しています)

 WordPressのテンプレート内にファイル置く場合、ファイルのパスは絶対パスで書いた方が良さそうです。相対パスで書くとうまく動かない場合がありますので、注意して下さい。

 データを記録するdata.phpとtimestamp.phpは、空のファイルを作成してアップロードして下さい。


詳細


【disp.php】




【getTweet.php】



設置方法

 リツイート数ランキングを表示したい箇所に「disp.php」を読み込んで下さい。



 これで設置は完了です。あとはcssで見た目を調整します。

 「getTweet.php」の読み込む位置はどこでもいいです。ブログが読み込まれた際に、RT数ランキングのデータファイル「data.php」が一定時間で更新されます。



今後の課題


1.過去200件分のツイートのリツイート数しか対象にしていない。
2.非公式リツイートは数に入っていない。


 上のサンプルは、自分の発言をAPIから取得しているのですが、最近のツイート200回分のリツイート数しかカウントしていません。APIからは1度に200件分のツイートをリクエスト可能で、それ以上となると複数回リクエストして、配列で結合すれば良さそうに思うのですが、どうにもうまく取得できませんでした。この辺りを改良出来ればと思っています。

 次に非公式リツイートについては、APIが公式リツイートしかカウントしていないっぽいので、「記事のアドレス」+「RT」とかでAPIで検索とかでしょうか?それともデータを蓄積していくほうがいいのかな?うーーん。

 まあ、暇な時にボチボチ考えてみます。

SNSでもご購読できます。

コメント

  1. movable_kits より:
    Topsyが利用できなくなり、こちらの手法を利用させていただこうと試しております。
    しかし、data.phpとtimestamp.phpともに何も書き込まれません。パーミッションは666で、ファイル構成も記事と同じにしております。
    段階的にチェックする方法などございましたら、ご教示いただけませんでしょうか?
  2. gaito777 より:
    こんにちは!
    ファイルの指定を相対パスで指定して下さい。
    同じフォルダに全てのファイルが入っているなら、
    fopen(“timestamp.php”,”r”)
    fopen (“timestamp.php”, “w”)
    fopen (“data.php”, “w”)
    という感じです。
    いかがでしょうか?
  3. movable_kits より:
    こんにちは。ご回答ありがとございました。
    返答が遅くなりましたが、試してみたのですが、変わらず書き込まれない状態のままでした。

    他に、原因など考えられるポイントはありますでしょうか?
  4. gaito777 より:
    こんばんは!
    全てのファイルのパーミッションが問題ないのであれば、
    なんでしょうね。
    前にサーバーの容量が一杯で書き込めなかった例がありましたが……

    サーバーのエラーログを確認するのが早いかもしれません。
  5. movable_kits より:
    ありがとうございます。
    エラーログを確認してみたいと思います!

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)