「なろう一括取得から青空文庫形式」の改良版(2021/05/03追記)
「小説家になろう」で連載がはじまった「異世界における科学捜査の手法について。~新人捜査官の出向先がいきなり異世界だなんて!!~」が、強烈なルビ込みで面白いので、私のスクリプトも青空文庫形式のルビに対応しました。
ついでに(というかBeautiful Soupでパースするのが面白くなって)、第一話の前に表紙(作者・タイトル・あらすじ)を付けました。
これまで、連載更新された作品を追加取得するときに、エラーが出ることがありました。原因調査したところ、本文の分割テキストをダウンロードしたフォルダに、その分割テキスト以外のファイルがあるとエラーが出ることが分かりました。実際には、macOSの悪名高き隠しファイル.DS_Storeができていて、取得済みファイルを確認する際に型の不一致が生じていました。この現象が起こらないようにするため、次のように確認方法を改良しています。
【before】
existing_parts = {int(re_part.search(fn).group(1)) for fn in os.listdir(novel_dir)}
【after】
existing_parts = {int(re_part.match(fn).group(1)) for fn in os.listdir(novel_dir) if re_part.match(fn)}
つまり、名前の規則が一致したファイルだけをチェックし、さらに、一致条件をre.searchからre.matchに厳格化しました。
また、シェルスクリプトとPythonスクリプトの機能分担を見直して、ほとんどの作業はPythonで行うようにしました。そのため、既に使っておられた方は、両方とも入れ換えて下さい。使い方は基本的に変わりません。
(今回から、Windows10のAnacondaでもPythonスクリプトのみ動作確認しています。ファイル操作が少しLinux系と違いました。)
(元ページのファイルも同時に差し替わっています。)
シェルスクリプトの方は、macOSでcommand化する場合などのために、スクリプトのあるフォルダで実行するようにしています。
(2020/03/21 ファイルを差し換えました。内容は末尾の追記をご参照下さい。)
画面のサンプルを付けておきます。
ルビは、こんな風につきます:
表紙はこんな感じ。作者名を取得するのに少し苦労しました:
あらすじはこんな感じ。「あらすじ」を中見出しにしています:
ご利用は自己責任で。
パドラッパ from MacBook Air (2017)
【2020/03/16記】
スクリプトをリファクタリングして差し換えました。詳細はPythonリファクタリング初体験をご参照下さい。
機能的には、
・追加取得(差分取得)時に、章タイトルが前と同じなら被らないようにした
・青空文庫形式の注記なしのテキストを、オプション -t で取得できるようにした
の2点を追加しています。
【2020/03/21記】
宅内のCGIサーバーに組み込み、JavaScriptの皮を被せて、PCを起動しなくても取得できるようにしました。
このお遊びの最中に、Python側のバグが見つかったので、Pythonファイルを差し換えました。
ファイル読み込み時のUTF-8明示し忘れがあって、CGIから起動したときに叱られた次第です。
併せて、引数のNコードがおかしくても確認を求めないオプションを付けました(CGI起動だと返事できないので)。
【2021/05/03記】
今後、こちらのスクリプトは随時最新版に差し換えます。更新履歴および最新版の確認はGitHubをご覧ください(詳しくはこちら)。
| 固定リンク | 0


コメント