はじめに
個人的な趣味でWeb小説を読むことがあり、管理ツールとしてnarou.rbを利用している。
このツールはrubyで作られているので、基本的にクロスプラットフォームでうごく。
このあたりは、本家の説明を読んでもらえばよいのだが、このツールepubやmobiなどの電子ブック形式に外部ツールを利用して変換するのことができるのだが、そのうちの1つ、KindleGenがx86にしか対応していないためARMなRaspberry PIで動作しない。
そのため、代替手法を考える必要があった・・・という話。
方針
Narou.rbはrubyスクリプトなので、変換部分を書き換えることも考えたが、元を書き換えるとバージョンアップの時が面倒なので、Epub->Mobi変換のラッパーを用意する方向で行く。
用意するもの
-
Raspbian Desktopの入ったRaspberryPi
-
蛇足ながら、使ってるOSイメージは以下のものを使っている
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2019-04-09/
解析
AozoraEpub3の展開先にいれてあるkindlegenにはどんなパラメータが渡っているのか
kindlegen -local ja [ファイル名.epub]
となっていた。
Raspbianで動くepub から mobiに変換できるツールはあるか
以下の2つが該当する模様
- epub-utils
CUIのツール、epubを変換したりできる
- calibre
GUIのツールだがDisplayが有効ならばCUIで使える
※ライブラリが互いに依存するようなので両方入れることにした。
ラッパーを作ろう
- とりあえずインストール
sudo apt install -y epub-utils libebook-tools-perl libepub-dev \
libepub0 calibre poppler-data fonts-takao-gothic fonts-takao-mincho
- ラッパー作成
narou.rb側には手を入れないので、kindlegenという名前のシェルスクリプトをかく、そのため、kindlegenの取得は不要となる
cd [AozoraEpubのディレクトリ]
sudo vim kindlegen
- kindlegenの中身
#!/bin/sh
# Raspbian Kindlegen compatible Script
INPUTFILE="$3"
OUTPUTFILE=`echo "$3"|sed 's/\.epub/\.mobi/g'`
/usr/bin/ebook-convert "${INPUTFILE}" "${OUTPUTFILE}"
- 実行属性を付与
sudo chmod 777 kindlegen
動作テスト
適当な小説をmobi形式にしてみる
narou convert 0
ID:0 私、能力は平均値でって言ったよね! の変換を開始
縦書用の変換が終了しました
AozoraEpub3でEPUBに変換しています............変換しました
kindlegen実行中.........................................................................
.......................................................................................
.......................................................................................
.......................................................................................
.......................................................................................
.......................................................................................
.............................................................変換しました
kindlestrip実行中
[ERROR] File doesn't contain the sources section.
[FUNA] 私、能力は平均値でって言ったよね!.mobi を出力しました
MOBIファイルを出力しました
本家のkindlegenより時間がかかる、calibreで作ったmobiには[sources section]がないのでエラーを吐くけれどファイル自体は問題なく生成されてKindleで読める
Error の件は、Narou.rbのオプションで以下を設定すると出なくなると教えていただいた
$ narou s convert.no-strip=true
さいごに
同じ問題で困っている人は少ないと思いますが、覚書として残しておきます。誰かの役に立てば幸いです。