ニフティクリップβにクリップするPerlスクリプト(2):複数Tag対応
スポンサードリンク
前回のは、Tag が1つしか入らない(なぜなら、ニフティクリップβのクリップ登録画面の Tag 欄は、デフォルトで1個しかなくて、JavaScript で DOM 書き換えやら何やらで Tag 欄を増やしているからです)ので、なんだかがっくしでしたが、WWW::Mechanize では、取得した HTML を書き換えることによって、(フォーム改変して)を入力欄を増やすことが出来るので、それを使ってみて、複数 Tag に対応できるようにしてみました。
WWW::Mechanize - Perlオブジェクト中のハンディWebブラウザ [perldoc.jp] の、$mech->update_html( $html )メソッド を参考にしました。
あと、use utf8; にて積極的な UTF-8 ハンドリングと、Tag 芸が出来るように、Tag の入力順番を工夫しました(正順にいれると、実際には逆の順番で登録される仕様があるみたい)。
UTF-8 で保存してください! $username と $password は適宜設定してください!
#!/usr/bin/perl use strict; use warnings; use WWW::Mechanize; use utf8; use Encode; # ID/Password my $username = 'ABC01234', my $password = 'xxxxxxxx', # Clip Entry my $title = 'ニフティクリップβにクリップするPerlスクリプト(2):複数Tag対応'; my $url = 'http://blog.dtpwiki.jp/dtp/2006/06/perl2tag_8383.html'; my $comment = 'ニフティクリップβへPerlスクリプトでブックマークします。複数Tag対応。要WWW::Mechanize'; my @taglist = ('Perl', 'niftyclipbeta', 'ニフティクリップβ'); my $public_flag = 1; # 0->Private 1->Public # WWW:Mechanize スタート # my $mech = WWW::Mechanize->new(); my $mechurl = 'http://clip.nifty.com/create'; $mech->get($mechurl); # $mechurl から https://clip.nifty.com/login に遷移 # ログインフォーム入力 $mech -> submit_form ( form_name=>'login-form', fields => { username => $username, password => $password, }, ); # ログイン後 https://clip.nifty.com/loginから $mechurl に遷移 # input:tagname を増やす my $rep = ''; my $taginputhtml = ' <input class="tagname" name="tagname" type="text" />'; my $tag_n = scalar(@taglist); for (my $i = 0; $i < $tag_n; $i++) { $rep .= $taginputhtml; } my $html = $mech->content; $html =~ s|<div class="tag-form">.+?</div>|$rep|isg; $mech -> update_html( $html ); # Form にクリップ項目入力 $mech -> form_name('savingForm'); $title = Encode::encode('utf8',$title); $comment = Encode::encode('utf8',$comment); $mech -> set_fields ( title => $title, url => $url, comment => $comment, ); for (my $i = 0; $i < $tag_n; $i++) { $mech -> set_fields( tagname => [ Encode::encode('utf8',pop(@taglist)), $i+1 ] ) ; } $mech -> untick('public_flag','on') unless $public_flag; $mech -> submit();
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1716
コメントする