gooブックマークにブックマークするPerlスクリプト
スポンサードリンク
gooブックマーク [bookmark.goo.ne.jp] にブックマークします。livedoor Clip [clip.livedoor.com] と構造がそっくりでしたw
WWW::Mechanizeの習作としてみてくれればと思います。なるべく WWW::Mechanizeは新しいものを使うように。古いのだと、自動遷移した後のURLが正しく取れない不具合があるので、うまく動きません。
use strict;
use warnings;
use WWW::Mechanize;
use utf8;
use Encode;
 
# ID/Password
 
my $username = 'abc01234';
my $password = 'xxxxxxxx'; 
 
# WWW:Mechanize スタート
#
 
my $mech = WWW::Mechanize->new();
my $mechurl = 'http://bookmark.goo.ne.jp/add';
$mech->get($mechurl);
 
# $mechurl から https://login.mail.goo.ne.jp/certify-cgi
# /login.cgi?site=bookmark.goo.ne.jp&success=
# http%3A%2F%2Fbookmark.goo.ne.jp%2Fadd に遷移
 
# ログインフォーム入力
 
$mech -> submit_form (
  form_name=>'f1',
  fields => {
    uname => $username,
    pass  => $password,
  },
);
 
# ログイン後 https://login.mail.goo.ne.jp/certify-cgi
# /login.cgi?site=bookmark.goo.ne.jp&success=
# http%3A%2F%2Fbookmark.goo.ne.jp%2Fadd から $mechurl に遷移
 
# Bookmark Entry
 
my $title    = 'M.C.P.C.: gooブックマークにブックマークするPerlスクリプト',
my $url      = 'http://blog.dtpwiki.jp/dtp/2007/10/gooperl_a537.html',
my $comment  = 'gooブックマークへPerlスクリプトでブックマークします。要WWW::Mechanize。',
my @taglist  = ('Perl', 'goobookmark', 'gooブックマーク');
my $point    = 2; # 評価(1-5)
my $publicno = 0; # 公開設定 0->公開 1->友達まで公開 2->非公開
 
# 明示的に移動。ループで使うために
 
(my $tmpurl =  $url) =~ s|\+|%2b|g;
$mechurl = "http://bookmark.goo.ne.jp/add/detail/?url=$tmpurl";
$mech->get($mechurl); 
 
# Form にブックマーク項目入力
 
$title   = Encode::encode('utf8', $title);
$comment = Encode::encode('utf8', $comment);
my $tags = join(',', @taglist);
$tags    = Encode::encode('utf8', $tags),
 
# 公開ブックマーク禁止URLをブックマークしようとしたときに非公開を選択して処理 
$publicno = 2 unless ( decode('utf8', $mech->content() ) =~m|r0">公開</label>|);
 
# 新規追加URLに遷移した場合
if ($mech->uri() =~m|^http://bookmark.goo.ne.jp/add/detail|) {
  $mech -> form_name('boomarkEdit');
  $mech -> set_fields (
    title        => $title,
    keywordlist  => $tags,
    point        => $point,
    comment      => $comment,
    publicno     => $publicno,
  );
  $mech -> click('addDetail'); 
}
# 編集URLに遷移した場合
if ($mech->uri() =~m|^http://bookmark.goo.ne.jp/add/edit/|) {
  $mech -> form_name('boomarkEdit');
  $mech -> set_fields (
    #title       => $title, #タイトルは全ユーザ共通
    keywordlist => $tags,
    point       => $point,
    comment     => $comment,
    publicno    => $publicno,
  );
  $mech -> click('editEdit'); 
}
 
exit 0; 
(2007-10-12 18.27追記)
M.C.P.C.: gooブックマークはロボよけでNOINDEXを指定していると非公開ブックマークしかできない を受けて、公開ブックマークが禁止されているURLをブックマークしたときには、非公開でブックマークするように変更しました。
<ins># 公開ブックマーク禁止URLをブックマークしようとしたときに非公開を選択して処理</ins> 
<ins>$publicno = 2 unless ( decode('utf8', $mech->content() ) =~m|r0">公開</label>|);</ins>
(2007-10-12 20.17追記)
http://bookmark.goo.ne.jp/add/detail/?url=
の後ろにURLを付ければブックマーク画面に遷移するのですが、URLに「+」を含む場合、エラー画面に遷移していて、うまく動かなかったので、とりあえず+だけパーセントエンコーディングしておきました。
<ins>(my $tmpurl =  $url) =~ s|\+|%2b|g;</ins>
$mechurl = "http://bookmark.goo.ne.jp/add/detail/?url=$<ins>tmp</ins>url";
スポンサードリンク
トラックバック(1)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2246
gooブックマークは、ブックマークしようとしたページのmeta要素で、robotsによるロボ規制を「NOINDEX」にしていると、 meta name="robots" content="NOINDEX" ブックマーク時に、「非公開」しか選べなくなります。 ▲NOINDEX無しのページをgooブックマークでブックマークしたとき ▲NOINDEX有りのページをgooブックマークでブックマークしたとき 丁寧に作ってあるので、ラジオボタンの表示を「非公開」のみにしてくれます。 なんか処理させるものを作る場... 続きを読む





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


(my $tmpurl = $url) =~ s|\+|%2b|g;
$mechurl = "http://bookmark.goo.ne.jp/add/detail/?url=$tmpurl";
のは正規表現でやらずに
use URI;
#....
my $uri = URI->new('http://bookmark.goo.ne.jp/add/detail/');
$uri->query_form(
url => $url,
);
$mechurl = $uri->as_string;
でいけそげ。
はてなからのインポータにいただいたコード組み込んでみたら問題なく動きました!
でも、
オンラインブックマーク登録禁止! の同人サイトにも優しい配慮のgooブックマーク [ekken.blog1.fc2.com]
これに対処するにはどうしたらいいんでしょうね。ネタだと思って試してみたらほんとだったし。単純な遷移ではカバーできないってことか。(このスクリプトでは対処するところまではやりたくないなあ)