EPUB とシェルスクリプト

シェルスクリプトを書くときは、基本的には Bourne-Shell の人なのでかなり古い人種になるかもしれません。

先月末に飛び込んできた電子書籍絡みの案件も、ある程度定式化できる仕事だったのでご多分に漏れずシェルスクリプトをゴリゴリ書き始めましたw

納品されるデータが結構バラバラだったり、メタ情報が取りにくかったりといろいろありましたが、ある程度整えてもらってなんとか自動化することができ、300 冊ほどの電子書籍化に成功しました。

当初ボリュームを聞いた段階で、力技では限界でどこかのフェーズだけでも自動化しないと納期が間に合わないだろうと思って、スクリプトを書き始めてなんとか捌けました(´・ω・`)=з

画像ファイルのフォーマット、サイズ、解像度などに威力を発揮したのが、ImageMagick というコマンドです。サンプルを貰ったときは PSD だったので、最終的に JPG に変換するために探しました。今回の要はこの画像変換プログラムでした。

シェルスクリプトでちょっとつまづいたのは EPUB のメタ情報として、書籍名や著者などのデータを入れ込むのですが、ここにシェルで言う特殊文字が使われていたためにきちんとデータが所定の場所にハマりませんでした。

例えば「〜&〜」なんてアンパサンドはよくタイトルなどに使われていますが、普通に正規表現で置換しようとするとおかしなことになってしまいます。結局は置換する文字列が変数であることと、メタファイルが XML だったこともあり、以下のようにちょっとわかりづらい方法で対処しました。

sed "s/%EPUB_CREATOR%/`echo $BOOKCREATOR | sed 's/\&/\\\&amp\;/g'`/"

あとは EPUB 用のメタファイルをいくつか構成すれば、mimetype? ファイルを除いて ZIP で固めてリネームすればできあがりでした。

まあマンガの EPUB 化だったので割と簡単にスクリプト化できたんじゃないかと思います。


コメント