SweetPotato::Plagger このページをアンテナに追加 RSSフィード

2007-02-07

[][][] scraper and upgrader CGIBOY日記帳  scraper and upgrader CGIBOY日記帳 - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  scraper and upgrader CGIBOY日記帳 - SweetPotato::Plagger  scraper and upgrader CGIBOY日記帳 - SweetPotato::Plagger のブックマークコメント

断片部から移動。元の記事は削除し,はてブでフォロー。

CGIBOY日記帳を解析し,日付ごとにエントリ化する。そして本文を取得する。月ごと表示日ごと表示の両方に対応。

assets/plugins/CustomFeed-Config/cgiboy_diary.yaml

元のYAMLをXPath化。iconにはエモティコンをセット。エモティコンは存在しない場合もあるみたいだけど,その場合は何もセットされないっぽい。

# author: SweetPotato
match: http://diary\d*\.cgiboy\.com/[-\w]+/[-\w]+/$
extract_xpath:
  date: //table[not(@width)]//span/font/text()
  icon: //table[not(@width)]//img/@src
  link: //table[not(@width)]//a/@href
  title: //table[not(@width)]//a/font/text()
extract_date_format: %Y,%m,%d
extract_date_timezone: Asia/Tokyo
extract_after_hook: |
  use URI;
  ($data->{link}, $data->{icon}) = map {
    URI->new_abs($_, $args->{feed}->url)->as_string
  } ($data->{link}, $data->{icon});

assets/plugins/Filter-EntryFullText/cgiboy_diary.yaml

# author: SweetPotato
sub handle {
    my($self, $args) = @_;
    $args->{entry}->link =~ qr!^http://diary\d*\.cgiboy\.com/[-\w]+/[-\w]+/index\.cgi\?y=\d{4}&m=\d{1,2}(?:&d=|#)\d{1,2}$!;
}

sub extract {
    my ($self, $args) = @_;
    my $data;

    my $day = ($args->{entry}->link =~ /(?:&d=|#)(\d{1,2})$/)[0];
    if($args->{content} =~ m!<a name="$day">.*?(<TABLE cellSpacing=0 cellPadding=10 width=100% border=0>.*?</TABLE>)!s) {
        $data->{body} = $1;
    }

    return $data;
}

config.cgiboy_diary.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://diary.cgiboy.com/d01/sample/
        - url: http://diary2.cgiboy.com/0/sample/
  - module: CustomFeed::Config
  - module: Filter::EntryFullText
  - module: Filter::ResolveRelativeLink
トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20070207