2006-11-29
■ [assets][EFT] upgrader for EFT はてなセリフ

コメント欄にて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)
■ [bug] HTML::ResolveLink 0.04のHTML実体参照まわりにバグ

HTML::ResolveLink 0.05で修正されたようです。
HTML::ResolveLink 0.04の68行目~73行目。ダブルクオーテーション「"」の本来の実体参照は「"」だが,ソースでは「&qout;」となっている。
my %escape = ( '<' => '<', '>' => '>', '"' => '&qout;', '&' => '&', );
この変数を使用するメソッドの呼び出し元をたどっていくと,最終的にはnewメソッドにたどり着く。
Plaggerのモジュールで,HTML::ResolveLinkを使用しているものは以下の通り。
こういうバグを発見した時はどこに報告すればいいんでしょう?とりあえずモジュール作者のid:miyagawaさんにIDトラバ送ります。

というか、はてなセリフのEFTも入っています :)
ちなみに最新ではタイトルはページの <TITLE> から自動取得するようになっています(設定されていなければ)のでそのほうが楽かも。
HTML::ResoleLink は直しました。
http://plagger.org/trac/browser/trunk/plagger/assets/plugins/Filter-EntryFullText/hatena_serif.yaml
ぐはぁ。仕事早すぎです。車輪の再生産になってしまいましたね……。
>XPath
情報ありがとうございます。trunkの方を導入してみます。
>タイトル
時間が出来次第,再現性を確認してレポートしたいと思います。
>HTML::ResolveLink
素早い対応ありがとうございます。