Walrus,Digit. | 一覧 | 検索 | 更新履歴(RSS) | 新規作成
はてなブックマークに追加 はてなブックマークを表示 編集 | 編集(管理者用) | 差分

Perlモジュール/WWW::Mixi

編集

Mixiに簡単にアクセスするためのLWP::UserAgentライクなモジュール。

更新情報、不具合情報などはmixiのWWW::Mixiコミュニティにも挙げていきます。

WWW::MixiモジュールはCPANにも登録済みです。

概要

編集

Mixiに特化したLWP::RobotUAモジュールのサブクラスです。

WWW::MixiはふつうのLWP::UserAgentのように使うことができます。 例えば、次のような手順でCookieを有効にし、ログインし、トップページ(home.pl)を取得することができます。 この書き方であれば、use WWW::Mixiの代わりにuse LWP::UserAgentとかuse LWP::RobotUAとして、WWW::Mixi->newの行を適当に書き換えてやると、それでもトップページの取得ができます。

use WWW::Mixi;
use HTTP::Cookies;
use HTTP::Request::Common;

my $mixi_email    = 'me@mixi.user';
my $mixi_password = 'mixi_password';
my $login_url     = 'http://mixi.jp/login.pl';
my $home_url      = 'http://mixi.jp/home.pl';

my $mixi = WWW::Mixi->new($mixi_email, $mixi_password);

print "Cookieを有効にします。\n";
my $cookie = sprintf('cookie_%s_%s.txt', $$, time);
my $cookie_jar = HTTP::Cookies->new(file => $cookie, ignore_discard => 1);
$mixi->cookie_jar($cookie_jar);

print "ログインします。\n";
my @form = ('email' => $mixi_email, 'password' => $mixi_password, 'next_url' => $home_url);
my $request = &HTTP::Request::Common::POST($login_url, [@form]);
my $response = $mixi->request($request);

print "ホームを取得します。\n";
$request = &HTTP::Request::Common::GET($home_url);
$response = $mixi->request($request);
print $response->content;

WWW::Mixiを使っているときには、LWP::UserAgentなどの各メソッドに加えて、login、get、postなどのメソッドが追加されていますので、mixi関連の作業をもう少し簡単にできます。 例えば、ログインメソッドはCookieの有効化、リクエストの生成、ログインと行った一連の作業をこなしてくれるので、上のスクリプトを次のように書き直すことができます。

use WWW::Mixi;
use HTTP::Request::Common;

my $home_url      = 'http://mixi.jp/home.pl';

my $mixi = WWW::Mixi->new('me@mixi.user', 'mixi_password');

print "ログインします。\n";
my $response = $mixi->login;

print "ホームを取得します。\n";
$request = &HTTP::Request::Common::GET($home_url);
$response = $mixi->request($request);
print $response->content;

同様に、getやpostメソッドもリクエストの生成と指定URLの取得を行い、また'login.pl'や'home.pl'のようなURLが指定された場合には絶対URLへの変換も行ってくれるので、次のようにできます。

use WWW::Mixi;

my $mixi = WWW::Mixi->new($mixi_email, $mixi_password);

print "ログインします。\n";
my $response = $mixi->login;

print "ホームを取得します。\n";
$response = $mixi->get('home.pl');
print $response->content;

WWW::Mixiモジュールは、おそらくMixiを利用するためのユーティリティの作成に役立つでしょう。 例えば、更新RSSの生成、公式のmixiコミュニティニュースとは違った更新情報メールの作成などができるでしょう。 LWP::UserAgentモジュールとHTMLを解析するテクニックを持っていれば、Mixiの固有の部分を意識することなくこれらの作成に取り掛かれるはずです。

ダウンロード

WWW::Mixiモジュールは以下から、tar+gzまたはlzh形式の圧縮ファイルを取得し、展開して使用してください。

CPANモジュールを利用できる環境であれば、CPANからのインストールも可能です。

perl -MCPAN install WWW::Mixi

WWW::MixiモジュールはPerl5以上、LWP::RobotUAモジュールが動作する環境で利用できます。 LWP::RobotUAモジュールはLWPが使えれば通常は使えるはずです。 利用できるか不明の時は、以下の様にしてバージョンが表示されるか確認してみてください。

perl -MLWP::RobotUA -e "print LWP::RobotUA->VERSION"

LWPモジュールはCPANか、ActivePerlを使っている時はPPMでインストールできます。

関連情報

ドキュメント

以下はWWW::Mixiのドキュメントです。 上の説明ではごく一部のメソッドについてしか説明していませんので、どんなメソッドがあるか確認するにはドキュメントを確認してください。 例えばtestというメソッドがありますが、このコード(スクリプトの末尾についています)と実行結果は、WWW::Mixiモジュールの使い方と実行結果を知るのに適当なサンプルになるでしょう。

このドキュメントはWWW::Mixiモジュールに同梱されているPOD文書をHTML化したものです

関連URL

プロキシの使用などについては、このサイト内の以下のページが役に立つかと思います。 ただ、プロキシ以外でmixiに役立ちそうなものは、WWW::Mixiモジュールに盛り込んでしまいましたけど。

mixiにアクセスするPerlアプリケーションには、ほげほげさにさに氏の非公式モバイルmixiや私のmixiTodayがあります。 ただ、非公式モバイルmixiはLWPモジュールも使わずに書かれていますし、mixiTodayはLWP::UserAgentで書かれていて配布されていません。 けれど、mixiのHTMLデータの解析については非公式モバイルmixiのソースは有用でしょう。

WWW::Mixiが使用されているツールには以下があります。

WWW::Mixiを解説しているページには以下があります。

ご注意とお願い

WWW::Mixiモジュールはas isで提供されるもので、ライセンスはPerlと同じGPLないしArtistic Licenseです。 その他諸々、各ライセンスの条項をご確認ください。

WWW::Mixiモジュールはざっくりと書かれていて、未完成なところが多々あります。 もし試験をされた方、パッチを書かれた方などいらっしゃいましたら、ぜひお知らせください。 よろしくお願い致します。

コメント

コメントスパムがひどいためこのページのコメント欄を削除しました。コメントしたい方は暫定的に「掲示板」のページへお願いいたします。

    だけが異なるようなメソッド --- を見ると、

    のテクニックを使いたくなりませんか?

        のには、きっと大きな躊躇があると思います、特に基底packageのバージョンアップ対応や拡張packageのメンテを考慮すると。