megumingorz
4/16/2018 - 12:32 PM

KOKEMUSUMORI-downloader.user.js

// ==UserScript==
// @name         苔むす森の魂印師ダウンローダー
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://progallery.wix.com/gallery.html*
// @grant        none
// @require      https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';

    $(document).ready(function(){
        var downloadAreaHtml = '<div class="download" style="background: #efefef; border: 1px solid #858585; border-radius: 4px; padding: 15px 20px; margin: 20px; font-size: 14px; line-height: 2;"></div>';
        $('body').prepend(downloadAreaHtml).append(downloadAreaHtml);

        if(window!=parent){
            //iframeで埋めこまれた場合の処理
            var url = location.href;
            $('.download').append('<a href="'+url+'" target="_blank" style="color: #858585; margin-right: 10px;">Open iframe</a>');
            return false;
        } else {
            setTimeout(function(){
                createLink();
            }, 2000);
        }

    });

    function createLink() {
        $('img').each( function(i){
            if (i == $('img').length-1) {
                return;
            }

            var pageNum = i+1;
            var filename = pageNum+'.jpg';
            var url = this.src.replace(/\/v1.*$/g, "");
            var $link = $('<a href="#" style="color: #858585; margin-right: 10px;">'+filename+'</a>');
            $link.on('click', function(e){
                e.preventDefault();
                downloadFile(url, filename);
            });
            $('.download').append($link);
        } );
    }

    function downloadFile(url, filename) {
        var xhr = new XMLHttpRequest();
        xhr.open("GET", url, true);
        xhr.responseType = "blob";
        xhr.onload = function (oEvent) {
            var blob = xhr.response;
            if (window.navigator.msSaveBlob) {
                // IEとEdge
                window.navigator.msSaveBlob(blob, filename);
            }
            else {
                // それ以外のブラウザ
                var objectURL = window.URL.createObjectURL(blob);
                var link = document.createElement("a");
                document.body.appendChild(link);
                link.href = objectURL;
                link.download = filename;
                link.click();
                document.body.removeChild(link);
            }
        };
        xhr.send();
    }

})();