Web 小説を Epub に変換する

 小説家になろう などのサイトにある物語を縦書きで読みたくなったので、調べてみたところ、Narou.rb というものがありました。

 Ruby で動くようですが、Epub への変換に AozoraEpub3 を使うようです。AozoraEpub3 は Java で作られているので、ひょっとしたら、Raspberry Pi でも動くかもしれません。

 まず、AozoraEpub3 をダウンロードして動かしてみます。

AozoraEpub3 (失敗)

 作業用のディレクトリを作成して、ダウンロードした zip ファイルを回答します。

$ mkdir AozoraEpub3
$ cd AozoraEpub3
$ unzip ~/Downloads/AozoraEpub3-1.1.0b46.zip
Archive:  AozoraEpub3-1.1.0b46.zip
  inflating: AozoraEpub3.ico         
  inflating: AozoraEpub3.jar
・
・

 動かしてみます。

$ java -jar AozoraEpub3.jar

 起動したら、青空文庫型式のテキストファイルをドラッグ&ドロップして変換できるかどうか確認しました。

 ちょっと不安でしたが、OpenJDK でも動いてくれました。

$ java --version
openjdk 11.0.14 2022-01-18
OpenJDK Runtime Environment (build 11.0.14+9-post-Raspbian-1deb11u1)
OpenJDK Server VM (build 11.0.14+9-post-Raspbian-1deb11u1, mixed mode)

Naro.rb

 github 上の Narou.rb 説明書 の手順にしたがって動かしてみました。

$ sudo apt install ryby-dev
・
・
$ sudo gem install narou
・
・

 インストールにはかなり時間がかかりました。

 narou help
Narou.rb ― 小説家になろうダウンローダ&縦書き用整形スクリプト

 Usage: narou init

   まだこのフォルダは初期化されていません。
   narou init コマンドを実行して初期化を行いましょう。

 動くようです。

設定

 ディレクトリを作成し、そこに移動します。以降、このディレクトリで作業します。こでは、AozoraEpub3 のパスを入力します。

$ mkdir ~/Documents/Narou
$ cd ~/Documents/Narou
$ narou init
.narou/ を作成しました
小説データ/ を作成しました
------------------------------
AozoraEpub3の設定を行います
                            !!!WARNING!!!                             
AozoraEpub3の構成ファイルを書き換えます。narouコマンド用に別途新規インストールしておくことをオススメします

AozoraEpub3のあるフォルダを入力して下さい:
(未入力でスキップ)
>/home/pi/work/Epub/AozoraEpub3

行間の調整を行います。小説の行の高さを設定して下さい(単位 em):
1em = 1文字分の高さ
行の高さ=1文字分の高さ+行間の高さ
オススメは 1.8
1.6 で若干行間狭め。1.8 だと一般的な小説程度。2.0 くらいにするとかなりスカスカ
(未入力で 1.8 を採用)
>

(次のファイルを書き換えました)
/home/pi/work/Epub/AozoraEpub3/chuki_tag.txt

(次のファイルをコピーor上書きしました)
/home/pi/work/Epub/AozoraEpub3/AozoraEpub3.ini
/home/pi/work/Epub/AozoraEpub3/template/OPS/css_custom/vertical_font.css
AozoraEpub3の設定を終了しました
初期化が完了しました!
現在のフォルダ下で各種コマンドが使用出来るようになりました。
まずは narou help で簡単な説明を御覧ください。

 デフォルトの出力フォーマットを設定しておきます。Epub 型式にします。

$ naro s device=epub

 転生したらスライムだった件をダウンロードしてみます。

$ narou d https://ncode.syosetu.com/n6316bn/

変換開始 : /home/pi/Documents/Narou/小説データ/小説家になろう/n6316bn 転生したらスライムだった件/[伏瀬] 転生したらスライムだった件.txt
java.io.IOException: This archives contains unclosed entries.
at org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.finish(ZipArchiveOutputStream.java:343)
at org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream.close(ZipArchiveOutputStream.java:550)
at com.github.hmdev.writer.Epub3Writer.write(Epub3Writer.java:968)
at AozoraEpub3.convertFile(AozoraEpub3.java:512)
at AozoraEpub3.main(AozoraEpub3.java:431)
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/ImageFormatException
at com.sun.media.jai.codecimpl.JPEGImageDecoder.decodeAsRenderedImage(JPEGImageDecoder.java:46)
at com.sun.media.jai.codec.ImageDecoderImpl.decodeAsRenderedImage(ImageDecoderImpl.java:140)
at com.github.hmdev.image.ImageUtils.readImage(ImageUtils.java:107)
at com.github.hmdev.image.ImageUtils.writeImage(ImageUtils.java:152)
at com.github.hmdev.writer.Epub3Writer.writeImage(Epub3Writer.java:1032)
at com.github.hmdev.writer.Epub3Writer.write(Epub3Writer.java:909)
at AozoraEpub3.convertFile(AozoraEpub3.java:512)
at AozoraEpub3.main(AozoraEpub3.java:431)
Caused by: java.lang.ClassNotFoundException: com.sun.image.codec.jpeg.ImageFormatException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 8 more
pid 11281 exit 1
[ERROR] JavaがインストールされていないかAozoraEpub3実行時にエラーが発生しました。EPUBを作成出来ませんでした

 Jpeg で落ちているようです。Java のクラスがありません。改造版があるようなのでそちらを使ってみます。

AozoraEpub3 改造版(成功)

 AozoraEpub3 改造版 の Releases から最新版の AozoraEpub3-1.1.1b12Q.zip をダウンロードして使ってみましたが、narou の初期化でエラーになります。テンプレートが変更されたようです。

 一番古い zip は、AozoraEpub3-1.1.0b50Q.zip でした。これを解凍して、改めて、narou の初期化を行い、AozoraEpub3 のディレクトリとして 1.1.0b50Q のディレクトリを指定したところ、無事初期化できました。この状態で、web インターフェースを使い、epub へ変換しました。

 変換した epub を Readium で開いたところ、無事縦書きで読むことができました。

 あとは、SonyReader なり Kobo なりにコピーすればいいでしょう。

Raspberry Pi

Posted by sirius