Foltia with AppleScript

Foltia animelockerのトラブルシューティング

Android StudioとEpubor Kindle Converterを使ったE-pub化-3:電子書籍

縦書きにする理由

若い方々は案外横書きの本にも慣れておられるんだと思います。 例えばWeb小説なんかはほとんど横書きですしね。 外国語の本や技術書・理系の教科書なんかも横書きですね。 ただ私ぐらいの年齢になると文学は縦書きだなって脳が思ってるみたいで、横書きだと集中出来ないんです。 まあ気にならない人は今回の章ははスキップして次のVol-4を見てもらいましょう。

縦書きにする方法

kakuyomu.jp

上記のリンクを見て勉強しましたわ。 先ずは○○.opfファイルと◇◇.ccsファイルの内容の変更が必要となります。 まあこちらは後でアップルスクリプトで操作するので置いておきましょう。 詳しくはこのエリファス1810さんのページを読んでみてください。 

雑談となりますが、このE-pubファイルの拡張子をZIPにして解凍後のファイルを見ると、html形式で書かれていることが解ります。 cssも使ってますしね。 本当に良く出来たファイルシステムです。 

上記の2個のファイルに記載を追加した後、このファイルをZIPに再圧縮するわけですが、その際大事な事はファイルを圧縮する順番が大事って事ですね。 普通にフォルダ毎まとめて圧縮してもE-pubリーダーは上手く読み込んでくれなくなります。 

上記のリンクはそのパートの詳しい情報ですね。 やり方としては先ずmimetypeというファイルを先に圧縮し、その圧縮ファイルに他のファイルを追加圧縮すると言う方法をとっています。  ではアップルスクリプトで見てみましょうかね?

アップルスクリプトによるEpub-縦書変換

このスクリプトは元のファイルをユーザホームフォルダ最上位に EpuborKindleと言うフォルダを作成してその中にEpubファイルがある事を前提にしています。 もの凄く完成度を高くしたいのでしたら、ドラッグドロップ型のアプレット型アップルスクリプトを作った方が良いでしょうが、そんなに頻度は多くありませんし、いちいち皆さん自分の環境でアプレットを作製する手間を考えたらこのままアップルスクリプトエディター上で動作させた方が楽だなと思います。 

 

 

--set q to {iEpub:( (path to home folder from user domain) as string) & "EpuborKindle:続・魔法科高校の劣等生 メイジアン・カンパニー(7) (電撃文庫) - 佐島 .epub"}

 

tell application "Finder"

     tell folder ( ( (path to home folder from user domain) as string) & "EpuborKindle:")

          set KindleList to every file

          repeat with aFile in KindleList as list

               main({iEpub:aFile as string}) of me

          end repeat

     end tell

end tell

 

 

on main(q)

     set q to q & {tmp:POSIX path of ( (path to home folder from user domain) as string) & "tmp/", iEpub:"", oFolder:POSIX path of ( (path to home folder from user domain) as string) & "EpuborKindle_v/"}

     try

          do shell script "touch " & q's tmp

     on error

          do shell script "mkdir " & q's tmp

     end try

     try

          do shell script "touch " & q's oFolder

     on error

          do shell script "mkdir " & q's oFolder

     end try

     

     

     set iEpub to (q's iEpub)'s POSIX path

     tell application "Finder" to set iEpubName to name of (q's iEpub as alias)

     

     ##tmpに展開

     do shell script "unzip -o -d " & q's tmp & " " & quoted form of iEpub

     set tategaki to "html {-webkit-writing-mode: vertical-rl; -webkit-text-orientation: mixed; -epub-writing-mode: vertical-rl; -epub-text-orientation: mixed; writing-mode: vertical-rl; text-orientation: mixed;}"

     

     do shell script "echo " & quoted form of tategaki & " >> " & q's tmp & "stylesheet.css"

     

     do shell script "cd ~/tmp/ && zip -m kindle mimetype"

     delay 0.2

     do shell script "cd ~/tmp/ && ls -1|grep -v 'kindle.zip'| zip -r -m -@ kindle.zip"

     

     tell application "Finder"

          set kindle to ( ( (path to home folder from user domain) as string) & "tmp:kindle.zip") as alias

          do shell script "mv -f ~/tmp/kindle.zip ~/EpuborKindle_v/"

          try

               set Old to ( ( (path to home folder from user domain) as string) & "EpuborKindle_v:" & iEpubName) as alias

               delete Old

          end try

          set kindle to ( ( (path to home folder from user domain) as string) & "EpuborKindle_v:kindle.zip") as alias

          set name of kindle to iEpubName

     end tell

end main

 

こんな感じでどうでしょう?

これで実行してみると

こんな感じでepuborKindle_vフォルダ内に縦書きになったEpubデーターが出現します