6
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Organization

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

はじめに

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

さいごに

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
6
Help us understand the problem. What are the problem?