「小説家になろう」のテキストに、青空文庫形式の注記を付けて読む(2021/05/03追記)
「小説家になろう」の作品を一括取得して、BOOX Poke Proで読むのに、個別ファイルをZIPでまとめて読書尚友(青空文庫ビューア)を使っていたのですが、読書尚友の簡素で速い検索機能と目次機能を使いたくなって、青空文庫の注記形式のうち、見出しと改ページを入れた全文一括テキストを作れるようにしました。
テキスト取得するPythonスクリプトと、全文一括テキストにするシェルスクリプトの組合せです:
(2020/03/21 ファイルを差し換えました。内容は末尾の追記をご参照下さい。)
開発環境は、MacBook Air (2017), macOS 10.15.3, Python 3.7.3 です。
Raspberry pi (raspbian 8.0 jessie)のPython 3.4.2と、
Windows10 WSL Ubuntu 16.04.6 (LTS)のPython 3.5.2と、
Windows10のAnaconda 2002.02 Python 3.7.6でも動作確認しています(Anacondaは2020/03/12から、Pythonスクリプトのみ)。
(Python 3.4.3でhttp.clientにおける証明書の扱いが変更になっているので、簡単なバージョンチェックを入れました。)
使い方は、./nabat.shで起動して、作品のURLをコピペしてreturnします。
例えば「本好きの下剋上 ~司書になるためには手段を選んでいられません~」の場合、「https://ncode.syosetu.com/n4830bu/」です(大作なので12分ぐらいかかります)。
順を追っていくと、取り込みたい作品のURLをクリップボードにコピーし、
./nabat.sh後の指示に従ってURLをペーストして確認メッセージに応えると、Nコードフォルダの下に全文一括テキストと、個別テキストをまとめたZIPファイルができます。
この全文一括テキストを読書尚友で読み込んで目次表示すると、こんな感じです:
ここで例えば「閑話 コリンナ様のお宅訪問」を選ぶと(OVAは期待通り面白かったです)、ちゃんと表示されました。
検索機能の一例です。この長編の数ある名セリフの断片から、ズバッと該当箇所が出てくるのは快感です。
なお、Pythonスクリプトを動かす環境については「小説家になろう」の作品を一括取得して、BOOX Poke Proで読むを、
シェルスクリプトについては一括取得を簡単にするシェルスクリプトを参考にして頂けると幸いです。
ご利用は自己責任で。
パドラッパ from MacBook Air (2017)
【2020/03/12記】
エラー処理をはじめとして、色々と改良しました。詳しくは改良版の記事を参照して下さい。
Pythonとシェルスクリプトの機能分担を見直したので、既に使っておられた方は、両方とも入れ換えて下さい。なお、renameは使わなくなりました。
Windows10でのPythonスクリプトのテストに、Ubuntuに加えてAnacondaも使ってみました。Anacondaのバージョンは2020.02、Python 3.7.6です。コンソールが「DOS窓」なので、シェルスクリプトは動きません。必要に応じてバッチファイルを作って下さい。
【2020/03/16記】
スクリプトをリファクタリングして差し換えました。詳細はPythonリファクタリング初体験をご参照下さい。
機能的には、
・追加取得(差分取得)時に、章タイトルが前と同じなら被らないようにした
・青空文庫形式の注記なしのテキストを、オプション -t で取得できるようにした
の2点を追加しています。
【2020/03/21記】
宅内のCGIサーバーに組み込み、JavaScriptの皮を被せて、PCを起動しなくても取得できるようにしました。
このお遊びの最中に、Python側のバグが見つかったので、Pythonファイルを差し換えました。
ファイル読み込み時のUTF-8明示し忘れがあって、CGIから起動したときに叱られた次第です。
併せて、引数のNコードがおかしくても確認を求めないオプションを付けました(CGI起動だと返事できないので)。
【2020/03/31記】
開発環境のPythonはCommand Line Tools for Xcode経由でインストールされたApple謹製の3.7.3だったのですが、ふと思い立ってbrew install ffmpegしたときに依存関係でアップデートされて、3.7.7になりました。
narou2az.pyは問題無く動いています。また、idle3が一緒に入ったので開発がしやすくなりました。
(本当はpyenvも入れてバージョンチェックできるようにした方がいいのかも知れませんが…)
Tcl/TkのWarningも気になりつつ、まぁぼちぼち
【2021/05/03記】
今後、こちらのスクリプトは随時最新版に差し換えます。更新履歴および最新版の確認はGitHubをご覧ください(詳しくはこちら)。
| 固定リンク | 0


コメント