Raw Source
gellweiler / Amazon Cloud Player unchain download button

// ==UserScript==
// @name        Amazon Cloud Player unchain download button
// @namespace   http://sebastian.gellweiler.net
// @version     2.0.1
// @grant       none
//
// @downloadURL https://userscripts.org/scripts/source/426973.user.js
// @updateURL https://userscripts.org/scripts/source/426973.meta.js
//
// @include https://www.amazon.*/gp/dmusic/cloudplayer*
// @include http://www.amazon.*/gp/dmusic/cloudplayer*
//
// ==/UserScript==
(function () {
    
    // Hide annoying cloud player advertisments on windows
    // and hide download button.
    jQuery(document).ready(function () {
jQuery('<style type="text/css">' +
    '#messageBanner, #cloudPlayerOverlay, .download' + "\n" +
    '{display: none !important; }' + "\n" +
'</style>').appendTo("head");
    });
    
    function bypassDownloader() {
        // Remove annoying popups and overlay.
        setTimeout(function() {
           jQuery('.ap_popover').hide();
           jQuery('#ap_overlay').hide();
        }, 200);

        // Submit download form.
        jQuery('#downloader').submit();       
    }

    /**
     * Replace old download links with new ones.
     */
    function downloadLinks() {
        // Try to replace download button in toolbar.
        // Ignore buttons that have been already replaced.
        var db = jQuery('.download:not(".replacedByNew")');
        db
        .addClass('replacedByNew')
        .after(
            jQuery('<span>', {                    
                text: db.text(),
                class: 'decoration buttonCenter',
                
                click: function () {
                    // Click on the old download button
                    // to submit the download form.
                    db.click();
                    // Only workaround amazon downloader if multiple songs are selected.
                    if (jQuery('input[itemtype=song]:checked').length > 1) {
                        bypassDownloader();
                    }
                }
            })
        );
        
        // Skip stupid installing cloud player advertisment on windows
        // when downloading single tracks.
        jQuery('.skipInstall').click();
        
        // Hide download album links because they do not work.
        jQuery('[href^="#download\/album"]').hide();
    }

    // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js
    jQuery.noConflict();

    // Constantly check if downloads links are replaced on the pages.
    setInterval(function () {
        downloadLinks();
    }, 1000);
}());