LoginSignup
12
7

More than 3 years have passed since last update.

Raspberry PI でnarou.rbのkindle(mobi)形式を作れるようにする

Last updated at Posted at 2019-05-25

はじめに

 個人的な趣味で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の中身
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

さいごに

同じ問題で困っている人は少ないと思いますが、覚書として残しておきます。誰かの役に立てば幸いです。

12
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7