non vorrei lavorare

ブログ名の通りです。javascript three.js mruby rust OCaml golang julialang blender

はてなブックマークAtomAPIで大量登録 #perl

自宅Wikiから抽出したURLをエクスポートできました。

リンク: はてなダイアリー - はてなブックマークAtomAPIとは.



Mac miniでは

CPANのお世話になり、以下のように必要なモジュールをインストールした。

sudo perl -MCPAN -e shell
install DateTime
install Digest::SHA1

blink.jpよりブックマークをはてなに取り込む

以下のスクリプトでurlのみを抽出し、リダイレクトでファイルに落とす。

#!/usr/bin/perl

while(<>) {   if(/HREF=\"(.*)\" ADD_DATE/) { print $1 . "\n";   } }

で、以下のスクリプトはてなに登録

 #!/usr/bin/perl
    use strict;
    use warnings;

    use DateTime;
    use Digest::SHA1 qw (sha1);
    use HTTP::Request;
    use MIME::Base64 qw (encode_base64);
    use LWP::UserAgent;

    my $username = 'ユーザID';
    my $password = 'パスワード';

    while(<>) {
        my $regUrl = $_;

        my $nonce = sha1(sha1(time() . {} . rand() . $$));
        my $now = DateTime->now->iso8601 . 'Z';
        my $digest = encode_base64(sha1($nonce . $now . $password || ''), '');
        my $credentials =
    sprintf(qq(UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"),
    $username, $digest,  encode_base64($nonce, ''), $now);
      
        my $req = HTTP::Request->new(POST => 'http://b.hatena.ne.jp/atom/post');
        $req->header( Accept => 'application/x.atom+xml, application/xml, text/xml, */*');
        $req->header( 'X-WSSE' => $credentials );
      
        $req->content_type('text/html');
      
        my $content = "

"     . "

<p>dummy</p>

"     . "

"     . "

"     . "

";         $req->content($content);         print LWP::UserAgent->new->request($req)->as_string;     }

関連記事