見出し画像

「Scrapboxを使用しないで」ブックマークレットでAmazonの書誌データをObsidianに貼れるようにしよう

Image by AI素材.com

注)
2023年10月1日段階で動かないっぽい。たぶん9/28になんかamazon側にあったっぽいので、いずれ何とかする(´・ω・`)

10月2日になんとかしたけど、多分日付取得ができたりできなかったり。

ObsidianにAmazonの書誌データを取得して貼る方法として、「Scrapboxを使用してブックマークレットをちゃんとjavaスプリクトで書いてAmazonの書誌データを取得」という記事は偉大なる先人様方がお書きになられていたのですが

「Obsidianにデータ貼るだけなのになんでよう知らんScrapboxなんてサービスにまで手を出さなあかんねん」

という需要は有るんじゃないかなぁと思ってブックマークレットだけでどうにかしようというお話(・ω・)つ旦


とりあえずamazonから書誌情報ほしいんよのお話

とりあえず、特に修正せずにAmazonの本のページから情報を貰う場合

ブックマークレット(ブックマーク)を作成する

Amazonの本のページでブックマークをクリックすると書誌情報が出てくるようにします。
手順的には下記のようになります。

1.どこのページでもいいのでブックマークを一旦追加します。
コレは名前から何から全部変更するのでどこのブックマークでも構いません。

2.出来たブックマークの上で右クリックして「編集」を選択します。

3.「URL」の部分を全消しして下記のくっそ長いコードを貼り付けます。

javascript: {var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.createTemplateTagFirstArg=function(a){return a.raw=a};$jscomp.createTemplateTagFirstArgWithRaw=function(a,b){a.raw=b;return a};$jscomp.arrayIteratorImpl=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};$jscomp.arrayIterator=function(a){return{next:$jscomp.arrayIteratorImpl(a)}}; $jscomp.makeIterator=function(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];if(b)return b.call(a);if("number"==typeof a.length)return $jscomp.arrayIterator(a);throw Error(String(a)+" is not an iterable or ArrayLike");}; (function(){var a=document.getElementById("productTitle"),b=document.getElementById("ebooksProductTitle");a=a?a.innerText.trim():b.innerText.trim();b=document.getElementById("productSubtitle");b=(b?""+b.textContent:"").split("\u2013 ").slice(1);var d=document.getElementById("ASIN");d=d?d.value:document.getElementsByName("ASIN.0")[0].value;var k="https://www.amazon.co.jp/exec/obidos/ASIN/"+d,c=window.getSelection(),h="";c&&c.toString()&&(c.toString().replace(/(\W+)( )(\W+)/g,"$1$3"),h="\n>"+c.toString().replace(/\n/g, "\n> "));c=document.getElementById("landingImage").getAttribute("src");var g=[],f=document.getElementsByClassName("author");f=$jscomp.makeIterator(f);for(var e=f.next();!e.done;e=f.next())e=e.value.textContent.replace(/\r?\n|\t/g,"").replace(/,/,"").replace(/\(.+\)/,"").replace(/ /g,""),g.push(""+e);a="---\ntitle: "+a+"\ndate: "+b+"\ntags:\n - Book\nauthor:\n - "+g.join("\n - ")+"\n---\n# "+a+"\n\n"+k+"\n\n"+c+"\n\nasin: "+d+"\n\nauthor: "+g.join(",")+"\n\n---\n\n"+h+"\n---\n\n\n";document.getElementById("bookDescription_feature_div").innerHTML= '<textarea style="height:500px">'+a+"</textarea>"})(); }
ここに貼り付ける。「Home」キーとか使うと全体選択しやすい。

4.「名前」の部分も自分でわかるように適当に変更します(なんでもいい)。

コレで作業は終了です。

実際に使ってみよう

使い方は簡単で

  • 取得したいamazonのページを開く

範囲指定をするとその部分の文章も取得される(はず)
  • そこで先程作ったブックマークをクリック!

  • 貼り付け用のデータが表示されるので、範囲指定コピーして新しいObsidianのノートに貼り付けます。

取得内容

プロパティ
title::書籍タイトルが入ります。
date: amazonで出るタイトルの後ろに日付が入っていれば取得されます。
tags: 一応「Book」というタグをブロックスタイルで記載してあります。
author: 著者が入ります。複数いる場合はカンマで区切ってある場合に限り、ブロックスタイルでちゃんと複数行になります。

本文
順に

  1. 頭#をつけた書籍タイトルが入って見出しになります。

  2. amazonのページのURLが入ります。

  3. 書影のURLが入ります。

  4. 一応asin番号

  5. 一応著者名の元データ

  6. 範囲指定した文は区切りバーの中に入ります。

多分発生する不具合

  • 書影リンクが多分「.(カンマ)」などの認識出来なくなるものが含まれたリンクになるはずなので、おすすめとしては

    1. 一旦貼り付ける。

    2. 取得した画像のURLをブラウザで表示する(コレはいけるはず)

    3. それをローカル保存

    4. それをノートにドラック&ドロップ

  • タイトルに「:(コロン)」とか有るとノート名とかにもしづらいので手作業で修正しておいたほうが何かと楽です。

  • 範囲指定しておいてからブックマークを押すと範囲指定分も取得できるしようですが、範囲指定の具合によって色々と入るのでもうそこは手動で直して(・ω・)つ旦

参考にさせていただいた偉大なる先人様方

[Obsidian] 読書メモを取るために、Bookmarklet を作ったの巻|しょっさん

そもそもの大本様
こちらの記事でできる方ならこちら参考にしたほうが1000%良い。

1000%おじさん(45歳)もツンデレでこう言いながらもそう思っとる

Closure Compiler Service

書いたスクリプトをブックマークレット用に変換してくれる

AmazonToScrapboxブックマークレット自分用 - Noratetsu's Room(のらてつ研究所)

昨日(10/01)動かなくなったときは本当に焦ったけど、こちらのサイト様の内容のお陰でなんとか修復できました。
感謝しきれませぬ。


ここまで書いておいてやっとこScrapboxを使うやり方書こうかなと言うお話(・ω・)つ旦
(いつになるか分からぬが)
(そもそもコレ以外の用途のScrapbox使ってないのもネック)


この記事が気に入ったらサポートをしてみませんか?