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

2007-01-14

[][] upgrader for EFT ヤマカム 02:41  upgrader for EFT ヤマカム - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  upgrader for EFT ヤマカム - SweetPotato::Plagger  upgrader for EFT ヤマカム - SweetPotato::Plagger のブックマークコメント

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

ヤマカムを解析し,記事ごとにエントリ化する本文を抽出する

断片部時代のコードを改良した。大分すっきりしたコードになったと思う。

断片部時代にはCustomFeed::Config用のassetsもあったけど,CustomFeed::Simpleで代用できることが分かったので掲載しない。

assets/plugins/Filter-EntryFullText/yamakam.pl

日付も抽出するようにした。

# author: SweetPotato
sub handle {
    my ($self, $args) = @_;
    $args->{entry}->link =~ qr!^http://www1\.odn\.ne\.jp/cjt24200/yamada/log/\d+/index\.html#\d+$!;
}

sub extract {
    my ($self, $args) = @_;
    my $hash = ($args->{entry}->link =~ /#(\d+)/)[0];

    return unless $args->{content} =~ m!(<TABLE width="450" cellpadding="10" cellspacing="5">\s+<TBODY>\s+<TR>\s+<TD[^>]*><A name="$hash">.*?<B>(.*?)</B>.*?\n</TABLE>)!s;

    my ($body, $date) = ($1, $2);
    $date = Plagger::Date->strptime('%Y年%m月%d日', $date);
    $date->set_time_zone('Asia/Tokyo');

    return +{ body => $body, date => $date };
}

config.yamakam.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www1.odn.ne.jp/cjt24200/yamada/
          meta:
            follow_link: /log/\d+/index.html#\d+
  - module: CustomFeed::Simple
  - module: Filter::EntryFullText
  - module: Filter::ResolveRelativeLink