您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Replace All orange buttons with MyAnonamouse search.
// ==UserScript== // @name Audible Buttons ➜ MyAnonamouse Search // @namespace https://www.myanonamouse.net/u/253587 // @version 1.7 // @description Replace All orange buttons with MyAnonamouse search. // @include https://www.audible.* // @grant none // @run-at document-idle // @author Gorgonian // ==/UserScript== (function () { 'use strict'; const icons = { icon1: 'data:image/png;base64,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', }; const cleanAuthor = (name = '') => name.replace(/^(Sir|Dame|Dr\.?|Prof\.?|Mr\.?|Mrs\.?|Ms\.?)\s+/i, '') .replace(/,?\s*(Jr\.?|Sr\.?|III|IV|Ph\.?D\.?|M\.?D\.?|DPhil|EdD|Esq\.?|OBE|MBE|CBE|by)$/i, '') .trim(); const cleanTitle = (title = '') => title.replace(/\b(the complete|box\s*set|boxset|books|series|volume|audiobook|editor|by|1st\s*Edition)\b/gi, '') .replace(/[^\w\s]/g, '') .replace(/\s+/g, ' ') .trim(); function getSearchUrl(author = '', title = '') { const query = `${title} ${author}`.trim(); return `https://www.myanonamouse.net/tor/browse.php?tor[text]=${encodeURIComponent(query)}&tor[srchIn][title]=true&tor[srchIn][tags]=true&tor[srchIn][author]=true&tor[srchIn][narrator]=true&tor[srchIn][series]=true&tor[srchIn][fileTypes]=true&tor[srchIn][filenames]=true&tor[searchType]=all&tor[searchIn]=torrents&tor[cat][]=0&tor[main_cat]=13`; } function getTitleAndAuthor() { const ldJsonScripts = document.querySelectorAll('script[type="application/ld+json"]'); for (const script of ldJsonScripts) { try { const json = JSON.parse(script.textContent); const items = Array.isArray(json) ? json : [json]; for (const item of items) { if (item['@type'] === 'Audiobook') { return { title: item.name, author: cleanAuthor(item.author?.[0]?.name || ''), }; } } } catch (_) {} } return null; } const patchAdblButton = () => { const buttonSelectors = ['adbl-button', 'span.bc-button-primary']; const buttons = document.querySelectorAll(buttonSelectors.join(', ')); buttons.forEach(buttonEl => { const text = buttonEl.textContent?.trim(); if (!text || !/try|credit|confirm|play/i.test(text)) return; if (buttonEl.dataset.mamPatched) return; buttonEl.dataset.mamPatched = 'true'; let title = document.title.replace(/[-|–] Audible.*$/, '').trim(); const ldData = document.querySelector('script[type="application/ld+json"]'); if (ldData) { try { const json = JSON.parse(ldData.textContent); if (json && json['@type'] === 'Audiobook' && json.name) { title = json.name; } } catch (_) {} } let author = ''; const authorLabel = document.querySelector('.authorLabel'); if (authorLabel) { const authorLink = authorLabel.querySelector('a'); if (authorLink) { author = authorLink.textContent.trim(); } } author = cleanAuthor(author); title = cleanTitle(title); const searchUrl = getSearchUrl(author, title); if (/play/i.test(text)) { if (buttonEl.dataset.mamPlayHandled) return; buttonEl.dataset.mamPlayHandled = 'true'; const MAMlink = document.createElement('adbl-button'); MAMlink.href = searchUrl; MAMlink.target = '_blank'; MAMlink.variant = 'primary'; MAMlink.style.display = 'flex'; MAMlink.style.alignItems = 'center'; MAMlink.style.justifyContent = 'center'; MAMlink.style.fontWeight = 'bold'; MAMlink.addEventListener('click', (e) => { e.preventDefault(); e.stopImmediatePropagation(); window.open(searchUrl, '_blank'); }); const icon = document.createElement('img'); icon.src = icons.icon1; icon.alt = ''; icon.style.cssText = 'margin-right: 6px; height: 24px; width: auto; vertical-align: middle;'; const textNode = document.createTextNode('Search MyAnonamouse'); MAMlink.appendChild(icon); MAMlink.appendChild(textNode); buttonEl.insertAdjacentElement('afterend', MAMlink); return; } const MAMlink = document.createElement('adbl-button'); MAMlink.href = searchUrl; MAMlink.target = '_blank'; MAMlink.className = buttonEl.className; MAMlink.variant = 'primary'; const icon = document.createElement('img'); icon.src = icons.icon1; icon.alt = ''; icon.style.cssText = 'margin-right: 8px; height: 24px; width: auto; vertical-align: middle;'; const spanText = document.createElement('span'); spanText.textContent = 'Search MyAnonamouse'; spanText.style.cssText = 'vertical-align: middle;'; MAMlink.appendChild(icon); MAMlink.appendChild(spanText); buttonEl.replaceWith(MAMlink); }); }; function updateListLinks() { if (/\/(pd|ac)\//.test(location.pathname)) return; const buttons = document.querySelectorAll('a.bc-button-text[href*="/pd/"], a.bc-button-text[href*="/ac/"], button.bc-button-text[title*=" to cart"]'); buttons.forEach(button => { if (button.dataset.mamPatched) return; button.dataset.mamPatched = 'true'; let titleMatch = button.title?.match(/Add (.*?) to cart/); let rawTitle = ''; if (titleMatch) { rawTitle = titleMatch[1]; } else { const hrefMatch = button.href?.match(/\/(pd|ac)\/([^/?#]+)/); if (hrefMatch) { rawTitle = hrefMatch[2].replace(/-+/g, ' ').replace(/\bAudiobook\b/i, '').trim(); } else { return; } } const title = cleanTitle(rawTitle); let author = ''; let node = button.closest('li.bc-list-item'); while (node && !author) { const authorLabel = node.querySelector('.authorLabel'); if (authorLabel) { const authorLink = authorLabel.querySelector('a'); if (authorLink) { author = authorLink.textContent.trim(); break; } } node = node.parentElement?.closest('li.bc-list-item'); } author = cleanAuthor(author); const searchUrl = getSearchUrl(author, title); const MAMlink = document.createElement('a'); MAMlink.href = searchUrl; MAMlink.target = '_blank'; MAMlink.className = button.className; MAMlink.style.display = 'flex'; MAMlink.style.alignItems = 'center'; MAMlink.style.justifyContent = 'center'; MAMlink.style.fontWeight = 'bold'; MAMlink.dataset.mamPatched = 'true'; MAMlink.addEventListener('click', (e) => { e.preventDefault(); e.stopImmediatePropagation(); window.open(searchUrl, '_blank'); }); const icon = document.createElement('img'); icon.src = icons.icon1; icon.alt = ''; icon.style.cssText = 'margin-right: 6px; height: 24px; width: auto; vertical-align: middle;'; const text = document.createTextNode('Search MyAnonamouse'); MAMlink.appendChild(icon); MAMlink.appendChild(text); button.replaceWith(MAMlink); const observer = new MutationObserver(() => { if (!MAMlink.textContent.includes('Search MyAnonamouse')) { MAMlink.innerHTML = ''; MAMlink.appendChild(icon); MAMlink.appendChild(text); } }); observer.observe(MAMlink, { childList: true, subtree: true, }); }); const playSpans = document.querySelectorAll('span[id^="adbl-buy-box-play-now-button"]'); playSpans.forEach(span => { if (span.dataset.mamPatched) return; const playButton = span.querySelector('button.bc-button-text'); const label = playButton?.innerText?.trim(); if (label && /play/i.test(label)) { let title = ''; let author = ''; let container = span.closest('li.bc-list-item') || span.closest('[class*="productList"]') || document; const titleNode = container.querySelector('.bc-list-item-title a, h3 a'); const authorNode = container.querySelector('.authorLabel a'); if (titleNode) title = cleanTitle(titleNode.textContent.trim()); if (authorNode) author = cleanAuthor(authorNode.textContent.trim()); const searchUrl = getSearchUrl(author, title); const MAMlink = document.createElement('a'); MAMlink.href = searchUrl; MAMlink.className = 'bc-button-text'; MAMlink.target = '_blank'; MAMlink.dataset.mamPatched = 'true'; MAMlink.style.alignItems = 'center'; MAMlink.style.justifyContent = 'center'; MAMlink.style.fontWeight = 'bold'; MAMlink.addEventListener('click', (e) => { e.preventDefault(); e.stopImmediatePropagation(); window.open(searchUrl, '_blank'); }); const icon = document.createElement('img'); icon.src = icons.icon1; icon.alt = ''; icon.style.cssText = 'margin-right: 6px; height: 24px; width: auto; vertical-align: middle;'; const text = document.createTextNode('Search MyAnonamouse'); MAMlink.appendChild(icon); MAMlink.appendChild(text); const wrapper = document.createElement('span'); wrapper.className = 'bc-button bc-button-primary bc-button-small'; wrapper.id = 'searchmambutton'; wrapper.style.marginTop = '8px'; wrapper.appendChild(MAMlink); span.dataset.mamPatched = 'true'; span.insertAdjacentElement('afterend', wrapper); } }); document.querySelectorAll('span.adbl-library-listen-now-button').forEach(span => { if (span.dataset.mamPatched) return; const playButton = span.querySelector('button.bc-button-text'); const label = playButton?.innerText?.trim(); if (label && /listen now|play/i.test(label)) { let title = ''; let author = ''; let container = span.closest('.adbl-library-item') || span.parentElement; let current = container; while (current && (!title || !author)) { const titleNode = current.querySelector('.bc-size-headline3'); const authorNode = current.querySelector('.authorLabel a'); if (!title && titleNode) title = cleanTitle(titleNode.textContent.trim()); if (!author && authorNode) author = cleanAuthor(authorNode.textContent.trim()); current = current.parentElement; } console.log('TITLE:', title); console.log('AUTHOR:', author); const searchUrl = getSearchUrl(author, title); const MAMlink = document.createElement('a'); MAMlink.href = searchUrl; MAMlink.className = 'bc-button-text'; MAMlink.target = '_blank'; MAMlink.dataset.mamPatched = 'true'; MAMlink.style.alignItems = 'center'; MAMlink.style.justifyContent = 'center'; MAMlink.style.fontWeight = 'bold'; MAMlink.addEventListener('click', (e) => { e.preventDefault(); e.stopImmediatePropagation(); window.open(searchUrl, '_blank'); }); const icon = document.createElement('img'); icon.src = icons.icon1; icon.alt = ''; icon.style.cssText = 'margin-right: 6px; height: 16px; width: auto; vertical-align: middle;'; const text = document.createTextNode('MyAnonamouse'); MAMlink.appendChild(icon); MAMlink.appendChild(text); const wrapper = document.createElement('span'); wrapper.className = 'bc-button bc-button-primary bc-button-small'; wrapper.style.marginTop = '8px'; wrapper.appendChild(MAMlink); span.dataset.mamPatched = 'true'; span.insertAdjacentElement('afterend', wrapper); } }); } const runPatch = () => { const meta = getTitleAndAuthor(); if (!meta) return; patchAdblButton(); }; function observeListArea() { const listContainer = document.querySelector('[data-test="productList"]') || document.body; const observer = new MutationObserver(() => { updateListLinks(); }); observer.observe(listContainer, { childList: true, subtree: true, }); } function fullyReady(callback) { if (document.readyState === 'complete') { setTimeout(callback, 100); } else { window.addEventListener('load', () => setTimeout(callback, 100)); } } fullyReady(() => { updateListLinks(); runPatch(); observeListArea(); }); })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址