近デジダウンローダーを使えるように準備する(ImageMagick、RMagickインストール)

とてもありがたい国立国会図書館近代デジタルライブラリー

明治以降に刊行された図書・雑誌のうち、インターネットで閲覧可能なデジタル化資料を公開しています。
国立国会図書館デジタルコレクション

ただ、利用する際のWebインターフェイスがイマイチで使い勝手が良くない。
iPhoneから利用するのはどうするんだろう、だれかappでも作ってるんだろうか、と思って検索したところ、こういう記事が見つかった。

kindai.rbは近代デジタルライブラリーから書籍画像をダウンロードし、トリミングを行った上でiPhone/Kindle向けに整形する。
近代デジタルライブラリーからダウンロード、iPhone/Kindleで閲覧する·kindai.rb MOONGIFT

これだ。これをMacで使えるようにしよう。

  • 動作環境
    • Ruby が必要です.
    • RMagickを使っているので,ImageMagick が必要です.

GitHub - hitode909/kindairb: 近代デジタルライブラリーダウンローダ

ということでImageMagickが必要らしい。

ImageMagickを入れる

管理者にてhomebrewでImageMagickを入れる。Install logはpastebin.comに貼り付けた。

mini:~ admin$ brew install -v imagemagick
==> Installing imagemagick dependency: libtool
==> Downloading http://ftpmirror.gnu.org/libtool/libtool-2.4.2.tar.gz
 :
(後略)
[Bash] brew install -v imagemagick - Pastebin.com

RMagickを入れる

続いて、いつも使っている(管理者じゃない一般の)ユーザでRMagickを入れる。まずはrubygemsで検索してみる。

mini:~ hoge$ gem search rmagick --remote

*** REMOTE GEMS ***

compass-rmagick-engine (0.0.2)
hornetseye-rmagick (1.0.2)
jdeerhake-compass-rmagick-engine (0.0.4)
rdp-rmagick (0.0.0)
rmagick (2.13.2)
rmagick-metadata (0.0.2)
rmagick-sprite (0.0.8)
rmagick4j (0.3.7, 0.3.4 java)
rmagick_captcha (0.6.2)

ではインストール。

mini:~ hoge$ gem install rmagick
Fetching: rmagick-2.13.2.gem (100%)
Building native extensions.  This could take a while...
Successfully installed rmagick-2.13.2
1 gem installed
Installing ri documentation for rmagick-2.13.2...
Building YARD (yri) index for rmagick-2.13.2...
[error]: Unhandled exception in YARD::Handlers::C::MixinHandler:
[error]:   in `ext/RMagick/rmmain.c`:611:

	611: rb_include_module(Class_Pixel, observable);

[error]: ArgumentError: NilClass is not a valid CodeObject
[error]: Stack trace:
	/Users/hoge/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yard-0.8.5.2/lib/yard/code_objects/base.rb:23:in `push'
	/Users/hoge/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yard-0.8.5.2/lib/yard/handlers/c/mixin_handler.rb:10:in `block (2 levels) in <class:MixinHandler>'
	/Users/hoge/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yard-0.8.5.2/lib/yard/handlers/c/mixin_handler.rb:7:in `scan'
	/Users/hoge/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yard-0.8.5.2/lib/yard/handlers/c/mixin_handler.rb:7:in `block in <class:MixinHandler>'
	/Users/hoge/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yard-0.8.5.2/lib/yard/handlers/processor.rb:114:in `block (2 levels) in process'
	/Users/hoge/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/yard-0.8.5.2/lib/yard/handlers/processor.rb:112:in `each'

Installing RDoc documentation for rmagick-2.13.2...

riを入れるときにこないだもエラー出てたなぁ。無視します。

kindaiを入れる

mini:~ hoge$ gem install kindai
Fetching: zipruby-0.3.6.gem (100%)
Building native extensions.  This could take a while...
Fetching: kindai-2.3.0.gem (100%)
Successfully installed zipruby-0.3.6
Successfully installed kindai-2.3.0
2 gems installed
Installing ri documentation for zipruby-0.3.6...
Building YARD (yri) index for zipruby-0.3.6...
Installing ri documentation for kindai-2.3.0...
Building YARD (yri) index for kindai-2.3.0...
Installing RDoc documentation for zipruby-0.3.6...
Installing RDoc documentation for kindai-2.3.0...

はいった。
現在のgemたち

mini:~ hoge$ gem list

*** LOCAL GEMS ***

bigdecimal (1.1.0)
coderay (1.0.9)
faraday (0.8.1)
io-console (0.3)
json (1.5.4)
kindai (2.3.0)
method_source (0.8.1)
minitest (2.5.1)
multi_json (1.3.6)
multipart-post (1.1.5)
nokogiri (1.5.5)
pry (0.9.12)
pry-doc (0.4.5)
rake (0.9.2.2)
rdoc (3.9.4)
rmagick (2.13.2)
simple_oauth (0.1.9)
slop (3.4.4)
sqlite3 (1.3.6)
twitter (3.4.0)
yard (0.8.5.2)
zipruby (0.3.6)

kindai.rbを実行してみる

まずログアウトしないとkindai.rbを認識してくれなかったのでログアウト。
場所確認。

mini:~ hoge$ which kindai.rb
/Users/hoge/.rbenv/shims/kindai.rb

ヘルプを出して確認する。

mini:~ hoge$ kindai.rb --help
kindai.rb - the kindai digital library downloader

download:
    by url:     kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693
    by keyword: kindai.rb 調理法

publish:
    auto:       kindai.rb publish '~/Desktop/石川,一口;丸山,平次郎 - 講談幽霊の片袖'
    manual:     kindai.rb publish --position 2850x2450+320+380 '~/Desktop/石川,一口;丸山,平次郎 - 講談幽霊の片袖'

options:
    -o, --output OUTPUT_DIRECTORY    specify output directory
        --debug                      enable debug mode
        --retry TIMES                retry times (default is 30)
        --publish_iphone             publish for iphone
        --publish_ipad               publish for ipad
        --publish_kindle             publish for kindle
        --no_trimming                don't trimming

保存先ディレクトリは指定できるのだけど、面倒なので保存先へ移動してから実行してみる。ということで~/Picturesへ移動。
そして、突拍子もない題名で世間を騒がせた例の書籍wをダウンロードしてみる。
エロエロ草紙 - 国立国会図書館デジタルコレクション
時間が掛かるのは

画像をダウンロードする場合は30秒程度時間をあけるようにと書いてあったので,1枚ダウンロードするごとに30秒待つようにした.
近デジダウンローダー2.0 - hitode909の日記

だそうです。46画像あるので画像取得に23分ほどかかりますね。いや20秒で済ませてるようですw

20秒でもいけた · hitode909/kindairb@ee6154f · GitHub

ダウンロードログはこちら。

mini:~/Pictures hoge$ kindai.rb http://dl.ndl.go.jp/info:ndljp/pid/1137261 --publish_iphone
I, [2013-04-24T01:48:11.509761 #7521]  INFO -- : download エロエロ草紙(46 spreads) to /Users/common/Pictures/酒井, 潔, 1895-1952 - エロエロ草紙
I, [2013-04-24T01:48:11.524441 #7521]  INFO -- : downloading 酒井, 潔, 1895-1952 - エロエロ草紙 - spread 1 / 46
I, [2013-04-24T01:48:34.408287 #7521]  INFO -- : downloading 酒井, 潔, 1895-1952 - エロエロ草紙 - spread 2 / 46
(後略)
[Bash] kindai.rb http://dl.ndl.go.jp/info:ndljp/pid/1137261 --publi - Pastebin.com

手順としては

  • ダウンロード
  • 余白の自動トリミング
  • リサイズ(iPhone見開き画面(つまり倍サイズ)1280×960px)
  • リサイズしたjpegをzipで固める

となるようですね。

コマンド

使い方

起動時の引数に,ダウンロードしたい本の URL を指定します.スペース区切りで複数指定できます.

kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693

URL の代わりに検索ワードを指定すると,ヒットした本をまとめてダウンロードします.AND検索もできます.

kindai.rb 調理
kindai.rb "松茸 調理"

–output オプションで,保存先を指定できます.指定したディレクトリの下に,書名のディレクトリができます.

kindai.rb http://kindai.ndl.go.jp/info:ndljp/pid/922693 --output ~/Documents/

本の加工(自動)

ダウンロードした本は自動的にトリミングされ,trim/ディレクトリに格納されます.トリミング情報は自動的に共有され,次に同じ本をダウンロードしたときや,他のひとが同じ本をダウンロードしたときに再利用されます.

起動時の引数で,ダウンロードした本を iPhone 用と Kindle 用に加工することができます.
–publish_iphone オプションで,iPhone用のファイルを作ります.
–publish_kindle オプションで,Kindle用のファイルを作ります.

–no_trimmingオプションが指定されたときは,ダウンロードだけを行い,トリミングや加工を行いません.
GitHub - hitode909/kindairb: 近代デジタルライブラリーダウンローダ