W00t!

たった600円でオライリー本をiPadやKindleで読む。すてき。 - このブログは証明できない。
ところが、紙の本と比べてそれほど安くないんですね。iPhone版の600円はやはり魅力です。大丈夫。実はこのアプリからiPadで読めるepubを取り出すことができるんです。特殊なハックというわけではなく、オライリーのサイトでもやり方が書かれています。
はてなブックマーク - samurai20000のbookmark
これすごすぎる。ただ、やり方が面倒なので自動化したいとこ。

やりましょう。

できました。

#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;
use File::Path;

sub clean{
    File::Path::rmtree('Payload');
}

my $src = shift;
die "usage:$0 src.ipa [dst.epub]" unless -f $src;
my $dst = shift;
if (!$dst){
    $dst = basename($src);
    $dst =~ s/\w+$/epub/;
}

system qw/unzip -q/, $src, qw/-x iTunes*/;
die $! if $!;
my $app = <Payload/*.app/book>;
clean and die "No book found in the archive" unless $app;
chdir $app;
my $updir = '../../..';
system qw/zip -q0X/, "$updir/$dst", 'mimetype';
system qw/zip -qXr9D/, "$updir/$dst", qw/ META-INF OEBPS/;
chdir $updir;
clean;
system qw{open -a /Applications/iTunes.app}, $dst;

これにipa2epubとでも名前をつけて保存して、chmod +x ipa2epubとしけば、あとは

ipa2epub path/to/thebook.ipa

とすればカレントディレクトリにepubファイルを作成した上で、iTuneに登録までしてくれます。

うーん、いいながめ。

Enjoy!

Dan the EPUB-reading Perl Monger

追記2011.11.16

O'ReillyのiPhoneアプリ版書籍からePubを生成する @dankogai 氏のスクリプト(http://t.co/wcpvGU7Q )、そのままだと iBooks で英英辞書になるので、英和辞書を有効にするためのパッチ書いた。 http://t.co/Tw1dWgBDTue Nov 15 16:20:01 via Twitter for Mac

@nkym37++