52 sync.vim (4-2) sync-isbn.vim を作ってみた
sync.vim を使って ISBN から本の情報を取得するスクリプト「sync-isbn.vim」を書いてみた。
見てのとおり一日一冊(を目指して)本を読んで感想を書いてるんだけど、はてなの isbn 記法に :detail をつけたやつがうらやましかった。howm-mode.vim で使いたくなった。それがきっかけ。
so ~\vimplugins\sync\sync-isbn.vim function! HowmActionlockSyncIsbn(str, head) let code = input('ISBN コードを入力→') if code !~ '\c\d\{9}[0-9x]' && code !~ '\d\{13}' echoerr "'" . code . "' は ISBN コードじゃないよ!" return endif let l = line('.') let s = '{sync:isbn code=' . code . '}' call setline(l, s) call append(l, '{/sync}') endfunction function! HowmActionlockSyncIsbnPull(str, head) :SyncPull endfunction if !exists('g:howm_actionlock_list') | let g:howm_actionlock_list = [] | endif call add(g:howm_actionlock_list, {'func': function('HowmActionlockSyncIsbn'), 'pat': '^{sync:isbn}\s*$'}) call add(g:howm_actionlock_list, {'func': function('HowmActionlockSyncIsbnPull'), 'pat': '^{sync:isbn\s.*}\s*$'})
パターンとか結構適当だけど、動くのでおk。
= {sync:isbn} [2008-02-21 16:01]
こんな風にしておいて、 {sync:isbn] にカーソルを置いて ENTER を押すと、ISBN の入力が求められる。とりあえず、ここでは天涯の砦の ISBN を入力する。4152087536
= {sync:isbn code=4152087536} {/sync} [2008-02-21 16:01]
さらに、{sync:isbn code=4152087536} で ENTER。以下のように適当に情報をとってくる。
= {sync:isbn code=4152087536 last_sync=2008.02.21,16:04} 天涯の砦 (ハヤカワSFシリーズ・Jコレクション) 作者: 小川一水 出版社/メーカー: 早川書房 発売日: 2006/08 メディア: 単行本 http://d.hatena.ne.jp/asin/4152087536 http://www.amazon.co.jp/exec/obidos/ASIN/4152087536 http://images-jp.amazon.com/images/P/4152087536.09.MZZZZZZZ.jpg {/sync} [2008-02-21 16:01]
curl で、はてなにアクセスして情報をとってくる。ISBN の解釈とか amazon の URL とか適当。ISBN-13 には、はてながリダイレクトしてくれる範囲で対応してる。チェックディジットとか確認してない。amazon の URL の規則とか知るわけない。教えてくれたら修正しま。
というわけで、ダウンロードは以下の URL 。右クリックとかで保存すればいいと思う。vimrc で :so とかで読み込むといいと思う。上の設定を参考にするといいと思う。まあ、うん。いいと思う。