EFT::Mailmanの修正
参加しているMLもPlaggerで管理できたらいいんじゃないかと思い、CF::Mailmanを使用してみました。Filter::ReverseとFilter::BreakEntriesToFeedsを使用すれば、普通にメール配信されたものとほぼ同等です。はてブやDeliciousにブックマークすることも簡単なので結構便利なのではないかと思います。
動作には問題ありませんでしたが、EFTで日付を拾ってないっぽい。EFTと対象URLで確認したところ、日本語サイトでは日付もローカライズされていました。
IRCで対応方法を相談してみてなんとか解決しましたので、とりあえずメモしておきます。
問題点としては
と言う点になります。
とりあえず 1.についてはIRCにてmiyagawaさんからEFT::nikkansports.yamlにフォーマット違いの対応方法があることを聞き、チャレンジして見ました。
結果としては2.の曜日指定が漢字で出来無そうだったので、extract_date_formatでの対応はあきらめて、extract_after_hookで無理やり対応して見ました。extract_after_hookの正規表現には日本語を混ぜることが出来無そうだったので、かなり怪しい正規表現になってます。
後は、Filter::Reverseではなく、Filter::DateSortが欲しいかも。
assets/plugins/Filter-EntryFullText/mailman.yamlへのパッチ
# upgrade mailman feeds
author: youpy
handle: .+/pipermail/.+?/\d{4}-\w+/\d+\.html
-extract: <!--beginarticle-->(.*?)<!--endarticle-->
-extract_capture: body
+extract: <I>(.*?)</I>.*<!--beginarticle-->(.*?)<!--endarticle-->
+extract_capture: date body
+extract_after_hook: |
+ # For Japanese
+ if ($data->{date} =~ m!(\d{4})\w+\s+(\d{1,2})\w+\s+(\d{1,2})\w+\s\(\w\)\s(\d{2}:\d{2}:\d{2})!) {
+ $data->{date} = "$1/$2/$3 $4 JST";
+ }
config.yamlには以下の様に指定
plugins:
- module: CustomFeed::Mailman
- module: Subscription::Config
config:
feed:
- http://arch.bluegate.org/pipermail/subversion-jp/
- module: Filter::EntryFullText
- module: Filter::Rule
rule:
module: Deduped
- module: Filter::Reverse
- module: Filter::BreakEntriesToFeeds
- module: Publish::Gmail