Audible Virtual Voice Remover

Remove Virtual Voice from Audible.com's browsing pages.

// ==UserScript==
// @name         Audible Virtual Voice Remover
// @namespace    https://www.briansbookblog.com
// @version      0.34
// @description  Remove Virtual Voice from Audible.com's browsing pages.
// @author       Brian @ briansbookblog.com
// @match        https://www.audible.com/*
// @match        https://www.audible.co.uk/*
// @match        https://www.audible.ca/*
// @grant        none
// @license      GPL-3.0-or-later
// ==/UserScript==

(function() {
    'use strict';

    const checkboxId = 'enableCheckbox';

    function modifyURL() {
    const checkbox = document.getElementById(checkboxId);

    if (checkbox) {
        const currentUrl = new URL(window.location.href);
        const keywordsParam = currentUrl.searchParams.get('keywords');
        const isChecked = checkbox.checked;

        if (isChecked) {
            if (keywordsParam && !keywordsParam.includes("-virtual_voice")) {
                currentUrl.searchParams.set('keywords', keywordsParam + ' -virtual_voice');
            } else {
                currentUrl.searchParams.set('keywords', '-virtual_voice');
            }
        } else {
            if (keywordsParam && keywordsParam.includes("-virtual_voice")) {
                currentUrl.searchParams.set('keywords', keywordsParam.replace(/-virtual_voice/g, ''));
            }
        }

        window.location.href = currentUrl.toString();
    }
}

    function addCheckbox() {
        const checkbox = document.createElement('input');
        checkbox.type = 'checkbox';
        checkbox.id = checkboxId;
        checkbox.style.marginRight = '5px';

        const label = document.createElement('label');
        label.appendChild(checkbox);
        label.appendChild(document.createTextNode(' Remove Virtual Voice'));
        label.addEventListener('change', modifyURL);

        const heading = document.createElement('h2');
        heading.id = 'a-virtualvoice';
        heading.className = 'bc-text bc-pub-relative bc-accordion-header-text bc-size-base bc-text-bold bc-box bc-box-padding-mini bc-accordion-header-inner bc-accordion-header-content';
        heading.appendChild(document.createTextNode('Virtual Voice'));


        const parentElement = document.querySelector('#left-1 > form > section > div.bc-accordion.bc-color-border-base.bc-accordion-borderless.bc-accordion-icon-position-');
        if (parentElement) {
            parentElement.insertBefore(label, parentElement.firstChild);
            parentElement.insertBefore(heading, parentElement.firstChild);
}

    }

    addCheckbox();
})();