2006-10-17
■ [Filter][EntryFullText]Baltimore Sun 
ボルティモア サン紙のEFTハンドラ。(handlerの呼称でコンセンサスがとれてるらしい)(追記:upgraderかもしれないソウデス)
英語ですすんません。
日本人には全く需要ない気がしますが。Baltimoreに住んでるもんで・・・
でも州外に出た人の話を聞くとSunの記事が恋しくなるというくらい質が高いとかなんとか。(お世辞くさいが)
ワシントンポストよりSunの方が好きだ、っていう人も結構居たなあ。なんでかは知らんが。
baltoSun.yaml
author: Tennetiss handle: http://(\w+)\.baltimoresun\.com extract_xpath: body: //div[@class="text"]
config.baltoSun.yaml(の一部)
- module: Subscription::Config
config:
feed:
- http://feeds.baltimoresun.com/baltimoresun/news/rss2.0.xml
- module: Filter::EntryFullText
config:
force_upgrade: 1
- module: Filter::ResolveRelativeLink
■ [Filter][EntryFullText]USフロントライン 
U.S. FrontlineのEFTなんたら。
結構手強かった・・・
下にもあるとおり、
/html/body//td[2]/table//td[2]/table[2]//td
と処理してるんだけど、これは展開した形だと
/html/body/table/tbody/tr[2]/td/center/table[3]/tbody/tr/td[2]/table/tbody/tr/td[2]/table[2]/tbody/tr/td
なのだけど、これだとエラーが出る。明確な理由まではわからなかった。自分の中では「とにかく長いのはダメ」ということにしておいた・・・。短すぎてもダメだった。
after_hookでやってるのは、tdだけ浮いてしまうのでそれの削除と、一部の記事には最後に他の記事の目次がなぜか入ってるので、それをカット。
最後にfontタグを閉め。(cococみたいにエントリを全部繋げて見せるリーダの場合、font閉め忘れてるエントリが一つあると悲惨な事になる)
あともう一つ、configの方。
user_agentを詐称しないとダメだった。html自体とってこれない(usfl側ではじいてる)。
なので、何か適当にブラウザで読みに行ってることにすると吉。(下例ではIE6)
usfl.yaml
author: Tennetiss
handle: http://www\.usfl\.com
extract_xpath:
body: /html/body//td[2]/table//td[2]/table[2]//td
extract_after_hook: |
$data->{body} =~ s!<td.*?>!!sg;
$data->{body} =~ s!</td>!!sg;
if( $data->{body} =~ m!(.*?)_/.*?!s ){
$data->{body} = $1 . '</font>';
}
config.usfl.yaml(の一部) part1
global:
user_agent:
agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)
part2
- module: Subscription::Config
config:
feed:
- http://www.usfl.com/rss/usfl.rdf
- module: Filter::EntryFullText
otsune2006/10/26 10:35handle:をhandle_force:に変えた物をcommitしていいですか?
akaiho2006/10/26 18:46はい、どれでもcommitしていただいて構いませんよ!
akaiho2006/10/26 18:50改変もご自由にどうぞ。原型留めないほどの魔改造とか。authorも変えたりとか。