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

2006-11-29

[][] upgrader for EFT はてなセリフ 02:26  upgrader for EFT はてなセリフ - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  upgrader for EFT はてなセリフ - SweetPotato::Plagger  upgrader for EFT はてなセリフ - SweetPotato::Plagger のブックマークコメント

コメント欄にてid:miyagawaさんに指摘を受けましたが,はてなセリフのEFTは既にtrunkにアップされてました。

結果的にこのエントリは車輪の再生産になりましたが,残しておきます。

XPathについては,trunkのFilter::EntryFullTextでは修正されているようです。後日導入予定。

titleタグについては後日再現性を確認の上報告予定。

はてなセリフのセリフ画像と投稿者を取得する。

assets/plugins/Filter-EntryFullText/hatena_serif.yaml

# author: SweetPotato
handle: http://serif\.hatelabo\.jp/[0-9a-f]{40}/[0-9a-f]{40}$
extract_xpath:
  # title: //h1/text()
  title: //h1
  body1: //div[@class='serif_data']
  body2: //div[@class='serif-tag-syntax']
extract_after_hook: |
  $data->{title} =~ s/<.*?>//g;
  $data->{body} = $data->{body1}.$data->{body2}

タイトルを抽出するXPathは,本当はコメントアウトされている方のものがいいんだけど,それを使うと自分の環境では以下のようなエラーが出た。

Can't locate object method "as_XML" via package "HTML::TreeBuilder::XPath::TextNode" at C:/usr/local/perl/site/lib/Plagger/Plugin/Filter/EntryFullText.pm line 273.

HTML::TreeBuilder::XPath::TextNodeなるモジュールが必要なようだけど,CPANにはそんなモジュールがないようだ。しょうがないのでextract_after_hookにてタグを正規表現で削る。

config.hatena_serif.yaml

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://serif.hatelabo.jp/seriflist/
          meta:
            follow_link: /[0-9a-f]{40}/[0-9a-f]{40}
        - url: http://serif.hatelabo.jp/username/serif
          meta:
            follow_link: /[0-9a-f]{40}/[0-9a-f]{40}
        - url: http://serif.hatelabo.jp/0123456789abcdef0123456789abcdef01234567/serif
          meta:
            follow_link: /[0-9a-f]{40}/[0-9a-f]{40}
  - module: CustomFeed::Simple
  - module: Filter::EntryFullText
#  - module: Filter::ResolveRelativeLink
#  - module: Filter::FindEnclosures
#  - module: Filter::FetchEnclosure
#    config:
#      dir: /path/to/dir
#      fake_referer: 1

スクリーンショット(Publish::Gmail)

f:id:SweetPotato:20061129022451p:image

[] HTML::ResolveLink 0.04のHTML実体参照まわりにバグ 01:59  HTML::ResolveLink 0.04のHTML実体参照まわりにバグ - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  HTML::ResolveLink 0.04のHTML実体参照まわりにバグ - SweetPotato::Plagger  HTML::ResolveLink 0.04のHTML実体参照まわりにバグ - SweetPotato::Plagger のブックマークコメント

HTML::ResolveLink 0.05で修正されたようです。

HTML::ResolveLink 0.04の68行目~73行目。ダブルクオーテーション「"」の本来の実体参照は「&quot;」だが,ソースでは「&qout;」となっている。

my %escape = (
    '<' => '&lt;',
    '>' => '&gt;',
    '"' => '&qout;',
    '&' => '&amp;',
);

この変数を使用するメソッドの呼び出し元をたどっていくと,最終的にはnewメソッドにたどり着く。

Plaggerのモジュールで,HTML::ResolveLinkを使用しているものは以下の通り。

こういうバグを発見した時はどこに報告すればいいんでしょう?とりあえずモジュール作者のid:miyagawaさんにIDトラバ送ります。

miyagawamiyagawa2006/11/29 05:00XPath のエラーはtrunkでなおっています。
というか、はてなセリフのEFTも入っています :)

miyagawamiyagawa2006/11/29 05:04ちなみにHTML削らなくても title は Plagger::Text という仕組みを使っているのでいい具合にあとで勝手にけずられるはず(そうでなければバグなので再現するケースを教えてください)

ちなみに最新ではタイトルはページの <TITLE> から自動取得するようになっています(設定されていなければ)のでそのほうが楽かも。

HTML::ResoleLink は直しました。

SweetPotatoSweetPotato2006/11/29 18:43>はてなセリフのEFT
http://plagger.org/trac/browser/trunk/plagger/assets/plugins/Filter-EntryFullText/hatena_serif.yaml
ぐはぁ。仕事早すぎです。車輪の再生産になってしまいましたね……。

>XPath
情報ありがとうございます。trunkの方を導入してみます。

>タイトル
時間が出来次第,再現性を確認してレポートしたいと思います。

>HTML::ResolveLink
素早い対応ありがとうございます。

トラックバック - http://plagger.g.hatena.ne.jp/SweetPotato/20061129