honyomiの設定
環境
OS: Ubuntu 18.04.1 LTS
Docker: Docker version 18.09.0, build 4d60db4
Honyomi: honyomi 1.5.0
設定をどうするかだが。
http://honyomi.nagoya/
によると、dockerを起動するには
~$ sudo docker start my-honyomi my-honyomi
以下を実行すると、コマンドプロンプトが起動する。
~$ sudo docker exec -it my-honyomi /bin/bash
ホストのディレクトリをマウントしたいので、色々ネットで調べ者をするがどうしても作成できず。
https://tech.mokelab.com/infra/docker/mount_local.html
によると、「コンテナ作成時に-vオプション」を指定するそうな。
ならば、最初に使ったコマンドをもう一度使えばいいわけだな。
/books/pdf$ sudo docker run --name my-honyomi -v /books/pdf:/pdfs -d -it -p 9295:9295 ongaeshi/honyomi docker: Error response from daemon: Conflict. The container name "/my-honyomi" is already in use by container "a5a59a6b2e48afb84bb70130ab673d1e240bde5ba085dd2e0b671c11548588eb". You have to remove (or rename) that container to be able to reuse that name. See 'docker run --help'.
dockerコンテナのプロセスは走っていないけど、コンテナの作成をやり直すということか。
/books/pdf$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
なんだど。一度runしてしまったものは消さないと行けないということか。removeするもの面倒なので。
/books/pdf$ sudo docker run --name my-honyomi1 -v /books/pdf:/pdfs -d -it -p 9295:9295 ongaeshi/honyomi d969bee1bd4be9f3ca57c27df28867dd96432d2603daced3e46b63d134691391
なんだかうまく行ったっぽい。
シェルを起動して潜り込み。
/books/pdf$ sudo docker exec -it my-honyomi1 /bin/bash root@d969bee1bd4b:/# ls bin dev home lib64 mnt pdfs root sbin sys usr boot etc lib media opt proc run srv tmp var root@d969bee1bd4b:/# cd pdfs root@d969bee1bd4b:/pdfs# ls (pdfファイルの羅列)
無事にコンテナからホストのディレクトリにアクセスすることに成功した。
次はデータベースを作るぞ。
データベースを初期化する
root@d969bee1bd4b:/# honyomi init Database already exists in "/root/.honyomi/db/honyomi.db"
もうデータベースが入っているんだと。
中身は root@d969bee1bd4b:/# honyomi list
入っておりませんでした。
動作を確認するために逐一テスト。
root@d969bee1bd4b:/pdfs# honyomi add /pdfs/books00001.pdf A 1 books00001 (1588 pages)
時間がかかったが、取り込みに成功したようだ。
root@d969bee1bd4b:~/.honyomi# honyomi search DNA --- books00001 (1442 page) --- lmann DM: Ion channels and neurological disease:<< DNA>> based diagnosis is now possible, and ion channe
検索はうまく行った。
では、ウェブインターフェースはどうなんだ。
root@d969bee1bd4b:~/.honyomi# honyomi web /usr/local/bundle/gems/launchy-2.4.3/lib/launchy/applications/browser.rb:63:in `browser_cmdline': Unable to find a browser command. If this is unexpected, Please rerun with environment variable LAUNCHY_DEBUG=true or the '-d' commandline option and file a bug at https://github.com/copiousfreetime/launchy/issues/new (Launchy::CommandNotFoundError) from /usr/local/bundle/gems/launchy-2.4.3/lib/launchy/applications/browser.rb:67:in `cmd_and_args' from /usr/local/bundle/gems/launchy-2.4.3/lib/launchy/applications/browser.rb:78:in `open' from /usr/local/bundle/gems/launchy-2.4.3/lib/launchy.rb:29:in `open' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:120:in `block in web' from /usr/local/bundle/gems/rack-1.6.4/lib/rack/handler/thin.rb:18:in `run' from /usr/local/bundle/gems/rack-1.6.4/lib/rack/server.rb:286:in `start' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:118:in `web' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:135:in `web' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/command.rb:27:in `run' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:168:in `invoke_command' from /usr/local/bundle/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/base.rb:440:in `start' from /usr/local/bundle/gems/honyomi-1.5.0/bin/honyomi:5:in `<top (required)>' from /usr/local/bundle/bin/honyomi:23:in `load' from /usr/local/bundle/bin/honyomi:23:in `<main>
あかん、あかん。
これはコンテナ内にインストールされたウェブブラウザーを起動させるものらしい。
よって、ひとまずホストOSのシェルから、
~$ sudo docker inspect my-honyomi1
として、ipアドレスを取得し、
"Ports": { "9295/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "9295" } ] "IPAddress": "172.17.0.2",
ホストOSのウェブブラウザから
htt://172.17.0.2:9295/
にアクセスし動作確認終了!!
yonyomi1へのアクセス方法を確認しておく。
PCの電源をおとして、再起動する。
シェルを起動して、
sudo docker start my-honyomi1
この時点でホストOSからアクセスできるようになる。
sudo docker exec -it my-honyomi1 /bin/bash
これで、dockerのシェルが立ち上がって諸作業を継続でいるわけだ。
大量のPDF取り込み。
予め、ホストOSのテキストでシェルスクリプトを書いておく
#!/bin/sh honyomi add /pdfs/books00003.pdf honyomi add /pdfs/books00004.pdf
それをdockerに移してシェルスクリプロを実行すればよい。
大量のPDFリネーム
#!/bin/sh honyomi edit 2 -t "BRS Behavioral Science (Board Review Series) Barbara Fadem PhD 296p_0781757274"
こんなbashスクリプトを書いて実行させればよい。
ここでエラーが、
root@d969bee1bd4b:/pdfs# bash tmp.sh /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]=': "\xEF" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]=' from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `method_missing' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/database.rb:106:in `change_book' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:48:in `edit' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:82:in `edit' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/command.rb:27:in `run' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:168:in `invoke_command' from /usr/local/bundle/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/base.rb:440:in `start' from /usr/local/bundle/gems/honyomi-1.5.0/bin/honyomi:5:in `<top (required)>' from /usr/local/bundle/bin/honyomi:23:in `load' from /usr/local/bundle/bin/honyomi:23:in `<main>'
全くよくわからない。
タイトル内の2バイト文字がだめかもしれないので()を()に置き換えた。あと行末の改行を消去した。
honyomi edit 2 -t "BRS Behavioral Science (Board Review Series) Barbara Fadem PhD 296p_0781757274" root@d969bee1bd4b:/pdfs# bash tmp.sh id: 2 title: BRS Behavioral Science (Board Review Series) Barbara Fadem PhD 296p_0781757274 author: url: path: /pdfs/books00002.pdf pages: 308 timestamp: 2018-10-21 00:59:52 +0000
うまく行った。
次はどうか。
honyomi edit 3 -t "Bates’ Guide to Physical Examination and History Taking, 10th Edition Lynn S. Bickley MD 992p_0781780586" /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]=': "\xE2" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError) from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `[]=' from /usr/local/bundle/gems/rroonga-5.0.9/lib/groonga/record.rb:476:in `method_missing' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/database.rb:106:in `change_book' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/core.rb:48:in `edit' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:82:in `edit' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/command.rb:27:in `run' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/invocation.rb:126:in `invoke_command' from /usr/local/bundle/gems/honyomi-1.5.0/lib/honyomi/cli.rb:168:in `invoke_command' from /usr/local/bundle/gems/thor-0.19.1/lib/thor.rb:359:in `dispatch' from /usr/local/bundle/gems/thor-0.19.1/lib/thor/base.rb:440:in `start' from /usr/local/bundle/gems/honyomi-1.5.0/bin/honyomi:5:in `<top (required)>' from /usr/local/bundle/bin/honyomi:23:in `load' from /usr/local/bundle/bin/honyomi:23:in `<main>'
あかんらしい。
「’」を除去しても、「.」を除去してもだめ、「,」を除去してもだめ。結局全部削除したらうまくいった。
honyomi edit 4 -t “COPD(慢性閉塞性肺疾患)診断と治療のためのガイドライン 161p_4779210801”
だめ。やっぱり2バイト文字はうまく行かない気がするな、、、
かくなるうえはタイトルを無理無理翻訳するか、、、、手動でやってもだるいわけで、google translationを使って一括翻訳
honyomi edit 4 -t "Guidelines for Diagnosis and Treatment of COPD (Chronic Obstructive Pulmonary Disease) 161 p_ 47779210801"
上記ならば何ら問題なし。シェルスクリプトでバッチファイルを作って一括処理してみよう。だめなところはあとで直せば良い。
#!/bin/sh honyomi edit 5 -t "Essential Cell Biology Original Book Second Edition Bruce Alberts 894p_4524239278" (中略) honyomi edit 221 -t "Laboratory Inspection Value Handbook - Thinking about the Influence of Medicines 2nd Edition Satoshi Kimura 327p_4840746168" というシェルスクリプトを書いて
root@d969bee1bd4b:/pdfs# bash tmp.sh >> log.txt 2>&1
よし来い!、、、ほとんどうまく行った。やっぱり、2バイト文字駄目だったのね。
なんとか、うまく運用できそうです。
ongaeshi様に感謝です。
メモ
オプション
root@d969bee1bd4b:/# honyomi -h honyomi 1.5.0 Commands: honyomi add file1 [file2 ...] # Add pdf files honyomi edit book_id [options] # Edit book info honyomi help [COMMAND] # Describe available commands or on... honyomi image book_id1 [book_id2 ...] # Generate page images (Need pdftoppm) honyomi init # Create database in ENV['HONYOMI_D... honyomi list [book_id1 book_id2 ...] # List books honyomi move old_path new_path # Move the book path honyomi remove book_id1 [book_id2 ...] # Remove books honyomi search query # Search pages honyomi web # Web search interface