1
1

【Python CLI】青空文庫のXHTML本からEPUBに変換するツールをforkした

Posted at

はじめに

青空文庫からテキストを取得してePubに変換するプログラムは AozoraEpub やその改造版 AozoraEpub3が有名だが、Java なしでできないかと調べたところ、Python に ebooklibというライブラリがあり、すでにこれを利用したプログラムpyaozoraがあったため、forkして欲しい機能を追加するなどした。

変更点

  1. JIS X0213 対応表を利用した外字対応
  2. 青空文庫上で目次がない図書への対応
  3. 青空文庫へのアクセスをキャッシュ化
  4. ePubのスタイルをシンプルに
  5. 目次を変換しない

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

参考

1
1
0

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
1
1