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

2007-01-16

[] さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし 23:18  さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし - SweetPotato::Plagger  さらに新しいCustomFeed::Configでは$data->{title}か$data->{link}を必ずセットすべし - SweetPotato::Plagger のブックマークコメント

さもなくばこんなエラーが出る。

Plagger::Plugin::CustomFeed::Config [error] doesn't have either 'title' nor 'link'

例えばこんなassetsは,titleもlinkも指定されていないのでアウト。

match: http://www.example.com/
extract_xpath:
  body: //div[@class='entry']

[] CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない 01:25  CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない - SweetPotato::Plagger を含むブックマーク はてなブックマーク -  CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない - SweetPotato::Plagger  CustomFeed::Configをバージョンアップしたらassetsを見直した方がいいかもしれない - SweetPotato::Plagger のブックマークコメント

以前のCustomFeed::Config->aggregateにあったローカル変数が,新しいバージョンではなくなっていたことに気づいた。$urlとか平気でextract_after_hookに入れてたので,念のため全面的にassetsを見直し中。

あとYAMLもmatchがcustom_feed_handleに代わっていたりするから書き直さなきゃならんなー。このブログで公開してる野良assetsは「下位互換性のため」という言葉でしばらく逃げてみる(ひどい)。

誤解を招く書き方だったので追記。

YAMLは以前のCustomFeed::Configの変数名でも問題なく,かどうかは分からないけど,動作する。

けど今後は新CustomFeed::Configでの変数名を使ったほうがいいよねという話。

[] タイトル文字列のタグ除去に関する不具合報告 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