小撇步|将明日方舟剧情做成Epub电子书

1032字

前因是看了一篇 NGA 舟版帖子: 明日方舟的三个剧情阅读器,希望所有大地厨都知道,帖子例举了三个游戏外读剧情的工具,但我都不是很喜欢,看到帖子里提到把剧情转化为 Epub 电子书,想了下,感觉可以做一个。

注意:为规避版权问题,这里不放出具体代码(都是 ChatGPT 写的),只讲思路(比较丑陋,肯定有更优雅的处理办法),也不放出最终文件。我制作的文件仅供自用,不对外传播。

思路比较简单

  1. ASTR 剧情站提供剧情的 xls 文件导出,包括所有的台词、过场 cg 图片地址等资源。
  2. 通过 Python 将 xls 文件转化为 md 文件,这样,单元格就转化为“|”分隔符,对文件进行格式化处理,删除不想要的分隔符,增加冒号,将图片地址格式化为 md 图片链接形式,如果想进一步处理还有个取巧的办法,就是扔进 Obsidian,通过 Obsdidian 的格式化插件(比如 Linter)批量删掉多余的空格,调整空行和排版。
  3. 这里其实可以直接用 Pandoc 来转化为 epub 了,但是实操时批量下载远程图片始终超时,于是更换思路,通过在线图像链接批量下载工具下载全部图片,再通过 Python 替换原远程图片链接地址为本地。
  4. PS:一定记得压缩图片,ASTR 剧情站下载的图片普遍有 1 MB 以上,不处理会导致单主线剧情 Epub 就有,200 Mb……做电子书的话,图片 100kb 就够了。
  5. 合并 md,并使用 Pandoc 将 md 文件转化为 Epub 文件,后续有格式上的问题可以通过 Calibre 来调整,包括增加封面等元数据。(pandoc input.md -o output.epub
  6. 理论上比较好的转化方式是使用 Gitbook,但是 Gitbook 已经不维护,放几个参考链接在这里:自己动手制作电子书的最佳方式 / GitBook 安装过程 / nvm安装node没有npm的问题。三个链接彼此解决对方的坑,我自己安装下来,到最后一步再次安装,仍然会显示 Installing GitBook 3.2.3 并报 (node:6068) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 error listeners added. Use emitter.setMaxListeners() to increase limit,这时候不要管他,让它跑个十几二十分钟,最终还是能装上的(……)

碎碎念:因为文件太多,研究了一下 Gitbook 自动生成 Summary,使用的是 这篇文章的第二种办法(用 Gitbook 自己的插件实在安装太慢了),即运行 npm install -g gitbook-summary 后运行 book sm,自动生成目录。
虽然网上都说 Gitbook 好但我觉得实在太难用了,问题特别多,build 的时候还遇到了 RangeError: Maximum call stack size exceeded,创建一个 book.json,写入即可解决。但在转换 Epub 时还是遇到了 URL 的问题。

{ 
"plugins": ["-lunr"] 
}

最后愤怒地用土办法,Python 合并 md 文件,Pandoc 转换,再用 Calibre 合并一下,比先进方案(Gitbook:你等下)效率多了!

不看不知道一看吓一跳,孤星和崔林特尔梅之金都有近 15 万字,怪不得拼多多有卖盗版小说,鹰角网络,你有钱不赚!