Twitterサービス制作者必見!TwitterAPIでURL,ハッシュ,リプライ先を一発で取得する方法
はてなブックマーク - Twitterサービス制作者必見!TwitterAPIでURL,ハッシュ,リプライ先を一発で取得する方法
Pocket

今回のエントリーでは、 TwitterAPI から実際にアクセスする外部リンク先の URL や、ハッシュ、リプライ先を取得してみます。ツイート情報を取得するだけだと、リンクは全て t.co の短縮 URL に置き換わってます。そのため、公式の Twitter のような表示はできません。”ある機能”を使って URL 情報を取得したついでに a タグに変換してリンクを実装してみます。

 

 

 

TwitterAPIとは何か?

TwitterAPI とは、ツイート情報などを取得したり投稿するための API のことです。 URL で直接指定して TwitterAPI を呼び出すことができます。

このように呼び出すとユーザのタイムラインを取得できます。「 xml 」を今回指定していますが、「 json 」や「 rss 」なども指定できます。
 
「 user_timeline 」の他にも色んな取得する方法があります。今回は詳しく記述しませんので、他にどんなやり方があるのか知りたい!という方は dev.twitter.com や、日本語に翻訳した watcher.moe-nifty.com さんのメモ、 TwitterAPIのWiki などを参考にしてみてください。
 
注意して頂きたいのが TwitterAPI で使える処理はいきなり廃止になることもありえますし、仕様が変更されることもあるということです。現在使用する TwitterAPI のバージョンは 1.0 でも問題ありませんが、 1.1 に置き換わることを宣言しています。アンテナをはっていないと処理が変わったことに気づかず、バグを引き起こすこともあります。

 
 

Twitterのタイムライン取得処理をコールする

私のアカウントの最新のツイート情報を 5 件分取得します。

この時、「 include_entities=true 」という指定を忘れずに行なってください。これが今回のエントリのキモとなります。どうせなので、 PHP の関数化をしておきます。

これで、アカウント名や取得するツイート数を指定して呼び出せることができるようになります。引数の先頭文字が「 _(アンダーバー) 」になっているのは気にしないでください。引数だと分かりやすくするための慣習みたいなものです。

 
 

PHPでツイート情報を扱いやすくする

では、作った関数を用いてツイート情報を取得してみましょう。

これで xml 形式でツイート情報を取得できました。 PHP では xml 形式のデータをオブジェクトのように扱えるようにするための simplexml_load_file 関数があります。これを使って xml をロードすることで配列として扱えるようになります。 どんな風に情報が取得できているのか見てみましょう。

このように配列として取得できましたので、あとは URL の情報を抜き出すだけですね。

 
 

URL,ハッシュ,リプライ先情報を取得する

先ほど見ていただいた xml の中身の中に「 entities 」というオブジェクトがあります。この中に URL 情報や、リプライ先のユーザ情報、ハッシュ情報などが格納されます。どこにあるかはハイライト表示していますので見てみましょう。

上記のツイート情報では何も URL やハッシュを指定していないので空となっています。 URL や、ハッシュ、リプライをツイートしていると以下のように entities に値が格納されます。

entities を使えば URL 情報を取得できそうです。

 
 

リンク部分をaタグに変更する

取得ついでに URL 情報を利用してリンクを作ってみます。わざわざ配列を新しく作るのは面倒なので text をそのまま書き換えてしまいます。まず、ツイート情報を格納した xml 情報から一つ一つのツイート情報を取得します。こんなときは foreach を使うと便利です。

複数の URL や、複数のリプライ、複数のハッシュと、重複した指定をしているとentities の中身が配列になるので foreach を利用します。

少しうんざりする処理ですが、やっているのは中身を一つ一つ取り出せるようにしているだけです。効率良く値を使いまわす処理も作ることができますが、単純な処理の方が伝えやすいのでこの形にしています。
 
では本題の文字の置き換えによって URL を a タグに書き換えてみましょう。は str_replace 関数を使います。尚リプライの処理、ハッシュの処理は削除しています。

これで公式の Twitter のように省略したリンクを表示した上で、外部へのリンクを表示することができます。このあとはいつも通りツイートの text を表示させたら内容を入れ替えていますのでリンクごと表示してくれますね。

 
 

いかがでしたでしょうか。キモとなるのは entities を利用することです。この機能を使えば、 Twitter を利用した WEB サービスも作れちゃいます。是非参考にしてみてください。