Javascript: скачать со странички картинки по маске

Массовая скачивалка картинок со страниц, где такая функция не предусмотрена.
Для кастомизации достаточно изменить внутренности функции getImgsData.

function getImgsData() {
    var imgs = [];
    document.
        querySelectorAll('span[role="rowheader"]').
            forEach(function(item){
                var name = item.querySelector('a').innerHTML;
                imgs.push({src: "[some-prefix-here]/" + name, name: name});
            });
    return imgs;
}

function download(img) {
    var link = document.createElement("a");
    link.href = img.src;
    link.download = img.name;
    link.style.display = "none";
    var evt = new MouseEvent("click", {
        "view": window,
        "bubbles": true,
        "cancelable": true
    });

    document.body.appendChild(link);
    link.dispatchEvent(evt);
    document.body.removeChild(link);
    console.log("Downloading...");
}

/* Download all images in 'imgs'. Could be a function, returning the img array
 * Optionaly filter them by extension (e.g. "jpg") and/or
 * download the 'limit' first only  */
function downloadAll(imgs, ext, limit) {
    if (typeof imgs === "function") {
        imgs = imgs();
    }
    /* If specified, filter images by extension */
    if (ext) {
        ext = "." + ext;
        imgs = [].slice.call(imgs).filter(function(img) {
            var src = img.src;
            return (src && (src.indexOf(ext, src.length - ext.length) !== -1));
        });
    }

    /* Determine the number of images to download */
    limit = (limit && (0 <= limit) && (limit <= imgs.length))
        ? limit : imgs.length;

    /* (Try to) download the images */
    for (var i = 0; i < limit; i++) {
        var img = imgs[i];
        console.log("IMG: " + img.name + " (", img.src, ")");
        download(img);
    }
}

downloadAll(getImgsData, "", -1);

За основу взят этот скрипт - http://stackoverflow.com/questions/19830088/download-multiple-images-at-once-with-javascript

LEAVE A COMMENT