はてなブックマークを初期化

AtomAPIの勉強がてら、MyWeb2.0を利用してからお休みしているはてなブックマークの初期化をしてみた。

はてなダイアリーには初期化機能があるのに、ブックマークには見当たらない。
で、探すのもめんどいし、折角だからAtomAPIってのを使ってみようと。

これまで、RESTでしかAPIは触ってこなかった。
SOAPだとかAtomAPIだとかXML形式のリクエストを投げる(?)ものは敬遠してた。
基本的に検索APIしか触ってないからなんだけど、クライアントアプリ考えるともう1歩踏み込みたい。
で、追加/編集/削除/リストを扱えるAtomAPIを触ろうと。

今回は、PerlのXML::Atom::Clientを利用。
4章 The Atom Pulishing Protocol(AtomAPI)の利用法を参考。
XML::Atom::ClientのCPANインストールにやたら時間がかかった。
なんでか、家のmacはCPANが遅い。
検索(フェッチ?)でやけにたらい回しされる。
ダウンロードツールを指定したらなおるのかな?
コーディングの何倍もかかってげんなり。

コード自体は、参考ページにフィード解析(eid取得)とループ処理(1フィード20件)を加えただけ。
とりあえず、はてなブックマークが真っ白になったのでOK。
やっつけ万歳。
さて、はてなの使い道を考えないと。

以下コード
#!/usr/bin/perl -w

use strict;
use XML::Atom::Client;

my $ROOT_URL = "http://b.hatena.ne.jp/atom";
my $POST_URI = $ROOT_URL . "/post/";
my $EDIT_URI = $ROOT_URL . "/edit/";
my $FEED_URI = $ROOT_URL . "/feed";
my $USER     = "ユーザ名";
my $PASS     = "パスワード";

# Initialize
my $api = XML::Atom::Client->new;
$api->username($USER);
$api->password($PASS);


my $recentFeed = $api->getFeed($FEED_URI);
my @eidList    = getEIDList($recentFeed->as_xml);
while (scalar @eidList > 0) {
  foreach my $eid (@eidList) {
    print "[DELETE] eid:$eid/" . $api->deleteEntry($EDIT_URI . $eid) . ".\n";
  }
  $recentFeed = $api->getFeed($FEED_URI);
  @eidList    = getEIDList($recentFeed->as_xml);
}

##

sub getEIDList {
  my $feed = shift;
  
  my @lines   = split("\n", $feed);
  my @eidList = ();
  foreach my $line (@lines) {
    if ($line =~ /rel\=\"service.edit\"/) {
      $line =~ /href\=\".+\/edit\/([0-9]+)\"/;
      push(@eidList, $1);
    } else {
    }
  }
  
  return @eidList;
}
プロフィール

このブログ記事について

このページは、koshigoeが2005年10月13日 23:23に書いたブログ記事です。

ひとつ前のブログ記事は「Bloglinesのショートカットキー」です。

次のブログ記事は「MT投稿からSBS投稿を自動化・・・ひとまず検討」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。