魔王「この我のものとなれ、勇者よ」勇者「断る!」 を ePub化

魔王「この我のものとなれ、勇者よ」勇者「断る!」 が非常に面白い。

でも、電車の中で読むときに、iPhoneからsafariで読むと読み込みに時間がかかってしまうし、なにより途中でやめると最初からやり直しなのがつらい。1スレが長い一つのhtmlで書かれているので、例えば700から読みなおそうと思ったときにものすごくスクロールが大変なわけです。

というわけで、epub版を作ってみました。htmlをとってきて、UTF-8にして、reStructuredText形式にpythonで変換および日付やIDなどを除去して、sphinxePub化。元々がHTMLなんだからsphinxを使わなくても簡単にePub化できると思いますが、まあその辺は置いといて。

古いiPhone 3Gで、Stanzaを使って読みましたが問題ありません。一行が長いので、フォントをちょっと小さめにして横持ちすると読みやすいです。


配布していいのかな…

えい。

問題があればコメントください。速攻消します。
また、単に自動変換しただけなので、どこか変な場所があるかもしれません。まだ7スレ目までしか読んでないので全部をチェックはしていません(ですが、今のところ問題はありません)。ご了承ください。

変換方法
  • 1. 配布元サイトから、全てのスレをそれぞれCtrl-Aで全選択、Ctrl-Cでコピー
  • 2. UTF-8が扱えるエディタにペースト。それぞれ、1.html、2.html .. とする
    • 本当は単なるテキストなんですけどね…
    • コピーは全部できていないことがあるので、最後の番数をちゃんとチェックすること
  • 3. 12スレまで保存したら、以下のスクリプトを実行
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
import re


def convert(filename):
  outputf = filename.replace(".html",".rst")
  f = open(outputf,'w')

  f.write(filename.split(".")[0])
  f.write("\n")
  f.write("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n")
  
  p = re.compile('^([0-9]+)')

  for line in open(filename, 'r'):
    #    line = line.rstrip()
    if ("inserted by FC2 system" in line):
      continue
    if ("INDEX" in line):
      continue
    if ("NEXT" in line):
      continue
    if (line.startswith("ID:")):
      continue
    if ("魔王「この我のものとなれ、勇者よ」" in line): # 最初の行は飛ばす
      continue

    m = p.match(line)
    if (m):
      s = "\n**" + m.group(1) + " --- --- --- --- :**\n\n" 
    else:
      s = "| " + line

    f.write(s)

  f.close()
  
if __name__ == '__main__':
  print os.path.dirname(__file__)
  files = os.listdir(".")

  for file in files:
    if (file.endswith(".html")):
        convert(file)
  • 4. {1-12}.rstが出来ているので、あとはこれを sphinx でmake epubしてあげればOK。

sphinxepub作成を試したかったのでこうしたのですが、普通にePubを作るのであれば、HTML形式で保存し、 sigilを使った方がいいと思います。