Add "Search MAM" button to Amazon
// ==UserScript==
// @name Amazon search MAM
// @namespace https://greasyfork.org/en/users/78880
// @version 2.0
// @description Add "Search MAM" button to Amazon
// @author Slengpung & GardenShade
// @include https://www.amazon.tld/*
// @include https://smile.amazon.tld/*
// @grant none
// ==/UserScript==
const amazonSearchMam = async () => {
// Look for the Kindle/Audio/Physical book swatch
const bookPageCheck = async () => {
if(document.querySelector('#tmmSwatches')){
console.log("Looks like a book! Injecting MAM box...");
return true;
}else{
throw new Error("This does not look like a book; won't inject search button!")
}
}
// Generate the new searchbox element
const makeSearchbox = (tar,label,search) => {
// Create the Searchbox
const searchbox = document.createElement('span');
searchbox.id = 'asm_searchbox';
searchbox.className = tar.className;
// Create child elements
const inner = document.createElement('span');
const text = document.createElement('span');
inner.className = 'a-button-inner';
inner.style.background = 'linear-gradient(to bottom,rgb(225,222,116),#e0c21a)';
text.className = 'a-button-text';
text.innerHTML = `${label}`;
// Attach elements to the document
searchbox.appendChild(inner);
inner.appendChild(text);
tar.insertAdjacentElement('afterend', searchbox);
// Add interaction
searchbox.addEventListener('click', () => window.open(buildSearch(search)))
}
// Generate the search URL
const buildSearch = (bookTitle) => {
return `https://www.myanonamouse.net/tor/browse.php?tor[srchIn][title]=true&tor[text]=${bookTitle}`;
}
// When we know we're on a book page, fetch book details
await bookPageCheck()
.then(() => {
const title = document.querySelector('#productTitle').textContent;
const author = ''; // Not used yet
const target = document.getElementById("submit.buy-now");
makeSearchbox(target,'Search MAM',title);
})
.catch(e => console.warn(e));
}
// Run the script
amazonSearchMam();