« macOSでのシェルスクリプト実行方法 | トップページ | Pythonリファクタリング初体験(2021/05/03追記) »

2020/03/12

「なろう一括取得から青空文庫形式」の改良版(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で行うようにしました。そのため、既に使っておられた方は、両方とも入れ換えて下さい。使い方は基本的に変わりません。

ダウンロード - narou2az.py

ダウンロード - nabat.sh

(今回から、Windows10のAnacondaでもPythonスクリプトのみ動作確認しています。ファイル操作が少しLinux系と違いました。)

元ページのファイルも同時に差し替わっています。)
シェルスクリプトの方は、macOSでcommand化する場合などのために、スクリプトのあるフォルダで実行するようにしています。

(2020/03/21 ファイルを差し換えました。内容は末尾の追記をご参照下さい。) 

画面のサンプルを付けておきます。
ルビは、こんな風につきます:
Csi1
表紙はこんな感じ。作者名を取得するのに少し苦労しました:
Csi2
あらすじはこんな感じ。「あらすじ」を中見出しにしています:
Csi3

 

ご利用は自己責任で。

 

パドラッパ 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をご覧ください(詳しくはこちら)。

| |

« macOSでのシェルスクリプト実行方法 | トップページ | Pythonリファクタリング初体験(2021/05/03追記) »

コメント

コメントを書く



(ウェブ上には掲載しません)




« macOSでのシェルスクリプト実行方法 | トップページ | Pythonリファクタリング初体験(2021/05/03追記) »