今回は、Twitter の話。
Twitter のサーバーとデータをやりとりするための Twitter API には、Twitter へのログインに相当する認証手続きが必要なコマンドと、認証がなくても使えるコマンドがある。認証不要なコマンドには、指定した Twitter アカウントの最近の発言を取得するものや、指定のキーワードで検索するものがあり、これらを Mathematica 8 で利用するのは、意外なほど簡単だ。例えば、 @hulinks の最近の発言はこんな感じで取れる(記事執筆時点での Twitter API 挙動に基づいたもの。以降も同様で、今後 Twitter API の仕様が変更された場合には、本記事掲載のコードは動作しなくなる可能性がある)。

json = Import["http://api.twitter.com/1/statuses\
/user_timeline.json?screen_name=hulinks&count=5", "JSON"];
Column["text" /. json, Dividers -> All]

MathematicaでTwitterの発言を取得する。

「Mathematica」で検索した結果を発言者アイコン付きで表示するのもこんな感じでできる。スペースの関係で4行に分けて書いてはいるが、実質たったの2行。

json = Import["http://search.twitter.com/search.json\
?q=Mathematica&rpp=5", "JSON"];
Grid[{Import["profile_image_url" /. #],
  "text" /. #} & /@ ("results" /. json), Dividers -> All]

MathematicaでTwitterの発言をアイコン付きで取得する。

上の2つの例は、 Mathematica 8 で導入された JSON インポーターを使っている。 ver.7 であれば、少し長くなるが、 XML を返すように Twitter API を呼んで XML インポーターを使う。次のような感じ。

(* @hulinks の最近の発言 *)
xml = Import["http://api.twitter.com/1/statuses\
/user_timeline.xml?screen_name=hulinks&count=5", "XML"];
Column[Cases[xml, XMLElement["text", {}, {text_String}] :> text,
  Infinity], Dividers -> All]

(* 「Mathematica」で検索 *)
xml = Import["http://search.twitter.com/search.atom\
?q=Mathematica&rpp=5", "XML"];
Grid[Cases[xml, XMLElement["entry", {},
  {__, XMLElement["title", {}, {text_String}], __,
    XMLElement["link", {__, Rule["href", url_String], ___}, {}],
      __}] :> {Import[url], text}, Infinity], Dividers -> All]

検索結果は RSS でも取得可能なので、 RSS インポーターを使って取り込めば、いきなり整形されたノートブックの形で出力することも可能だ。なんとこのノートブックには、更新ボタンまで付いている。さすが「やりすぎ」 Mathematica (笑)。

Import["http://search.twitter.com/search.rss\
?q=Mathematica&rpp=5", {"RSS", "NotebookObject"}];

MathematicaでTwitter検索結果を「更新(Refresh)」ボタン付きのノートブックに。

認証の要る API の話まで書くつもりだったが、この続きに書くと長くなりすぎるので、認証の話は次回に。

※この記事の内容は執筆者の個人的見解で、ヒューリンクスによる公式情報ではありません。[免責事項]

トラックバック

この記事へのトラックバックURL
http://blog.hulinks.co.jp/cgi/mt/mt-tb.cgi/458
内容に対しての関連性がみられないものは削除する場合があります

今回は、認証が必要な Twitter API を Mathematica 8 か... 続きを読む

コメント一覧

MathematicaのImport関数でTwitterのデータが読み込めるとは!僕はHTMLのソースを読み込んで、テキストデータとして処理していました。
ところで検索したい文字列に漢字等が含まれる場合、どうすれば良いのでしょうか?その手の関数はMathematicaに標準で含まれている気がするのですが、ご存知ですか?僕は見つけることが出来ませんでした。

千坂さん、いつもありがとうございます。
もちろん、テキストデータとして処理しても良いですよね。

検索文字列に全角文字が含まれている場合は、URL エンコードする必要があります。仰る通り標準関数にありそうなのですが、僕も見つけられませんでした。ただ、J/Link を使えば割と容易に実現できます。こんな感じで。

keyword = "マセマティカ";
Needs["JLink`"];
LoadJavaClass["java.net.URLEncoder"];
url = "http://search.twitter.com/search.json?q=" <>
  URLEncoder`encode[keyword, "UTF-8"] <> "&rpp=5";
json = Import[url, "JSON"];
Column["text" /. # & /@ ("results" /. json), Dividers -> All]

J/Link を使う例は、これも含めて、次回記事でもう少し紹介する予定です。お楽しみに。

なるほど、JAVAを使い方法があったのですね!勉強になりました。

コメントの投稿

Emailアドレスは表示されません。は必須項目です。
ヒューリンクス取り扱い製品の内容や購入に関するお問い合わせはヒューリンクスサイト連絡先へお願いいたします。投稿前にその他の注意事項もご覧ください。

HULINKS サイトの新着情報