国立国会図書館オンラインのISBN検索結果から著者名とタイトルを取得するブックマークレット GetAuthorTitleNDL

#1. はじめに

[GoogleのISBN検索結果から著者名とタイトルを取得するブックマークレット GetAuthorTitle - Qiita](https://qiita.com/mayo00/items/4cfba983de23b0b56369)の国立国会図書館オンライン版を作りました。

国立国会図書館オンラインは自動操作については書かれていないように見えますが、いちおう自動検索せずに、手動検索＋ブックマークレット実行という流れにしています。

Google版と比べて、長い著者名でも省略されませんが、マイナーな本が検索に引っかかりません。

あまり省力化できませんが同人誌用も作成しました。
[駿河屋の商品ページまたは買取商品ページから同人誌のサークル名とタイトルを取得するブックマークレット GetCircleTitle - Qiita](https://qiita.com/mayo00/items/556c2c3d7a14759d088f)

![GetAuthorTitleNDL_higurash2-2i.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/534247/9c1f0cd7-1371-f702-10a3-49090b5e1947.png)


#2. ソース

ブックマークレット用1行版

```GetAuthorTitleNDL.js
javascript:(function(){/*GetAuthorTitleNDL v1.02*/var i,j,div,span,s1,sa="",st="",sp,s;for(i=0;div=document.getElementsByTagName("div")[i];i++){if(div.className=="mainPane ng-scope"){for(j=0;span=div.getElementsByTagName("span")[j];j++){if(span.className=="ng-binding ng-scope"){if(st==""){st=span.textContent;}}else if(span.className=="publication ng-binding"){sp=span.textContent;s1=/([^\.]*)\./.exec(sp);if(s1!==null){sa=s1[1];if(sa.substr(-1,1)=="著"){sa=sa.substr(0,sa.length-1);sa=sa.trim();}}}}break;}};if(sa==""&&st==""){alert("none")}else{s="["+sa+"]%20"+st;if(navigator.clipboard){navigator.clipboard.writeText(s).then(()=>alert(s),()=>alert(s+"%20をクリップボードにコピーできませんでした。"))}}})()
```

整形版

```GetAuthorTitleNDL.js
javascript:(function(){
  /* GetAuthorTitleNDL v1.02 */
  var i, j, div, span, s1, sa="", st="", sp, s;
  for (i = 0; div = document.getElementsByTagName("div")[i]; i++) {
    if (div.className == "mainPane ng-scope") {
      for (j = 0; span = div.getElementsByTagName("span")[j]; j++) {
        if (span.className == "ng-binding ng-scope") {
          if (st == "") {
            st = span.textContent;
          }
        } else if (span.className == "publication ng-binding") {
          sp = span.textContent;
          s1 = /([^\.]*)\./.exec(sp);
          if (s1 !== null) {
            sa = s1[1];
            if (sa.substr(-1, 1) == "著") {
              sa = sa.substr(0, sa.length - 1);
              sa = sa.trim();
            }
          }
        }
      }
      break;
    }
  };
  if (sa == "" && st == "") {
    alert("none")
  } else {
    s = "[" + sa + "]%20" + st;
    if (navigator.clipboard) {
      navigator.clipboard.writeText(s).then(
        ()=>alert(s),
        ()=>alert(s + "%20をクリップボードにコピーできませんでした。")
      )
    }
  }
})()
```

#3. 使用方法

まずブックマークレットとしてブラウザのお気に入りに登録して下さい。

[国立国会図書館オンライン](https://ndlonline.ndl.go.jp/)でISBNで検索し、結果が表示されたらブックマークレットを実行して下さい。
「[著者名] タイトル」の形でアラートを表示しつつクリップボードにコピーされます。
引っかからない場合、「none」とアラートを表示します。

#4. 解説

国立国会図書館オンライン検索結果に合わせて著者名とタイトルを正規表現で取得します。

Windows 10＋Google Chrome 92で動作確認しています。

#5. 実行結果比較

1行目：ISBN
2行目：Google版
3行目：国立国会図書館オンライン版

9784863793460
[emily] くりぃみぃパイ
なし

9784864368346
[アシオ] はるか色ミダラ
[アシオ] はるか色ミダラ

9784088807232
[吾峠呼世晴] 鬼滅の刃 1
[吾峠呼世晴] 鬼滅の刃 1

9784048951586
[Hong Kong Walker編集部【編】] 香港
[Hong Kong Walker編集部 編, 増田真結子 訳] 香港 : おいしさ満足!135店 : 「香港ウォーカー」編集部がオススメする!

9784757515901
[鈴 ...] ひぐらしのなく頃に 鬼隠し編1巻 / 竜騎士07【原作・監修】
[竜騎士07 原作・監修, 鈴羅木かりん 作画] ひぐらしのなく頃に 鬼隠し編 1

9784862975164
[かわな] 淫蛇奇行〜異常愛に乱れ狂う乙女〜
なし

9784799008737
[草野ゆぅ] あなたの為だから 精神奴隷彼女
[草野ゆぅ] あなたの為だから : 精神奴隷彼女

9784894212541
[あきふじさとし] つながれた明日 ひきさかれた未来
[あきふじさとし] つながれた明日ひきさかれた未来

9784925148207
[] マジカルスティック
[フォックス出版, 2001] マジカルスティック : 魔女っ娘アンソロジー

9784776791300
[赤丸 ...] 巫女さんVSメイドさん あなたにご奉仕しちゃいます！
[宙出版, 2005] 巫女さんvsメイドさん : アナタにご奉仕しちゃいますっ!

9784575835908
[あづまゆき【著】 ＜電子版 ...] 柊小学校恋愛くらぶ vol.2
なし

9784047126015
[] ちぇり×ちぇり CHERRY×CHERRY2
[そりむらようじ [著]] ちぇり×ちぇり 2

9784253231473
[速野悠二 ＜電子版＞] みのりスキャンダル 2
[速野悠二] みのりスキャンダル 2

9784757545090
[藤原ここあ ...] かつて魔法少女と悪は敵対していた。 2
[藤原ここあ] かつて魔法少女と悪は敵対していた。 volume 2

9784048681698
[鎌池和馬] とある科学の超電磁砲 04 / 冬川基
[鎌池和馬 原作, 冬川基 作画] とある科学の超電磁砲 (レールガン) : とある魔術の禁書目録外伝 4

#6. 改版履歴

2022/01/03 v1.02 クリップボードにコピーされなくなっていたのを修正。(Promiseを受けていなかったのを修正)
2021/08/05 v1.01 著者名の右に半角スペースが残るのを削除。
2021/08/05 v1.00 初版