naoyaの日記 RSSフィード

 | 

2006-10-31

はてなブックマークで溜めたサイトGoogle Co-op で検索するッ! 18:53

おまえは今までブクマったエントリの件数をおぼえているのか?

#!/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 れない。

miyagawamiyagawa2006/10/31 18:33むしろ、台湾人である確率が非常に高いの法則

naoyanaoya2006/10/31 18:56srd

yappoyappo2006/10/31 19:04むしろ、台湾人がスーパーPerlハッカーである確率が非常に高いの法則

トラックバック - http://naoya.g.hatena.ne.jp/naoya/20061031
 | 
この日記のはてなブックマーク数