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

2007-12-24

[][][] assets for EFT and TruePermalink Yahoo!掲示板  assets for EFT and TruePermalink Yahoo!掲示板 - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  assets for EFT and TruePermalink Yahoo!掲示板 - SweetPotato::Plagger  assets for EFT and TruePermalink Yahoo!掲示板 - SweetPotato::Plagger のブックマークコメント

Yahoo!掲示板Plaggerでenjoy!

assets/plugins/Filter-EntryFullText/yahoo_bbs.yaml

# author: SweetPotato
handle_force: http://messages\.yahoo\.co\.jp/bbs
extract: <td class=s130>(.*?)</td>
extract_capture: body

assets/plugins/Filter-TruePermalink/yahoo_bbs.yaml

# author: SweetPotato
match: http://rd\.yahoo\.co\.jp/rss/l/mb/mb/\*
rewrite: s!^http://rd\.yahoo\.co\.jp/rss/l/mb/mb/\*!!

config.yaml

ResolveRelativeLinkは無くてもいいかも。

plugins:
  - module: Subscription::Config
    config:
      feed:
         - url: http://messages.yahoo.co.jp/bbs?action=4&board=1834558&sid=1834558&tid=a34a53a5dela12ha4ollgra4a4a1aa

  - module: Aggregator::Simple

  - module: Filter::TruePermalink
  - module: Filter::EntryFullText
  - module: Filter::ResolveRelativeLink
トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20071224

2007-12-13

[][] Web::Scraper for CustomFeed::Script はてなハイク  Web::Scraper for CustomFeed::Script はてなハイク - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  Web::Scraper for CustomFeed::Script はてなハイク - SweetPotato::Plagger  Web::Scraper for CustomFeed::Script はてなハイク - SweetPotato::Plagger のブックマークコメント

はてなハイクメイン(真ん中のエントリーが並ぶ部分)のHTML構造を変更しました。これまでの、ULタグでの構造から、DIVを使った構造に変更になっています。

ページ上部のメニュー変更について - はてなハイク日記

これに合わせて修正した。

さきほどはてなハイクでRSSフィードの出力を開始しました。

  • キーワード、asin,httpページ
  • ユーザーページ

それぞれで、RSSフィードの配信をしています。RSSファイルのURLは、ヘッダ内のlinkをご覧ください。

RSSフィードの配信開始について - はてなハイク日記

とのこと。ニーズに応じてRSSとPlaggerを使いこなすべし。

  • プロフィールアイコンをセットするようにした。
  • configを修正した。

おまけでPipes版も作った。

新サービス・はてなハイクをスクレイプ。

新着ページキーワードページユーザページFollowingProfileのどれでもうまくいくはず。

まだβだからHTMLの構造が変わってスクレイパが使えなくなるかもしれんので注意。

assets/plugins/CustomFeed-Script/hatena-haiku.pl

#!/usr/local/bin/perl
# author: SweetPotato
use strict;
use warnings;

use DateTime::Format::MySQL;
use DateTime::Format::W3CDTF;
use URI;
use Web::Scraper 0.22;
use YAML;

my $url = shift or die;

my $s = scraper {
    process '//title', title => 'text';
    process '//*[@class="entry" and not(.//div[@class="input"])]',
      'entry[]' => scraper {
        process 'img.profile-image',
          icon => ['@src', sub { +{ url => $_->as_string } } ];
        process '.title', title => 'text';
        process '.body', body => 'html';
        process '.username a', author => 'text';
        process '.timestamp a', link => ['@href', sub { $_->as_string } ];
        process '.timestamp', date => ['text', \&mk_date];
        result qw( icon title body author link date );
    };
    result qw( title entry );
};
$s->user_agent->env_proxy;

my $res = $s->scrape(URI->new($url));

binmode STDOUT, ':utf8';
print YAML::Dump +{
    title => $res->{title},
    link  => $url,
    entry => $res->{entry},
};

sub mk_date {
    my $dt = DateTime::Format::MySQL->parse_datetime(shift);
       $dt->set_time_zone('Asia/Tokyo');
    DateTime::Format::W3CDTF->format_datetime($dt);
}

config.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
         - url: 'script:/path/to/hatena-haiku.pl http://h.hatena.ne.jp/'

  - module: CustomFeed::Script

  - module: Filter::ResolveRelativeLink
トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20071213

2007-12-09

[][] upgrader for EFT 無表情 改訂版  upgrader for EFT 無表情 改訂版 - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  upgrader for EFT 無表情 改訂版 - SweetPotato::Plagger  upgrader for EFT 無表情 改訂版 - SweetPotato::Plagger のブックマークコメント

漫画(マンガ)情報サイト《無表情》以前のサイトから移転して,サイト構造も微妙に変わってるっぽかったので以前のWeb::Scraperを書き直そうと思ったんだけど,面倒になったのでEFTだけ新しくしてCustomFeed::Simpleでシンプルにハックすることにした。

assets/plugins/Filter-EntryFullText/muhyojo.pl

# author: SweetPotato

sub custom_feed_handle {
    my ($self, $args) = @_;
    $args->{feed}->url =~ qr!^http://(?:www\.)?muhyojo\.com/(?:index\.html?)?$!;
}

sub custom_feed_follow_link {
    qr!/publisher/.*?#\d+$!
}

sub handle {
    my ($self, $args) = @_;
    $args->{entry}->link =~ qr!^http://(?:www\.)?muhyojo\.com/publisher/[-\w]+/[-\w]+/(?:index\.html?)?#\d+$!;
}

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

    my ($name) = ($args->{entry}->link =~ /#(\d+)$/) or return;
    my ($data) = ($args->{content} =~ m!(<legend[^>]*><a name="?$name"?>.*?)</fieldset>!s) or return;
    $data;
}

config.muhyojo.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www.muhyojo.com/

  - module: Filter::EntryFullText
  - module: Filter::ResolveRelativeLink

  - module: Filter::Rule
    rule:
      module: Expression
      expression: length($args->{entry}->title->plaintext) > 1
トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20071209