電書ちょこっとツールズ

EPUB圧縮するOSXサービスを設定する

EPUBはZIP圧縮されたファイルなのですが、mimetypeを非圧縮で頭に置くルールがあり、ファインダーについている普通のZIP圧縮で作成はできません。

実際にはzipコマンド2行でできるので、バッチファイルを作ってコマンドラインで実行すればいいのですが、ここではAutomatorを使ってOSXの"サービス"機能として登録することで、より簡単に使えるようにしてみます。

また.で始まる不要なファイルもパックされないようにしています。

設定方法

まずは、アプリケーションの下にあるAutomator.appを起動します。

新規作成のパネルで、サービスを選択します。

am1

左のリストから、[ユーティリティ]->[シェルスクリプトを実行]を選択して、右のペインにD&Dします。

am2

選択項目を[フォルダ]に、検索対象を[Finder.app]に、入力の引渡し方法を[引数として]にして、テキストエリアに以下のスクリプトをコピペします。

am3

d=$1
n="${d##*/}"
cd $d
rm ../$n.kepub.epub
zip -0 -X "../$n.kepub.epub" mimetype
zip -r "../$n.kepub.epub" * -x mimetype -x .* -x */.* -x */*/.*

これで適当な名前をつけて保存すれば完了です。

これだけだとなにも言わずに終了してしまうので、zipコマンドの出力を表示するようにしてみます。これには、「テキストエディット書類の内容を設定」というアクションを、シェルスクリプトを実行のあとに加えます。そうすると、シェルスクリプトを実行後に、テキストエディットツールで結果が表示されるというわけです。

am5

使い方

使い方は簡単で、ファインダーでEPUBの内容の入ったフォルダを選択しておいて、コンテキストメニューを開きます。すると一番下に、先ほど保存した名前でサービスが出てくるのでそれを選択するだけです。

am4

結果表示が設定してあれば、テキストエディタがひらいて、zipの実行結果が表示されます。

am6

仕様としては、EPUBの要素が入ったフォルダを指定して実行すると、フォルダ名に".kepub.epub"を付けたEPUBファイルを作成するようになっています。"."で始まる余計なファイルを含めないようにしています。".kepub"がついてるのはkoboにすぐに転送できるようにするためで、気に食わない人はスクリプトを修正してくださいw

以上、このようにシェルスクリプトのようなコマンドラインツールでも、サービスに登録すると簡単に使えるようになるよ、というお話でした。