はじめに
青空文庫からテキストを取得してePubに変換するプログラムは AozoraEpub やその改造版 AozoraEpub3が有名だが、Java なしでできないかと調べたところ、Python に ebooklibというライブラリがあり、すでにこれを利用したプログラムpyaozoraがあったため、forkして欲しい機能を追加するなどした。
変更点
- JIS X0213 対応表を利用した外字対応
- 青空文庫上で目次がない図書への対応
- 青空文庫へのアクセスをキャッシュ化
- ePubのスタイルをシンプルに
- 目次を変換しない
JIS X0213 対応表を利用した外字対応
下記を参考に外字対応を追加した。
青空文庫上で目次がない図書への対応
元プログラムでは、青空文庫上の目次リンクからコンテンツを取得しているため、目次がないとコンテンツが取得できなかった不具合の対応。
青空文庫へのアクセスをキャッシュ化
requests ではなく、requests_cache を利用。
ePubのスタイルをシンプルに
ebooklib で縦書き右綴じにするには、directionの指定と、cssでのライティングモードだけで良さそうだったので、そのように修正。
book.set_direction("rtl")
html {
-epub-writing-mode: vertical-rl;
-webkit-writing-mode: vertical-rl;
}
目次を変換しない
コードをシンプルにしたかったので、目次リンクの変換は除いた。
使い方
-t
が縦書きの設定です。 デフォルトは横書き。
-o
プログラムの出力ファイルの設定です。デフォルトは $題名.epub
です。
python pyaozora -t https://www.aozora.gr.jp/cards/000096/files/2381_13352.html
表示確認
以下のリーディングシステムで縦書き右綴じとなること、外字が表示されることを確認した。
- Thorium Reader
- Apple Books
- Kindle Paperwhite