Raspberry Pi + Narou.rbで小説家になろう定期ダウンローダーを作る

 家に適当に転がっているRaspberry Piを使って何か出来ないか、ということで…小説家になろう定期ダウンローダーを仕立ててみる事に。
 世の中にはNarou.rbという便利な物が公開されています。これはRubyで書かれたなろう専用ダウンローダーとでも言うべき代物であり、AozoraEpub3と連携して.epubに変換する事も可能な便利ツール。今回の目的にピッタリ、大変便利です。作者様に感謝ですね。
 Raspberry Piでの制限として、kindlegenを用いた.mobiの出力が出来ません。kindlegenがARM向けには提供されていませんので。
 Kindle向けに使うにはWindowsで別途変換する等の一工夫が必要になりますね。

 以下はNarou.rbをとりあえずRaspbian上で動かすまでの記録です。

 なお、Raspbianの導入や初期設定等はここでは割愛します。

■利用した環境及び導入するソフトウェア

1.Raspberry Pi Model B
2.Raspbian Jessie Lite
3.Oracle Java8 JDK (Linux ARM 32 Hard Float ABI)
4.Ruby + RubyGems
5.AozoraEpub3
6.Narou.rb




■導入の手順

1.Javaのインストール

OracleのHPからARM対応のJava JDKをダウンロードする。
 必要なバージョンはJava8、作業時のARM対応最新版は8u91だった。

 ダウンロードした"jdk-8u91-linux-arm32-vfp-hflt.tar.gz"を展開し、/usr/lib/jvm/以下にディレクトリを配置した後、alternativesでパスを設定する。
 使用するバージョンによってファイル名は適時読み替えの事。

>~$ tar zxvf jdk-8u91-linux-arm32-vfp-hflt.tar.gz
>~$ sudo mkdir /usr/lib/jvm
>~$ sudo mv jdk1.8.0_91/ /usr/lib/jvm/
>~$ sudo update-alternatives --install "/usr/local/bin/java" "java" "/usr/lib/jdk1.8.0_91/bin/java" 0

 インストール後、java -versionにて正常にバージョンが表示されれば完了。

>~$ java -version
>java version "1.8.0_91"
>Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
>Java HotSpot(TM) Client VM (build 25.91-b14, mixed mode)

2.Rubyのインストール

Ruby2.1.0以降をインストールする。
 Narou.rb公式では出来るだけ最新版推奨との事だが、ここでは手軽にapt-getからインストールした。
 作業時のRaspbianにおいて導入されるrubyはすでに2.1以降であるため問題はない。

>~$ sudo apt-get install ruby ruby-dev

 こちらも念のため、Ruby及びRubyGemsのバージョンを確認する。

>~$ ruby -v
>ruby 2.1.5p273 (2014-11-13) [arm-linux-gnueabihf]
>~$ gem -v
>2.2.2

 正常に表示されれば完了。

3.AozoraEpub3のインストール

 AozoraEpub3/usr/local/以下にインストールする。

>~$ mkdir AozoraEpub3
>~$ unzip AozoraEpub3-1.1.0b45.zip -d AozoraEpub3
>~$ sudo AozoraEpub3 /usr/local/

 これは展開したディレクトリごとコピーするだけで完了。

4.Narou.rbのインストールと初期設定

いよいよNarou.rbのインストール。
 これはRubyGemsで一発OK。

>~$ sudo gem install narou

 インストールが完了したら初期設定。
 Narou.rbで使用するディレクトリを作成する。
 今回は/home/pi/以下にnarouディレクトリを作成したが、出来ればUSBメモリ等を使ってシステムのSDカードから分離したほうが良いかもしれない。

>~$ mkdir narou
>~$ cd narou
>~/narou$ narou init
>.narou/ を作成しました
>小説データ/ を作成しました
>------------------------------
>AozoraEpub3の設定を行います
>                            !!!WARNING!!!
>AozoraEpub3の構成ファイルを書き換えます。narouコマンド用に別途新規インストールしておくことをオススメします
>
>AozoraEpub3のあるフォルダを入力して下さい:
>(未入力でスキップ)
>>/usr/local/AozoraEpub3
>
>(次のファイルを書き換えました)
>/usr/local/AozoraEpub3/chuki_tag.txt
>
>(次のファイルをコピーor上書きしました)
>/usr/local/AozoraEpub3/AozoraEpub3.ini
>/usr/local/AozoraEpub3/template/OPS/css_custom/vertical_font.css
>AozoraEpub3の設定を終了しました
>初期化が完了しました!
>現在のフォルダ下で各種コマンドが使用出来るようになりました。
>まずは narou help で簡単な説明を御覧ください。

 これで最小限の初期設定が完了し、/home/pi/narou/ディレクトリ内でnarouコマンドが使用可能になる。
 ここでは特定のデバイス向けの設定は行わないが、この場合デフォルトで.epubの出力が行われる。


■Narou.rbの動作確認

実際に何か適当ななろう小説をダウンロードして.epubに変換してみる。
 有名どころとして、アニメ化もされた橙乃ままれ先生のログ・ホライズンで試してみる。

>~/narou$ narou download http://ncode.syosetu.com/n8725k/
>ID:0 ログ・ホライズン のDL開始
  ~省略~
>ID:0 ログ・ホライズン の変換を開始
>小説状態の調査結果を 調査ログ.txt に出力しました
>縦書用の変換が終了しました
>AozoraEpub3でEPUBに変換しています..........................................................................................................................................変換しました
>[橙乃ままれ] ログ・ホライズン.epub を出力しました
>EPUBファイルを出力しました
>小説の保存フォルダを開きますか (y/n)?: n

 エラー無く終了すれば完了。
 小説データディレクトリ以下にデータが保存される。


■cronを用いて定期実行させる

なろうのWeb小説はある日突然削除される事がままある為、お気に入りの小説はローカルに保存しておくと安心出来る。
 Narou.rbのアップデート処理をcronを用いて定期実行させる事で、小説の保存を自動化する。

1.Narou.rbの設定

デフォルトの設定では、小説のダウンロード後に「保存フォルダを開きますか」プロンプトが表示され、ユーザーがy/nを入力するまで処理が止まってしまう
 これでは都合が悪いので設定で無効にする。

>~/narou$ narou setting convert.no-open=true
> convert.no-open を true に設定しました

 これで表示されなくなる。

2.シェルスクリプトを作成する

narouコマンドは、narou initを実行したディレクトリでしか使用できない。
 その為、narouディレクトリに移動した後、アップデートを実行するシェルスクリプトを作成する。

 ここではエディタにviを用いているが、nanoだろうが何でも構わない。

>~/narou$ vi narou-update.sh
>#!/bin/sh
>cd /home/pi/narou
>/usr/local/bin/narou update
>~/narou$ chmod +x narou-update.sh

3.cronに登録する

作成したシェルスクリプトをcronに登録する。

>~$ crontab -e

 crontabの内容がエディタで表示されたら都合の良いように編集する。

>0 1 * * * /home/pi/narou/narou-update.sh

 この場合だと、毎日1時に実行される。
 あまりに頻繁に実行するとなろうのサーバーに負荷が掛かると思われるので、頻度はほどほどに抑える方が良いだろう。
 cronの記法については別途確認の事。


 以上で、当初の予定であるなろう定期ダウンローダーとしては完成。  

 後は好きな小説をどんどん登録しておけば勝手にダウンロードしてローカルを最新に保ってくれます。

 その他、Narou.rb自体の使い方は公式のドキュメントを参照して下さい。



■最後に…

ここまでやっておいて何ですが、初代のRaspberry Piではダウンロードはともかく.epubへの変換がかなり重いです
 素直にWindowsで動かす方が賢いかもしれません。
 ともあれ、LinuxでNarou.rbを動かす参考にはなるかも知れません。
 Debian系ならほぼ同様の手順で導入できるでしょう。

コメント