|
|
||
#!/usr/local/bin/perl use strict; use warnings; package Sunlight::Yellow::Overdrive; use base qw/Class::ErrorHandler Class::Accessor::Lvalue::Fast/; use XML::Atom::Client; use XML::OPML; __PACKAGE__->mk_accessors(qw/feed/); sub export { my ($class, $username, $password) = @_; my $self = $class->new; my $api = XML::Atom::Client->new; $api->username($username); $api->password($password); my $feed = $api->getFeed('http://b.hatena.ne.jp/dump') or return $class->error($api->errstr); $self->feed = $feed; $self; } sub entries { shift->feed->entries; } sub as_opml { my ($self, $filename) = @_; my $opml = XML::OPML->new(version => '1.1'); $opml->add_outline(type => 'link', htmlUrl => $_->link->href) for $self->entries; $filename ? $opml->save($filename) : $opml->as_string; } 1; package main; @ARGV >= 2 or die "usage: $0 username password"; my $bookmarks = Sunlight::Yellow::Overdrive->export(@ARGV) or die Sunlight::Yellow::Overdrive->errstr; print $bookmarks->as_opml;
を
% perl overdrive.pl hoge piyopiyo > my_bookmarks.opml
と実行して Google Co-op の Advanced メニューからうpする。激しくそれPla。Quick Hack ということで。クラス名は気にせずに。エクスポートを XML::Atom で処理すると楽ちんよという例。
OPMLで up ると URL 末尾に検索対象ワイルドカードの * ついちゃうので、正確にやるなら別フォーマットがよさそ。あと 2,000 件超えてると up れない。
miyagawa2006/10/31 18:33むしろ、台湾人である確率が非常に高いの法則
naoya2006/10/31 18:56srd
yappo2006/10/31 19:04むしろ、台湾人がスーパーPerlハッカーである確率が非常に高いの法則