2010年07月16日 01:15 [Edit]

perl - O'ReillyのiPhoneアプリ本からepubをぶっこぬく

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++


この記事へのトラックバックURL

この記事へのトラックバック
404 Blog Not Found:perl - O’ReillyのiPhoneアプリ本からepubをぶっこぬくを参考に、Ruby版を作ってみるテストのWindows版です。 Windowsにはzip/unzipコマンドがないので、ziprubyライブラリを使ってみました。 require "fileutils" require "zipruby" d
[Ruby][EPUB][Windows]O’ReillyのiPhone AppからEPUBファイルを抽出するRubyスクリプト【Windows版】【いたさんの日記】at 2010年08月18日 11:04
404 Blog Not Found:perl - O’ReillyのiPhoneアプリ本からepubをぶっこぬくを参考に、Ruby版を作ってみるテスト。 #/usr/bin/env ruby def deleteall(delthem) if FileTest.directory?(delthem) then # ディレクトリかどうかを判別 Dir.foreach( delthem ) do |file| # 中
[Ruby][EPUB][Mac]O’ReillyのiPhone AppからEPUBファイルを抽出するRubyスクリプト【いたさんの日記】at 2010年08月13日 18:28
「たった600円でオライリー本をiPadやKindleで読む。すてき。」という記...
たった600円でオライリー本をKindleで読む。自動化。【Inquisitor】at 2010年07月18日 14:27