Hatena::Groupsubtech

NaN days

ブログを移転しています。最新の記事は motemen.hatenablog.com へどうぞ

2011-09-15

AutoPagerize の SITEINFO を利用して Web ページを Kindle で読めるようにする

| 21:06 | AutoPagerize の SITEINFO を利用して Web ページを Kindle で読めるようにする - NaN days を含むブックマーク はてなブックマーク - AutoPagerize の SITEINFO を利用して Web ページを Kindle で読めるようにする - NaN days

以前書いた Kindlenap (https://github.com/motemen/Kindlenap) に、AutoPagerize の効くページなら自動で次のページを読み込んで一つの HTML ファイルにするオプション機能を追加しました。

例えばファミ通文庫の『平家さんって幽霊じゃね?』を読みたいときは、以下のようにします。

kindlenap.pl --autopagerize --title '平家さんって幽霊じゃね? 前編' --author '石川博品' http://www.enterbrain.co.jp/fb/pc/03novels/13th-horror_ishikawa/tan1/01.html

--autopagerize オプションをつけて、--title と --author は自動では分からないので手動で付与しています。スクリプトは一秒おきに次のページへ HTTP リクエストを行い、次のページがなくなるか Ctrl-C が入力されるまでページをめくり続けます。終了すると out/ ディレクトリに HTML ファイルが生成されているので、これを kindlegen に渡して .mobi を作れば完了です。

AutoPagerize の SITEINFO には、ページのコンテンツ本体を指す XPath が pageElement という項目に指定されていることがあるので、使える場合にはこれを利用しています。なければ今までどおり HTML::ExtractContent で本文を抽出します。

コンテンツが画像の場合もあわせてダウンロードしてくれるので、出来上がったものを問題なく読めます。今回はちょっと文字が小さくて読みづらかったですが……。

2011-10-06

miyagawa さんにパッチを取り込んでいただいておりました!ありがとうございます!という訳で cpan から HTML::AutoPagerize-0.02 を入れれば以下は不要になります。

ちなみに SITEINFO には microformats 対応のためあらゆるウェプページにマッチするルールが入っていて、これがよく誤爆するので、HTML::AutoPagerize に以下のパッチを当てる必要があります。

https://gist.github.com/1216969

どうぞご利用ください。