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();