// ==UserScript==
// @name Amazon Wishlist Format
// @namespace
// @description Format wishlist to table
// @include http*://*.amazon.*/hz/wishlist/ls/*
// @version 0.1
// @grant none
// @downloadURL https://update.greasyfork.icu/scripts/439921/Amazon%20Wishlist%20Format.user.js
// @updateURL https://update.greasyfork.icu/scripts/439921/Amazon%20Wishlist%20Format.meta.js
// ==/UserScript==
// Replicate an Amazon button
var button = document.createElement('span');
button.className = 'a-button a-button-primary';
button.setAttribute('style', 'cursor: pointer; float: right; margin-top: 1em;');
button.innerHTML =
'Format page as table';
var head = document.getElementById('wl-list-info');
head.insertBefore(button, head.firstChild);
// On clicking the button, format the page and create a table with the data
button.addEventListener('click', function () {
// Capture wishlist items
let c = document.querySelectorAll('.g-item-sortable');
let books = [];
for (let i = 0; i < c.length; i++) {
let book = {};
let id = c[i].getAttribute('data-itemid');
book['n'] = i;
book['id'] = id;
try {
book['title'] = c[i].querySelector('#itemName_' + id).title;
} catch (err) {
book['title'] = '';
}
try {
book['link'] = c[i].querySelector('#itemName_' + id).href;
} catch (err) {
book['link'] = '';
}
try {
book['author'] = c[i].querySelector('#item-byline-' + id).innerText;
} catch (err) {
book['author'] = '';
}
try {
book['image'] = c[i].querySelector('#itemImage_' + id + ' img').src;
} catch (err) {
book['image'] = '';
}
try {
book['price'] = c[i].querySelector('.itemUsedAndNewPrice').innerText;
} catch (err) {
book['price'] = '';
}
try {
book['itemAddedDate'] = c[i]
.querySelector('#itemAddedDate_' + id)
.innerHTML.match(/\<\/span\>(.+)/)[1];
} catch (err) {
book['itemAddedDate'] = '';
}
try {
book['asin'] = JSON.parse(
c[i].getAttribute('data-reposition-action-params')
).itemExternalId.match(/ASIN:(.+?)\|/)[1];
} catch (err) {
book['asin'] = '';
}
books.push(book);
}
// Clear site
document.body.innerText = '';
// Build table w/ wishilist items
function maketd(val) {
var td = document.createElement('td');
td.innerHTML = val.trim();
return td;
}
var table = document.createElement('table');
table.style.margin = '10px';
var head = document.createElement('tr');
table.appendChild(head);
var head_dateAdded = document.createElement('th');
head_dateAdded.innerText = 'Date Added';
head.appendChild(head_dateAdded);
var head_image = document.createElement('th');
head_image.innerText = 'Image';
head.appendChild(head_image);
var head_title = document.createElement('th');
head_title.innerText = 'Title';
head.appendChild(head_title);
var head_author = document.createElement('th');
head_author.innerText = 'Author';
head.appendChild(head_author);
var head_asin = document.createElement('th');
head_asin.innerText = 'ASIN/ISBN';
head.appendChild(head_asin);
var head_price = document.createElement('th');
head_price.innerText = 'Price';
head.appendChild(head_price);
var head_link = document.createElement('th');
head_link.innerText = 'Link';
head.appendChild(head_link);
for (var i = 0; i < books.length; i++) {
var tr = document.createElement('tr');
tr.appendChild(maketd(books[i].itemAddedDate));
tr.appendChild(maketd(`
`));
tr.appendChild(maketd(books[i].title));
tr.appendChild(
maketd(books[i].author.replace('by ', '').replace(/\(.+?\)/, ''))
);
tr.appendChild(maketd(books[i].asin));
tr.appendChild(maketd(books[i].price));
tr.appendChild(maketd(`Product Link`));
table.appendChild(tr);
}
document.body.appendChild(table);
});