Worldcosplay download

Download photo(s) on WorldCosplay.

Skript installieren?
Vom Ersteller vorgeschlagenes Skript

Ihnen könnte auch Image viewer gefallen.

Skript installieren

Du musst eine Erweiterung wie Tampermonkey, Greasemonkey oder Violentmonkey installieren, um dieses Skript zu installieren.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

Sie müssten eine Skript Manager Erweiterung installieren damit sie dieses Skript installieren können

(Ich habe schon ein Skript Manager, Lass mich es installieren!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name            Worldcosplay download
// @name:vi         Worldcosplay download
// @namespace       http://devs.forumvi.com/
// @description     Download photo(s) on WorldCosplay.
// @description:vi  Tải ảnh từ WorldCosplay.
// @version         3.1.6
// @icon            http://i.imgur.com/gJLjIzb.png
// @author          Zzbaivong
// @oujs:author     baivong
// @license         MIT; https://baivong.mit-license.org/license.txt
// @match           https://worldcosplay.net/*/photos*
// @match           https://worldcosplay.net/*/favorites*
// @match           https://worldcosplay.net/photo/*
// @match           https://worldcosplay.net/tag/*
// @match           https://worldcosplay.net/search/photos?*
// @match           https://worldcosplay.net/collections/*
// @match           https://worldcosplay.net/character/*
// @match           https://worldcosplay.net/title/*
// @match           https://worldcosplay.net/photos
// @match           https://worldcosplay.net/popular
// @match           https://worldcosplay.net/ranking/good*
// @match           https://worldcosplay.net/member/*/characters/*
// @match           https://worldcosplay.net/*/photo/*
// @match           https://worldcosplay.net/*/tag/*
// @match           https://worldcosplay.net/*/search/photos?*
// @match           https://worldcosplay.net/*/collections/*
// @match           https://worldcosplay.net/*/character/*
// @match           https://worldcosplay.net/*/title/*
// @match           https://worldcosplay.net/*/photos
// @match           https://worldcosplay.net/*/popular
// @match           https://worldcosplay.net/*/ranking/good*
// @match           https://worldcosplay.net/*/member/*/characters/*
// @require         https://code.jquery.com/jquery-3.3.1.slim.min.js
// @require         https://unpkg.com/[email protected]/dist/FileSaver.min.js
// @require         https://greasyfork.org/scripts/6250-waitforkeyelements/code/waitForKeyElements.js?version=23756
// @require         https://greasemonkey.github.io/gm4-polyfill/gm4-polyfill.js?v=a834d46
// @noframes
// @connect         self
// @connect         sakurastorage.jp
// @supportURL      https://github.com/lelinhtinh/Userscript/issues
// @run-at          document-idle
// @grant           GM.xmlHttpRequest
// @grant           GM_xmlhttpRequest
// @grant           GM.openInTab
// @grant           GM_openInTab
// ==/UserScript==

/* global waitForKeyElements */
(function($, window) {
  'use strict';

  window.URL = window.URL || window.webkitURL;

  function downloadPhoto(el, url) {
    var photoName = url.replace(/.*\//g, ''),
      $icon = $(el).find('.fa');

    $icon.addClass('fa-spinner fa-spin');

    GM.xmlHttpRequest({
      method: 'GET',
      url: url,
      responseType: 'blob',
      onload: function(response) {
        var blob = response.response;

        $(el)
          .attr({
            href: window.URL.createObjectURL(blob),
            download: photoName,
          })
          .off('click');
        $icon.removeClass('fa-spinner fa-spin').addClass('fa-download');

        saveAs(blob, photoName);
      },
      onerror: function(err) {
        $icon.removeClass('fa-spinner fa-spin').addClass('fa-times');
        console.error(err);
      },
    });
  }

  function getImage3000(url) {
    var hasMax = url.match(/\/max-(\d+)\//);
    if (hasMax) return url.replace(/-[\dx]+\./, '-' + hasMax[1] + '.');

    return url.replace(/-[\dx]+\./, '-3000.');
  }

  if (/^(\/[a-z-]+)?\/photo\/\d+$/.test(location.pathname)) {
    var $btn = $('<a>', {
        href: '#download',
        class: 'download-this-photo',
        title: 'Click to download this image\nRight Click to open in new tab',
        html:
          '<div class="side_buttons" style="right: 250px;"><div class="like-this-photo button fave fa fa-download"><div class="effect-ripple"></div></div></div>',
      }),
      img = $('#photoContainer')
        .find('.img')
        .attr('src');
    $btn
      .on('click', function(e) {
        e.preventDefault();
        e.stopPropagation();
        downloadPhoto(this, getImage3000(img));
      })
      .on('contextmenu', function(e) {
        e.preventDefault();
        e.stopPropagation();
        GM.openInTab(getImage3000(img));
      });
    $btn.insertAfter('.side_buttons');
  } else {
    var addBtn = function() {
      $('.preview')
        .not('.added-download-btn')
        .each(function() {
          var $this = $(this),
            $btn = $('<a>', {
              href: '#download',
              class: 'download-this-photo',
              title: 'Click to download this image\nRight Click to open in new tab',
              html:
                '<div class="item likes" style="top: 50px;"><span class="like-this-photo"><i class="fa fa-download"></i><span class="effect-ripple"></span></span></div>',
            });
          $btn
            .on('click', function(e) {
              e.preventDefault();
              e.stopPropagation();
              downloadPhoto(
                this,
                getImage3000(
                  $this
                    .find('.photo_img')
                    .css('backgroundImage')
                    .slice(5, -2)
                )
              );
            })
            .on('contextmenu', function(e) {
              e.preventDefault();
              e.stopPropagation();
              GM.openInTab(
                getImage3000(
                  $this
                    .find('.photo_img')
                    .css('backgroundImage')
                    .slice(5, -2)
                )
              );
            });
          $this.find('.options').append($btn);
          $this.addClass('added-download-btn');
        });
    };
    addBtn();

    waitForKeyElements('.preview', addBtn);
  }
})(jQuery, window);