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

2007-01-16

[] タイトル文字列のタグ除去に関する不具合報告 00:58  タイトル文字列のタグ除去に関する不具合報告 - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  タイトル文字列のタグ除去に関する不具合報告 - SweetPotato::Plagger  タイトル文字列のタグ除去に関する不具合報告 - SweetPotato::Plagger のブックマークコメント

以前のエントリのid:miyagawaさんのコメントについて,

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

Plaggerグループ - SweetPotato::Plagger - HTML::ResolveLink 0.04のHTML実体参照まわりにバグ

随分遅くなりましたが,不具合が再現できたので報告します。他に必要な情報がありましたらお願いします。

不具合の内容

エントリのタイトルにHTMLタグが含まれている場合に,出力結果に本来なら削られるはずのタグが含まれてしまう。

環境

Plaggerのパージョン
>plagger -v
Plagger version 0.7.16
CustomFeed::Config

バージョン0.02を使用。

assets

CustomFeed::ConfigおよびFilter::EntryFullTextについて,自作のとらのあな用のassetsを使用。前者については,最終行のextract_after_hookをコメントアウトしたまま使用。

Publish::Gmailについて,trunkの gmail_notify.tt を使用。

config.yaml

assets_path,mailto,mailfrom,username,passwordはダミーに置き換えましたが,それ以外はそのままです。

global:
  assets_path: /path/to/assets
  timezone: Asia/Tokyo
  log:
    level: info

plugins:
  - module: Subscription::Config
    config:
      feed:
        - url: http://www.toranoana.jp/info/
  - module: CustomFeed::Config
  - module: Publish::Feed
  - module: Publish::Feed
    config:
      format: RSS
      dir: .
      filename: toranoana.rss
  - module: Publish::Gmail
    config:
      mailto: example+plagger@gmail.com
      mailfrom: example@gmail.com
      mailroute:
        via: smtp_tls
        host: smtp.gmail.com:587
        username: hogehoge
        password: ********

結果

CustomFeed::Configにより,タイトルとして抽出される部分のHTMLソース

以下のstrong要素をタイトルとして抽出するのですが,

<strong class="topictitle">
<img src="../topicicon/i_02.gif">
「今日の5の2」シリーズ続編発売!DVD「3学期」編「春休み」編発売記念 トーク&特典お渡し会 開催!
</strong>

このように,子にimg要素を含みます。

Publish::Feed→出力されたRSS

RSSのtitle要素が,

<title>&lt;strong class="topictitle"&gt; &lt;img src="../topicicon/i_02.gif" /&gt; 「今日の5の2」シリーズ続編発売!DVD「3学期」編「春休み」編発売記念 トーク&特典お渡し会 開催! &lt;/strong&gt;
</title>

このように,実体参照交じりのものになります。

Publish::Gmail→Gmailでの閲覧結果

f:id:SweetPotato:20070116001840p:image

タイトルの先頭に壊れた(リンク先が存在しない)画像が表示されます。

CustomFeed::Config用assetsのコメントアウトを取り除いた場合

タイトルからタグが取り除かれ,Gmailで閲覧しても上記の壊れた画像は表示されなくなります。

SeacolorSeacolor2007/01/18 12:46> $data->{title}と$data->{link}が必須
 これは仕様だったのですが外した方が良いでしょうか?
titleやlinkがセットされないケースを想定していなかったのですが……。

SweetPotatoSweetPotato2007/01/18 22:56「情報本体が得られればそれで」的思考でtitleをセットしないってことはあるかもしれません。linkもFilter::ForcePermalink(自作野良プラグイン)とかで適当にセットしたり。
ただ,それが仕様であるのなら無理に変更される必要はないと思います。必要であれば個々人でソース書き換えてカスタマイズできますし。

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

2006-11-29

[] 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