「次に読む本」をストックする(4)

前回XTMemoを使って読書チェックノートをつくる方法を紹介しましたが、XTMemoの作者towofuさん直々に、bk1の書籍詳細ページからワンクリックでXTMemoへ書籍データを追加するSleipnir用のスクリプトを書いていただけました(^^)

  • XTMemo(XTMemoのホームページ)

ぼくが報告しているように、このスクリプトはSleipnir2でもそのまま動きます。
まず、このスクリプトをそのままメモ帳などにコピった後、12行目「var XTM = "ほにゃらら";」となっている部分を自分のコンピュータのXTMemoのパスに変えます。フォルダ区切り記号“\”は「\\」と記入しなければなりません。次に14行目「var DestFile = "ほにゃらら";」となっている部分に、書籍データを追加すべきファイル名を指定します。前回説明したぼくの例では「var DestFile = "book mark";」となります。以上の変更or確認の後、このスクリプトを「bk1からXTMemoへ.js」みたいな名前で保存してください。そして、Sleipnirの「スクリプトスクリプトの整理」から適当なフォルダにそのスクリプトを入れると使えるようになります。
使い方は簡単。メモに追加したい必要範囲を選択し、「スクリプト」メニューからこのスクリプトの名前をクリック。「カテゴリを入力してください」というメッセージが出るので、その内容を確認します。ここに入ったものが書籍メモのカテゴリとして登録されますので、いらないと思うものを削ったり、必要だと思うものを追加したりしてください。OKボタンか、Enterを押すと確定されます。以上の操作(選択1回、クリック2回、Enter1回)でXTMemoに書籍データが追加されます。
いや〜、ほんとラクちん。towofuさん、ありがとうございました(^^)


というわけで例によって少し欲が出たので、このスクリプトの一部を自分向けにいじってみます。33行目、本のタイトルを格納する変数title。次のように変更しました*1

var title = doc.getElementsByTagName("H1").item(0).innerText.replace(/\r\n.+/, "").replace(/\s*$/, "");

towofuさんのスクリプトはデフォルトでページのタイトルから書名を抽出するようになっています。この違いは、具体例を出すとわかりやすいでしょう。

この書籍詳細ページでは、デフォルトで「ホラーハウス社会」が書名として設定されます。ぼくの改変版では「ホラーハウス社会 (講談社+α新書)」となります。

もう一例。こちらはデフォルトで「文明崩壊」、改変版では「文明崩壊 上」となります。
bk1の書籍詳細ページの記法では、TITLEタグに書名の根幹を表示、H1タグの1行目に書名+シリーズ名orシリーズ番号(1・2・3とか上・中・下とか)が含まれ、2行目に副題が含まれる、というようになっています。ぼくはH1タグの1行目がほしかったので、先のような指定の仕方になりました。
また、35行目の選択文字列の内容も少々いじったのですが、さすがにここのコードは汚くてお見せできません(^^;


ぼくはJavaScriptをほとんど知りません。
文法はC系統なのでわかるんですが、プログラミングは大学の一般教養でかじったレベルですし、オブジェクト指向言語をまともに扱ったことがないので、あの「クラスライブラリ」というのがどうにも、いったいどこに自分の求める関数があるのかさっぱり見当もつかず途方に暮れる有様なのです。「Ajax」というフレーズが出てくるまでJavaScriptはぼくにとってウェブページ修飾用の“お飾り言語”というイメージだったので、習得する意欲がわきませんでしたしね。
でも、今回のことでとっかかりができたので、ちょっとがんばってみようと思いました。

*1:2006-03-01追記:replace一回で済ませられないかと思ったのですが、こんな感じになります。「.replace(/^(.*\S+)\s+(\r\n.+)?$/, "$1")」……ムリにまとめなくてもいいや、と思いました(^^;