iPhoneアプリの『Stanza』を愛用しています。
ePub形式の電子ブックをオフラインで読めるアプリなんですが、
ページをめくる動作が素敵だったり、読んだ位置を覚えてくれてたり、
ディテールが素晴らしいです。
ただWebページからePub形式を作るのにはちょっと手間がかかっていました。
ポール・グレアムとかジョエル・スポルスキーとかの
Web上のエッセイを読むのに使いたかったので、
なんかもっと手軽にできないかなと思いました。
調べてみるとePubは割と簡単に作れる模様。
(参考サイト:電子書籍ファイルePubについて -ePubを自分で作成する- « lab.naoki.sato.name)
そこでWebページを自動でePubに変換してくれるWebサービスを作ってみました。
InstapaperとかRead it Laterとかもあるのでどれだけ需要あるかわかりませんが、
Stanzaを気に入っている人なら便利だと思います。
ついでにGoogle Code使ってソース公開しました。
主に以下の言語・ライブラリを使って開発しました。
素晴らしいライブラリを無償で提供している方々に感謝です。
だいぶ勉強にもなったので、各ライブラリのレビューとかも書いていきたいですね。
au BufRead COMMIT_EDITMSG set fenc=utf8これでGitのコミットメッセージ編集する時には、UTF8で処理するようになる。
zip_parser.rb
require 'rubygems'
require 'mechanize'
require 'zipruby'
class ZipParser < Mechanize::File
def initialize(uri = nil, response = nil, body = nil, code = nil)
super(uri, response, body, code)
end
def open
streaming = lambda { return @body.slice!(0, 256) }
Zip::Archive.open_buffer(streaming) {|zip_ar| yield(zip_ar)}
end
end
Mechanize::PluggerableParserってのでMIMEタイプに応じたパーサを設定できるそうな。
require 'rubygems'
require 'mechanize'
require 'zip_parser'
agent = Mechanize.new
agent.pluggable_parser["application/zip"] = ZipParser
agent.pluggable_parser["application/octet-stream"] = ZipParser
url = 'http://github.com/zeero/zeero_work/raw/master/zip_parser.zip'
agent.get(url) {|file|
file.open {|zip_ar|
zip_ar.each do |zf|
puts zf.name
end
}
}
Author:Zeero