« BOOX Poke Proのホームを標準に戻した話 | トップページ | 一括取得を簡単にするシェルスクリプト(2020/03/07追記) »

2020/02/23

「小説家になろう」の作品を一括取得して、BOOX Poke Proで読む(2020/03/07追記)

BOOX Poke Proで「小説家になろう」の作品を快適に読んでいます。しかし病院など電波の不自由な状況で次々に読むことが、LTEを積んでいないので、できません。
(私の行っている病院はテザリングなどのWi-Fi禁止なのです。)
そこでテキストファイルで一括ダウンロードする方法を見つけたのですが、うまく動かなかったので手直しした顛末です。

 

取り急ぎ、手直ししたファイルはこちら:

ダウンロード - narou2txt_all.py

私の環境は、MacBook Air (2017), macOS 10.15.3, Python 3.7.3 です。ご利用は自己責任でお願いします。
2020/02/23にアップしたものは章タイトルが無い作品でエラーが出たので差し換えました。

実行方法: python3 narou2txt_all.py <Nコード>

例えば功刀 康太の遺跡探訪、時々お祓い ~女難あふれる退魔伝~の場合、<Nコード>は「n8017fj」で、
Kouta
python3 narou2txt_all.py n8017fj

とすれば良いです。すると<Nコード>フォルダを作って、その中に各話のテキストファイルを作成します。

 

必要なライブラリが無い等でエラーが出た場合は、下記環境作りの詳細を参考にして下さい。

 

連番テキストファイルを縦書きで読むAndroidアプリとして、私は読書家を使っていました。一節を読み終わって、次のファイルがあるときは、インジケータが出てクリックすると次に行けます。
Photo_20200223112501
(説明によればzipにまとめても読めるらしいのですが、私のところではエラーが出ます。なんでかな → アプリを読書尚友に変えると、zipで読めるようになり乗り換えました。末尾参照)

 

ただ、数値の桁数が違うことで連番通りに読めないアプリがあるかも知れないので、文市さんのスクリプトを使ってファイル名を修正しています。
ここで使われているrenameコマンドはmacOSに入っていないので、別途導入必要です。これも下記を参考にして下さい。
文市さんのスクリプトは、検索などに使える一括ファイルも作成できて便利なのですが、ファイル順が狂うことがあったので、
for file in `\find . -name '*.txt'`; do
for file in `\find . -name '*.txt' | sort`; do にしています。

 

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

以下は、すんなりいった方は読まなくていい、環境作りの詳細です。
参考にさせて頂いたブログはこちら:
Pythonによるスクレイピングで『小説家になろう』から小説本文を取得する - スコルの知恵袋 - 

こちらに沿って環境構築した(私の場合は、pip, Beautiful Soupをインストールした)ものの、

info_res = request.urlopen(info_url) のところでエラーが出ていて調べたところ、Pythonの仕様が次のように変わっていたことが分かりました。

 

http.client --- HTTP プロトコルクライアント — Python 3.8.2rc2 ドキュメント

「バージョン 3.4.3 で変更: このクラスは今や全ての必要な証明書とホスト名の検証をデフォルトで行うようになりました。昔の、検証を行わない振る舞いに戻したければ、 context に ssl._create_unverified_context() を渡すことで出来ます。」

これに対応する修正をして、(趣味的に)フォーマットを少し変えたのが、私のスクリプトです。

 

また、文市さんのスクリプトを動かそうとしたところ、macOSではrenameコマンドが無かったので手っ取り早くpip3 install renameしたところ、正規表現が通りませんでした。

macOS用パッケージマネージャー — Homebrewを入れて、

brew install rename
で導入したrenameでは大丈夫でした。

 

パドラッパ from MacBook Air (2017)

 

【2020/02/23 15:21記】
読書アプリを読書家から読書尚友に変えました。読書家では開けなかったzipファイルが普通に開けるとともに、次のファイルへと勝手に移ってくれて便利です。本文中は(ちょっとクセのある)読書家のままにしておきます。
読書尚友 Free (青空文庫ビューア)

 

【2020/02/24 11:28記】
章タイトルの無い作品でエラーが出ていたのを修正しました。

 

【2020/02/25記】
ラズパイ3で試したらエラーが出て焦ったけれど、単にPythonが古くて3.4.2だったからでした。
Pi3error
エラーが出ている34行目(SSL認証を無視してね、というおまじない)を素直にコメントアウトしたらOKです。というか、ここが要らなければ参考にさせて頂いたブログの通りです。本当は環境チェックを入れるべきなのでしょうが、ごめんなさい(^^;;

 

【2020/02/26記】
Windows10のubuntuでも試してみました。インストールしっぱなしだったのでsudo apt-get update, sudo apt-get upgradeにやけに時間が掛かった上、sudo apt install python3-pipがpip3 install beautifulsoup4の前に必要でした。sudo apt-get install zipも必要。python3 は3.5.2。
結果としては、アップしてあるものでOKでした(^^)v

 

【2020/03/07記】
発展形として、「小説家になろう」のテキストに、青空文庫形式の注記を付けて読むをアップしました。簡単なPythonバージョンチェックも入れています。

| |

« BOOX Poke Proのホームを標準に戻した話 | トップページ | 一括取得を簡単にするシェルスクリプト(2020/03/07追記) »

コメント

コメントを書く



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




« BOOX Poke Proのホームを標準に戻した話 | トップページ | 一括取得を簡単にするシェルスクリプト(2020/03/07追記) »