=encoding utf8 =head1 NAME WWW::Mixi::Cookbook - WWW::Mixiã®ã‚¯ãƒƒã‚¯ãƒ–ック =head1 DESCRIPTION ã“ã®ãƒ‰ã‚ュメントã«ã¯WWW::Mixiã®å…¸åž‹çš„ãªä½¿ã„方を示ã™ã„ãã¤ã‹ã®ã‚µãƒ³ãƒ—ルãŒå…¥ã£ã¦ã„ã¾ã™ã€‚ =head1 mixiã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿å–å¾— WWW::Mixiモジュールã«ã¯ã€ãƒã‚°ã‚¤ãƒ³ç”¨ã®loginメソッドã¨ã€ãã‚Œã‹ã‚‰1メソッドã§ç›´æŽ¥ã‚³ãƒ¡ãƒ³ãƒˆãªã©ã‚’å–å¾—ã§ãるデータå–得メソッドãŒã‚ã‚Šã¾ã™ã€‚ ã“れらを使ã†ã¨ã€mixiã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã¯éžå¸¸ã«ç°¡å˜ã§ã™ã€‚ =head2 ãƒã‚°ã‚¤ãƒ³ mixiã¸ã®ãƒã‚°ã‚¤ãƒ³ã¯ã€loginコマンド一ã¤ã§å®Œäº†ã—ã¾ã™ã€‚ ãƒã‚°ã‚¤ãƒ³å¾Œã«ã¯ã€LWP::UserAgentスタイルã§ã®Requestメソッドやgetã€postメソッドã§ã®mixiアクセスもã€mixiã‹ã‚‰ã®ãƒ‡ãƒ¼ã‚¿å–得メソッドã§ã®ãƒ‡ãƒ¼ã‚¿å–å¾—ã‚‚å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚ use WWW::Mixi; use HTTP::Request::Common; my $mixi = WWW::Mixi->new('me@mixi.user', 'mixi_password'); print "ãƒã‚°ã‚¤ãƒ³ã—ã¾ã™ã€‚\n"; my $response = $mixi->login; =head2 マイミクシイ最新日記ã®å–å¾— mixiã‹ã‚‰ã®æƒ…å ±å–å¾—ã‚‚ã€ç§ãŒãƒ‡ãƒ¼ã‚¿å–得メソッドã¨èªã‚“ã§ã„ã‚‹ã„ãã¤ã‹ã®ä¾¿åˆ©ãªãƒ¡ã‚½ãƒƒãƒ‰ã§ç°¡å˜ã«æ¸ˆã¾ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ ã™ã¹ã¦ã®ãƒ‡ãƒ¼ã‚¿å–å¾—ã«å¯¾å¿œã—ã¦ã„ã‚‹ã‚ã‘ã§ã¯ã‚ã‚Šã¾ã›ã‚“ãŒã€ãれを使ã†ã®ãŒä¸€ç•ªç°¡å˜ãªæ–¹æ³•ã§ã™ã€‚ ã¾ãšã€ãƒžã‚¤ãƒŸã‚¯ã‚·ã‚¤æœ€æ–°æ—¥è¨˜ç”¨ã®ãƒ‡ãƒ¼ã‚¿å–得メソッド"get_new_friend_diary"を紹介ã—ã¾ã—ょã†ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€æ¬¡ã®ã‚ˆã†ãªé…列ã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚ { 'subject' => 'mixiã®æœ¬ã€‚', 'link' => 'http://mixi.jp/list_item_review.pl?reviewer_id=xxxx&item_id=xxxxx', 'name' => '塚本牧生', 'time' => '2004/08/18 13:18' } 例ã¨ã—ã¦ã€ãƒžã‚¤ãƒŸã‚¯ã‚·ã‚¤æœ€æ–°æ—¥è¨˜ã‚’テã‚ストã§å‡ºåŠ›ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—トを挙ã’ã¾ã—ょã†ã€‚ use WWW::Mixi; my $mixi = WWW::Mixi->new('me@mixi.user', 'mixi_password'); print "ãƒã‚°ã‚¤ãƒ³ã—ã¾ã™ã€‚\n"; my $response = $mixi->login; print "マイミクシイ最新日記をå–å¾—ã—ã¾ã™ã€‚\n"; my =item get_new_friend_diary; print "マイミクシイ最新日記を出力ã—ã¾ã™ã€‚\n"; foreach my $item (@items) { my $subject = $item->{'subject'}; my $link = $item->{'link'}; my $name = $item->{'name'}; my $time = $item->{'time'}; print "â– $subject\n[日時] $time\n[åå‰] $name\n[Link] $link\n\n"; } ã¡ã‚‡ã£ã¨æ°—を付ã‘ã¦ãŠããŸã„ã®ã¯ã€mixiã®æ–‡å—コードãŒEUCã ã¨ã„ã†ã“ã¨ã§ã™ã€‚ Windowsã®ã‚³ãƒžãƒ³ãƒ‰ãƒ©ã‚¤ãƒ³ãªã©ã§ä½¿ã†æ™‚ã«ã¯ã€æ–‡å—コードをSJISã«ã—ã¦ã‚„ã‚‹å¿…è¦ãŒã‚ã‚‹ã§ã—ょã†ã‹ã‚‰ã€ãã®æ™‚ã¯Jcodeモジュールãªã©ã‚‚組åˆã‚ã›ã¦ã¿ã¦ãã ã•ã„。 =head2 ãã®ä»–ã®ãƒ‡ãƒ¼ã‚¿å–得メソッド マイミクシイ最新日記用ã®get_new_friend_diaryã®ä»–ã«ã‚‚ã€ã„ãã¤ã‹ã®ãƒ‡ãƒ¼ã‚¿å–得メソッドãŒã‚ã‚Šã¾ã™ã€‚ 以下ã¯0.21版ã§åˆ©ç”¨ã§ãるデータå–得メソッドã®ä¸€éƒ¨ã§ã™ãŒã€åŸºæœ¬çš„ã«ã¯å¾Œè¿°ã®ã€Œparse_~ã€ã¨ã„ã†ãƒ¡ã‚½ãƒƒãƒ‰ã«ã¯ã€å¯¾å¿œã™ã‚‹ã€Œget_~ã€ãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚ã‚‹ã¨æ€ã£ã¦ã¾ãšé–“é•ã„ã¯ã‚ã‚Šã¾ã›ã‚“。 æ£ç¢ºã§å®Œå…¨ãªä¸€è¦§ã¯ã€ãƒ‰ã‚ュメントを確èªã—ã¦ãã ã•ã„。 多ãã®ãƒ‡ãƒ¼ã‚¿å–得メソッドã¯ã€get_new_friend_diaryã¨åŒã˜ã‚ˆã†ã«å¼•æ•°ãªã—ã§å®Ÿè¡Œã§ãã€ãã‚Œãžã‚Œæ±ºã¾ã£ãŸå½¢å¼ã®ï¼ˆã§ã‚‚get_new_friend_diaryã¨ä¼¼ãŸæ„Ÿã˜ã®ï¼‰ãƒãƒƒã‚·ãƒ¥ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã‚’複数返ã—ã¾ã™ã€‚ =over 4 =item get_information ホームã«è¡¨ç¤ºã•ã‚Œã‚‹ã€Œç®¡ç†è€…ã‹ã‚‰ã®ãŠçŸ¥ã‚‰ã›ã€ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_list_comment 最近ã®ã‚³ãƒ¡ãƒ³ãƒˆã«è¡¨ç¤ºã•ã‚Œã‚‹ã€Œæœ€è¿‘ã®ã‚³ãƒ¡ãƒ³ãƒˆä¸€è¦§ã€ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_list_message メッセージã«è¡¨ç¤ºã•ã‚Œã‚‹ã€Œå—ä¿¡ç®±ã€ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_new_bbs コミュニティ最新書ãè¾¼ã¿ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_new_comment 日記コメント記入履æ´ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_new_friend_diary マイミクシイ最新日記をå–å¾—ã—ã¾ã™ã€‚ =item get_new_review マイミクシイ最新レビューをå–å¾—ã—ã¾ã™ã€‚ =item get_show_log ã‚ã—ã‚ã¨ã‚’å–å¾—ã—ã¾ã™ã€‚ =back 例外ã¨ã—ã¦ã€ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼é …目をå–å¾—ã™ã‚‹get_main_menuã€ãƒãƒŠãƒ¼ã‚’å–å¾—ã™ã‚‹get_bannerã€ãƒ„ールãƒãƒ¼é …目をå–å¾—ã™ã‚‹get_tool_barã®3ã¤ã¯ã€å¼•æ•°ã§URLを指定ã§ãã¾ã™ã€‚ ã“れらã¯ã©ã®ãƒšãƒ¼ã‚¸ã«ã§ã‚‚ã‚ã‚‹ã‹ã‚‰ã§ã™ã€‚ URLã¯"home.pl"ã®ã‚ˆã†ã«ã€ãƒšãƒ¼ã‚¸åã®éƒ¨åˆ†ã ã‘ã§ã‚‚構ã„ã¾ã›ã‚“。 my =item get_main_menu("home.pl"); URLã‚’çœç•¥ã—ãŸæ™‚ã«ã¯ã€æœ€å¾Œã«ãƒ‡ãƒ¼ã‚¿å–得メソッドã‹ã€getã¾ãŸã¯postメソッドã§å–å¾—ã—ãŸãƒšãƒ¼ã‚¸ã«ãªã‚Šã¾ã™ã€‚ =over 4 =item get_main_menu ページ先é 部ã®ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_banner ãƒãƒŠãƒ¼ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_tool_bar メインメニューã®ä¸‹ã«æ¨™ç¤ºã•ã‚Œã‚‹ãƒ„ールãƒãƒ¼ã‚’å–å¾—ã—ã¾ã™ã€‚ =back ã¾ãŸã€åˆ¥ã®ä¾‹å¤–ã¨ã—ã¦get_show_log_countã¯ã‚ã—ã‚ã¨æ•°ã‚’è¿”ã—ã¾ã™ã€‚ åŒæ§˜ã«ã€get_self_idã¯è‡ªåˆ†ã®IDã‚’è¿”ã—ã¾ã™ã€‚ ã“れらã®è¿”り値ã¯é…列ã§ã‚‚ã€ãƒãƒƒã‚·ãƒ¥ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã§ã‚‚ãªãã€å˜ãªã‚‹ã‚¹ã‚«ãƒ©ã§ã™ã€‚ my $count = $mixi->get_show_log_count; my $id = $mixi->get_self_id; =over 4 =item get_show_log_count ã‚ã—ã‚ã¨ã‚’å–å¾—ã—ã¾ã™ã€‚ =item get_self_id 自分ã®IDã‚’å–å¾—ã—ã¾ã™ã€‚ =back =head1 LWP::UserAgentスタイルã§ã®ã‚¢ã‚¯ã‚»ã‚¹ ãƒã‚°ã‚¤ãƒ³ã¨ãƒ‡ãƒ¼ã‚¿å–得メソッドを使ã£ãŸã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã¯ç°¡å˜ã§ã™ãŒã€å–å¾—ã§ãるデータã¯é™ã‚‰ã‚Œã¾ã™ã—ã€ã‚¨ãƒ©ãƒ¼ãƒãƒ³ãƒ‰ãƒªãƒ³ã‚°ã®å¼±ã•ãŒæ³£ã所ã§ã™ã€‚ ã‚‚ã†å°‘ã—ç´°ã‹ã„制御ã¨è‡ªç”±ãªåˆ©ç”¨ã‚’考ãˆã‚‹ã®ã§ã‚ã‚Œã°ã€ã“れをLWP::UserAgentã ã¨æ€ã£ã¦ä½¿ã£ã¦ã¿ã¦ãã ã•ã„。 実際ã«ã€WWW::Mixiã®ã‚¹ãƒ¼ãƒ‘ークラスã¯LWP::RobotUAã§ã€ã•ã‚‰ã«ãã®ã‚¹ãƒ¼ãƒ‘ークラスã¯LWP::UserAgentã§ã™ã€‚ 多ãã®ãƒ¡ã‚½ãƒƒãƒ‰ãŒLWP::UserAgentã‹ã‚‰ç¶™æ‰¿ã•ã‚Œã¦ãŠã‚Šã€ãã‚Œã»ã©é•ã„ã‚’æ„Ÿã˜ã‚‹ã“ã¨ã¯ãªã„ã§ã—ょã†ã€‚ =head2 ãƒã‚°ã‚¤ãƒ³ LWP::UserAgentスタイルã§ã‚³ãƒ¼ãƒ‡ã‚£ãƒ³ã‚°ã™ã‚‹ã«ã—ã¦ã‚‚ã€ãƒã‚°ã‚¤ãƒ³ã¯loginメソッドを使ã£ã¦ã—ã¾ã£ã¦è‰¯ã„ã§ã—ょã†ã€‚ LWP::UserAgentを使ã†æ™‚ã®ãƒã‚°ã‚¤ãƒ³ä½œæ¥ã¯ã€POSTã®HTTP::Requestオブジェクトを生æˆã—ã€Cookieを有効ã«ã—ã€ãƒã‚°ã‚¤ãƒ³ãƒšãƒ¼ã‚¸ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã¨ã„ã£ãŸæ‰‹é †ã«ãªã‚Šã¾ã™ã€‚ ãƒã‚°ã‚¤ãƒ³ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€å†…部的ã«ã¯å˜ã«ã“ã‚Œã‚’é †ç•ªã«è¡Œã„ã¾ã™ã€‚ ãã®å¾Œã¯Cookieã§ã‚»ãƒƒã‚·ãƒ§ãƒ³IDãŒè‡ªå‹•çš„ã«é€å—ä¿¡ã•ã‚Œã¾ã™ã®ã§ã€LWP::UserAgentã§ã™ã‚‹ã‚ˆã†ã«requestã‚„simple_requestメソッドã§å„ページã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã™ã€‚ 例ãˆã°ã€ãƒã‚°ã‚¤ãƒ³å¾Œã«ãƒ›ãƒ¼ãƒ ã®HTML部分を出力ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®ã‚ˆã†ã«ã—ã¾ã™ã€‚ use WWW::Mixi; use HTTP::Request::Common; my $mixi = WWW::Mixi->new('me@mixi.user', 'mixi_password'); print "ãƒã‚°ã‚¤ãƒ³ã—ã¾ã™ã€‚\n"; my $response = $mixi->login; print "ホームをå–å¾—ã—ã¾ã™ã€‚\n"; $request = &HTTP::Request::Common::GET('http://mixi.jp/home.pl'); $response = $mixi->request($request); print $response->content; =head2 getメソッド LWP::UserAgentモジュールã§ã®æ¨™æº–çš„ãªãƒšãƒ¼ã‚¸å–å¾—ã¯(1)HTTP::Requestオブジェクトã®ç”Ÿæˆã€(2)requestメソッドã§ãƒªã‚¯ã‚¨ã‚¹ãƒˆã®å‡¦ç†ã®æ‰‹é †ã«ãªã‚Šã¾ã™ã€‚ WWW::Mixiモジュールã§ã¯ã€ã“ã®ä»–ã«getã¨postã¨ã„ã†ç°¡æ˜“çš„ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’用æ„ã—ã¦ãŠã‚Šã€ã“れを使ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚ 例ãˆã°ã€ä¸Šã§ã¯æ¬¡ã®æ§˜ã«ã—ã¦ãƒ›ãƒ¼ãƒ ã‚’å–å¾—ã—ã¾ã—ãŸã€‚ use WWW::Mixi; use HTTP::Request::Common; (ç•¥) print "ホームをå–å¾—ã—ã¾ã™ã€‚\n"; $request = &HTTP::Request::Common::GET('http://mixi.jp/home.pl'); $response = $mixi->request($request); print $response->content; getを使ã†ã¨ã€HTTP::Request::Commonモジュールãªã©ã‚’使ã£ãŸãƒªã‚¯ã‚¨ã‚¹ãƒˆã®ç”Ÿæˆã‚’ã›ãšã«ã€ç›´æŽ¥URLを指定ã™ã‚Œã°æ¸ˆã¿ã¾ã™ã€‚ ã¾ãŸã€URLã‚‚'http://'ã‹ã‚‰å§‹ã¾ã‚‹çµ¶å¯¾URLã§ã¯ãªãã€æœ€å¾Œã®ãƒ•ã‚¡ã‚¤ãƒ«å(ã¾ãŸã¯ãã“ã‹ã‚‰æ‹¡å¼µåã®'.pl'ã‚’çœã„ãŸã‚‚ã®ï¼‰ã‚’指定ã™ã‚Œã°å分ã§ã™ã€‚ ã¤ã¾ã‚Šã€ä¸‹ã®ã‚ˆã†ã«æ›¸ã‘ã°åŒã˜äº‹ãŒã§ãã¾ã™ã€‚ use WWW::Mixi; (ç•¥) print "ホームをå–å¾—ã—ã¾ã™ã€‚\n"; $response = $mixi->get('home.pl'); print $response->content; =head2 postメソッド ç°¡å˜ã«GETã§ãƒšãƒ¼ã‚¸ã‚’å–å¾—ã™ã‚‹ãŸã‚ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¨ã—ã¦ã€WWW::Mixiã«ã¯getã¨ã„ã†ãƒ¡ã‚½ãƒƒãƒ‰ãŒç”¨æ„ã•ã‚Œã¦ã„ã¾ã—ãŸã€‚ åŒæ§˜ã«POSTã§ãƒ•ã‚©ãƒ¼ãƒ ã®å…¥åŠ›å€¤ã‚’é€ä¿¡ã™ã‚‹ã«ã¯ã€postã¨ã„ã†ç°¡æ˜“çš„ãªãƒ¡ã‚½ãƒƒãƒ‰ã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚ postã§ã¯ã€URLã®ä»–ã«ãƒ•ã‚©ãƒ¼ãƒ データを引数ã§æ¸¡ã—ã¾ã™ã€‚ 例ãˆã°ã€æ¬¡ã®ã‚ˆã†ã«ã™ã‚Œã°æ—¥è¨˜ã®æŠ•ç¨¿ãŒã§ãã¾ã™ã€‚ use WWW::Mixi; my %diary = ( 'submit' => 'confirm', # プレビュー:mainã€ä½œæˆ:confirmã€ä¿®æ£:cancel 'diary_title' => 'WWW::Mixiã§æ—¥è¨˜ã®æŠ•ç¨¿', 'diary_body' => "WWW::Mixiモジュールã§æ—¥è¨˜ã‚’投稿ã—ã¦ã¿ã¾ã™ã€‚\nPOSTメソッドã®è©¦é¨“ã§ã™ã€‚", 'photo1' => '', 'photo2' => '', 'photo3' => '', ); my $mixi = WWW::Mixi->new('me@mixi.user', 'mixi_password'); print "ãƒã‚°ã‚¤ãƒ³ã—ã¾ã™ã€‚\n"; my ($result, $response) = $mixi->login; print "日記を投稿ã—ã¾ã™ã€‚\n"; $response = $mixi->post('add_diary.pl', %diary); フォームã®å€¤ã¯ã€é€ä¿¡å‰ã«è‡ªå‹•çš„ã«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã•ã‚Œã¾ã™ã€‚ æ„è˜çš„ã«ã‚¨ãƒ³ã‚³ãƒ¼ãƒ‰ã‚„エスケープをã™ã‚‹å¿…è¦ã¯ã‚ã‚Šã¾ã›ã‚“。 =head2 ファイルã®é€ä¿¡ postメソッドã§ã¯å†™çœŸãªã©ã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é€ä¿¡ã™ã‚‹ã“ã¨ã‚‚考慮ã•ã‚Œã¦ã„ã¾ã™ï¼ˆãŒã€ã¾ã£ãŸã試験ã•ã‚Œã¦ã„ã¾ã›ã‚“。ãœã²è©¦é¨“ã—ã¦ã€çµæžœã‚’æ•™ãˆã¦ãã ã•ã„)。 例ãˆã°ã€æ—¥è¨˜ã®ãƒ—レビューを表示ã™ã‚‹ãŸã‚ã®ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ã§ã¯ã€æ—¥è¨˜ã«è²¼ä»˜ã™ã‚‹å†™çœŸã‚’「photo1ã€ã€Œphoto2ã€ã€Œphoto3ã€ã®3ã¤ã®ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«å…¥ã‚Œã¦ã‚„ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ フィールド値ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’指定ã—ãŸã„時ã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«ãƒ‘スã ã‘ã‚’æŒã¤é…列リファレンスを指定ã—ã¾ã™ã€‚ use WWW::Mixi; my %diary = ( 'submit' => 'main', # プレビュー:mainã€ä½œæˆ:confirmã€ä¿®æ£:cancel 'diary_title' => 'WWW::Mixiã§æ—¥è¨˜ã®æŠ•ç¨¿', 'diary_body' => "WWW::Mixiモジュールã§æ—¥è¨˜ã‚’投稿ã—ã¦ã¿ã¾ã™ã€‚\nPOSTメソッドã®è©¦é¨“ã§ã™ã€‚", 'photo1' => ['c:\My Documents\photos\walrus.png'], 'photo2' => '', 'photo3' => '', ); my $mixi = WWW::Mixi->new('me@mixi.user', 'mixi_password'); print "ãƒã‚°ã‚¤ãƒ³ã—ã¾ã™ã€‚\n"; my ($result, $response) = $mixi->login; print "日記を投稿ã—ã¾ã™ã€‚\n"; $response = $mixi->post('add_diary.pl', %diary); =head2 メインメニューã®è§£æžãƒ¡ã‚½ãƒƒãƒ‰ コンテンツã®å–å¾—ãŒæ¸ˆã‚ã°ã€æ¬¡ã¯å¿…è¦ãªãƒ‡ãƒ¼ã‚¿ã‚’å–り出ã™ãŸã‚ã®è§£æžã‚’ã™ã‚‹ã§ã—ょã†ã€‚ WWW::Mixiモジュールã«ã¯ã€ã„ãã¤ã‹ã®ãƒšãƒ¼ã‚¸ç”¨ã®è§£æžãƒ¡ã‚½ãƒƒãƒ‰ãŒã‚ã‚Šã¾ã™ã€‚ 解æžç³»ã§ä¸€ç•ªç°¡å˜ãªï¼ˆãã—ã¦æœ€åˆã«ä½œã‚‰ã‚ŒãŸï¼‰è§£æžãƒ¡ã‚½ãƒƒãƒ‰ãŒãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ï¼ˆãƒšãƒ¼ã‚¸å…ˆé ã®mixiã®ãƒã‚°ã¨ä¸€ç·’ã«ã€Œãƒ›ãƒ¼ãƒ ã€ã€Œæ¤œç´¢ã€ç‰ã®ãƒœã‚¿ãƒ³ãŒåŸ‹ã‚è¾¼ã¾ã‚ŒãŸãƒ¡ãƒ‹ãƒ¥ãƒ¼ã§ã™ï¼‰ã‚’解æžã™ã‚‹parse_main_menuメソッドã§ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã¯ã€æ¬¡ã®ã‚ˆã†ãªé…列ã®ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚ { 'subject' => 'ホーム', 'link' => 'http://mixi.jp/home.pl' } 例ã¨ã—ã¦ã€ãƒ›ãƒ¼ãƒ ã‚’å–å¾—ã—ã¦ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã®å„é …ç›®ã‚’å‡ºåŠ›ã™ã‚‹ã‚¹ã‚¯ãƒªãƒ—トを挙ã’ã¾ã—ょã†ã€‚ ãŸã ã—ホームã®å–å¾—ã¾ã§ã®éƒ¨åˆ†ã¯ã€ã€Œãƒšãƒ¼ã‚¸ã®å–å¾—ã€ã®é …ã§å‡ºã¦ããŸã‚‚ã®ã¨åŒã˜ãªã®ã§ã–ã£ãり済ã¾ã›ã¦ã„ã¾ã™ã€‚ use WWW::Mixi; my $mixi = WWW::Mixi->new('me@mixi.user', 'mixi_password'); print "ãƒã‚°ã‚¤ãƒ³ã—ã¾ã™ã€‚\n"; my $response = $mixi->login; print "ホームをå–å¾—ã—ã¾ã™ã€‚\n"; $response = $mixi->get('home.pl'); print "メインメニューを出力ã—ã¾ã™ã€‚\n"; my =item parse_main_menu($response); foreach my $item (@items) { my $subject = $item->{'subject'}; my $link = $item->{'link'}; print "$subject -> $link\n"; } ãªãŠã€$responseを指定ã—ãªã‹ã£ãŸæ™‚ã¯ã€æœ€å¾Œã«getã¾ãŸã¯postメソッドã§å–å¾—ã—ãŸãƒ‡ãƒ¼ã‚¿ã‚’解æžã—ã¾ã™ï¼ˆrequestã‚„simple_requestã¯å¯¾è±¡å¤–ã§ã™ï¼‰ã€‚ 上ã®ä¾‹ã§ã¯ã€è§£æžã—ã¦ã„ã‚‹ã®ã¯æœ€å¾Œã«getã§å–å¾—ã—ãŸãƒ‡ãƒ¼ã‚¿ãªã®ã§ã€ä¸‹ã®ã‚ˆã†ã«$responseã®æŒ‡å®šã¯çœã„ã¦ã‚‚構ã„ã¾ã›ã‚“。 my =item parse_main_menu(); =head2 ãã®ä»–ã®è§£æžãƒ¡ã‚½ãƒƒãƒ‰ メインメニュー用ã®parse_main_methodã®ä»–ã«ã‚‚ã€ã„ãã¤ã‹ã®è§£æžãƒ¡ã‚½ãƒƒãƒ‰ãŒè¨ã‘られã¦ã„ã¾ã™ã€‚ 解æžãƒ¡ã‚½ãƒƒãƒ‰ã¯ã„ãšã‚Œã‚‚$responseを引数ã«å–ã‚Šã€ã»ã¨ã‚“ã©ã¯ãƒãƒƒã‚·ãƒ¥ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã®é…列を返ã—ã¾ã™ã€‚ $responseを指定ã—ãªã‹ã£ãŸæ™‚ã®è§£æžå¯¾è±¡ã¯ã€æœ€å¾Œã«getã¾ãŸã¯postメソッドã§å–å¾—ã—ãŸãƒ‡ãƒ¼ã‚¿ã§ã™ã€‚ ãƒãƒƒã‚·ãƒ¥ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã®æŒã¤ã‚ãƒ¼é …ç›®ã¯ã€ãƒ¡ã‚½ãƒƒãƒ‰ã”ã¨ã«é•ã„ã¾ã™ã€‚ 以下ã¯0.21版ã§åˆ©ç”¨ã§ãる解æžç”¨ãƒ¡ã‚½ãƒƒãƒ‰ã®ä¸€è¦§ã§ã™ã€‚ 最新版ã§ã¯ãƒ¡ã‚½ãƒƒãƒ‰ãŒè¿½åŠ ã•ã‚Œã¦ã„ãŸã‚Šå¤‰æ›´ã•ã‚Œã¦ã„ãŸã‚Šã™ã‚‹ã‹ã‚‚知れã¾ã›ã‚“ã®ã§ã€è©³ç´°ã¯ãƒ‰ã‚ュメントを確èªã—ã¦ãã ã•ã„。 =over 4 =item parse_main_menu ページ先é 部ã®ãƒ¡ã‚¤ãƒ³ãƒ¡ãƒ‹ãƒ¥ãƒ¼ã‚’解æžã—ã¾ã™ã€‚ =item parse_banner メインメニューã«åŸ‹ã‚è¾¼ã¾ã‚Œã¦ã„ã‚‹ãƒãƒŠãƒ¼ã‚’解æžã—ã¾ã™ã€‚ =item parse_tool_bar メインメニューã®ä¸‹ã«æ¨™ç¤ºã•ã‚Œã‚‹ãƒ„ールãƒãƒ¼ã‚’解æžã—ã¾ã™ã€‚ =item parse_information ホーム(home.pl)ã«è¡¨ç¤ºã•ã‚Œã‚‹ã€Œç®¡ç†è€…ã‹ã‚‰ã®ãŠçŸ¥ã‚‰ã›ã€ã‚’解æžã—ã¾ã™ã€‚ =item parse_calendar カレンダー(calendar.pl)上ã®ã‚¤ãƒ™ãƒ³ãƒˆï¼ˆå‚åŠ ã‚¤ãƒ™ãƒ³ãƒˆã€ä¸å‚åŠ ã‚¤ãƒ™ãƒ³ãƒˆã€ãƒžã‚¤ãƒŸã‚¯ã‚·ã‚£ã®èª•ç”Ÿæ—¥ï¼‰ã‚’解æžã—ã¾ã™ã€‚ =item parse_calendar_term カレンダー(calendar.pl)ãŒè¡¨ç¤ºã—ã¦ã„る期間(年月)を解æžã—ã¾ã™ã€‚ =item parse_calendar_next カレンダー(calendar.pl)ã®ã€Œæ¬¡ã®æœˆã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_calendar_previous カレンダー(calendar.pl)ã®ã€Œå‰ã®æœˆã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_bookmark ãŠæ°—ã«å…¥ã‚Šï¼ˆlist_bookmark.pl)を解æžã—ã¾ã™ã€‚ =item parse_list_comment 最近ã®ã‚³ãƒ¡ãƒ³ãƒˆï¼ˆlist_comment.pl)ã«è¡¨ç¤ºã•ã‚Œã‚‹ã€Œæœ€è¿‘ã®ã‚³ãƒ¡ãƒ³ãƒˆä¸€è¦§ã€ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_community コミュニティ一覧(list_community.pl)ã«è¡¨ç¤ºã•ã‚Œã‚‹ã‚³ãƒŸãƒ¥ãƒ‹ãƒ†ã‚£ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_community_next コミュニティ一覧(list_community.pl)ã®ã€Œæ¬¡ã®ãƒšãƒ¼ã‚¸ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_community_previous コミュニティ一覧(list_community.pl)ã®ã€Œå‰ã®ãƒšãƒ¼ã‚¸ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_diary 日記(list_diary.pl)ã®æ—¥è¨˜é …目を解æžã—ã¾ã™ã€‚ =item parse_list_diary_next 日記(list_diary.pl)ã®ã€Œæ¬¡ã®xx件ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_diary_previous 日記(list_diary.pl)ã®ã€Œå‰ã®xx件ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_friend å‹äººãƒ»çŸ¥äººä¸€è¦§ï¼ˆlist_friend.pl)ã®å‹äººãƒ»çŸ¥äººã‚’解æžã—ã¾ã™ã€‚ =item parse_list_friend_next å‹äººãƒ»çŸ¥äººä¸€è¦§ï¼ˆlist_friend.pl)ã®ã€Œæ¬¡ã®ãƒšãƒ¼ã‚¸ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_friend_previous å‹äººãƒ»çŸ¥äººä¸€è¦§ï¼ˆlist_friend.pl)ã®ã€Œå‰ã®ãƒšãƒ¼ã‚¸ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_list_message メッセージ(message.pl)ã«è¡¨ç¤ºã•ã‚Œã‚‹ã€Œå—ä¿¡ç®±ã€ã‚’解æžã—ã¾ã™ã€‚ =item parse_new_bbs コミュニティ最新書ãè¾¼ã¿ï¼ˆnew_bbs.pl)を解æžã—ã¾ã™ã€‚ =item parse_new_comment 日記コメント記入履æ´ï¼ˆnew_comment.pl)を解æžã—ã¾ã™ã€‚ =item parse_new_friend_diary マイミクシイ最新日記(new_friend_diary.pl)を解æžã—ã¾ã™ã€‚ =item parse_new_friend_diary_next マイミクシィ最新日記(new_friend_diary.pl)ã®ã€Œæ¬¡ã®ãƒšãƒ¼ã‚¸ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_new_friend_diary_previous マイミクシィ最新日記(new_friend_diary.pl)ã®ã€Œå‰ã®ãƒšãƒ¼ã‚¸ã€ã¸ã®ãƒªãƒ³ã‚¯ã‚’解æžã—ã¾ã™ã€‚ =item parse_new_review マイミクシイ最新レビュー(new_review.pl)を解æžã—ã¾ã™ã€‚ =item parse_show_log ã‚ã—ã‚ã¨ï¼ˆshow_log.pl)を解æžã—ã¾ã™ã€‚ =item parse_show_log_count ã‚ã—ã‚ã¨ï¼ˆshow_log.pl)ã®ã€Œãƒšãƒ¼ã‚¸å…¨ä½“ã®ã‚¢ã‚¯ã‚»ã‚¹æ•°ã€ã‚’解æžã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®è¿”り値ã¯ã‚¢ã‚¯ã‚»ã‚¹æ•°ã§ã€ãƒãƒƒã‚·ãƒ¥ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã®é…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 =item parse_add_diary_preview 日記作æˆã®ãƒ—レビュー(add_diary.pl)を解æžã—ã€å„ボタンã«ç›¸å½“ã™ã‚‹ãƒ•ã‚©ãƒ¼ãƒ ã®å€¤ã‚’è¿”ã—ã¾ã™ã€‚ =item parse_self_id ãŠã™ã™ã‚レビュー(list_review.pl)を解æžã—ã€è‡ªåˆ†ã®IDã‚’è¿”ã—ã¾ã™ã€‚ ã“ã®ãƒ¡ã‚½ãƒƒãƒ‰ã®è¿”り値ã¯IDã§ã€ãƒãƒƒã‚·ãƒ¥ãƒªãƒ•ã‚¡ãƒ¬ãƒ³ã‚¹ã®é…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“。 =back =head1 SEE ALSO L<WWW::Mixi>, L<LWP::UserAgent>, L<WWW::RobotUA>, L<HTTP::Request::Common> =head1 COPYRIGHT Copyright 2004-2004 TSUKAMOTO Makio. This text is free document; you can redistribute it and/or modify it under the same terms as Perl itself. =cut