Amazonからブックマークでページを作るとき内容紹介も取り込む
2018/10/27発案
https://gyazo.com/246de6790faab32376ff6ebaa09374b4
https://gyazo.com/58d83fe35db41ec898db62434bd331b7
AmazonページのCSSが、この部分に特別なClassかIDを当ててれば可能。 とりあえず紙の本
https://gyazo.com/a71d1177615414ebeae8e5dfe8396805
productDescription が親要素のID。これを取得して中身をゲットすれば、たぶんいける。
Kindle版は
https://gyazo.com/845c104c1eaefe37b15e1a4ce9899b25
productDescription が親要素のID
productDescriptionWrapperが本文の中身
両方存在するし、同じID名。ただし、中身の作り方が違う。厄介。
とりあえず、まずproductDescriptionの中身を取得する、というコードをJavaScriptで書くのが最初の一歩になりそう。 2018/10/28 01:43
内容紹介の部分がiflame内部にあるのに気がつかずに、盛大に躓いていた。
とりあえず、取り込めたが、本によってはすごく内容が長い。
文字数カウントしてカットする手もある
あるいは内容を取得せず、そのとき選択しているテキストがあればそれを取り込む機能を作り、テキストを自分で選んだ方がいいかもしれない。
code:script.js
javascript:(function(){
var p = document.getElementById("productTitle");
if (!p) var p = document.getElementById("ebooksProductTitle");
var d = document.getElementById("productDescription");
if (!d) {
var subdoc = document.getElementById("product-description-iframe").contentWindow.document;
var d = subdoc.getElementById("productDescription");
}
var d1 = d.getElementsByTagName("p")0; if (!d1) var d1 = d.getElementsByClassName("productDescriptionWrapper")0; var d2 = d1.innerText.replace(/\n/g,'\n>');
var title=window.prompt('Scrap "Amazon" to your scrapbox.', p.innerHTML);
if (!title) return;
title = '『'+ title +'』';
var imagecontainer=document.getElementById("imageBlockContainer");
if (!imagecontainer) var imagecontainer = document.getElementById("ebooksImageBlockContainer");
let image = imagecontainer.getElementsByTagName("img")0; let imageurl = image.getAttribute("src");
let pub = [];
var c = document.getElementsByClassName('author');
for (g = 0; g < c.length ;g++){
var at = cg.innerText.replace(/,/,''); var pu = at.match(/\(.+\)/);
var ct = at.replace(/\(.+\)/,'').replace(/ /g,'');
pub.push(pu + ' + ct + '');
}
var body=encodeURIComponent(lines);
})();
以下が標準ブックマークレット用
code:script_min.js
javascript:(function(){var p=document.getElementById("productTitle");if(!p)var p=document.getElementById("ebooksProductTitle");var d=document.getElementById("productDescription");if(!d){var subdoc=document.getElementById("product-description-iframe").contentWindow.document;var d=subdoc.getElementById("productDescription");}var d1=d.getElementsByTagName("p")0;if(!d1)var d1=d.getElementsByClassName("productDescriptionWrapper")0;var d2=d1.innerText.replace(/\n/g,'\n>');var title=window.prompt('Scrap "Amazon" to your scrapbox.', p.innerHTML);if(!title)return;title='『'+title+'』';var imagecontainer=document.getElementById("imageBlockContainer");if(!imagecontainer) var imagecontainer = document.getElementById("ebooksImageBlockContainer");let image=imagecontainer.getElementsByTagName("img")0;let imageurl=image.getAttribute("src");let pub=[];var c=document.getElementsByClassName('author');for (g=0;g<c.length;g++){var at=cg.innerText.replace(/,/,'');var pu=at.match(/\(.+\)/);var ct=at.replace(/\(.+\)/,'').replace(/ /g,'');pub.push(pu+' + ct + '');}var lines=''+imageurl+' '+window.location.href+'\n'+pub.join(' ')+'\n>'+d2+'\n#本';var body=encodeURIComponent(lines);window.open('https://scrapbox.io/rashitaobj/'+encodeURIComponent(title.trim())+'?body='+body)})(); ご利用の際は、https://scrapbox.io/rashitaobj/の部分を、ご自分のプロジェクトのURLに差し替えてください。
ブランチを切る