您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Download photo(s) on worldcosplay.net
当前为
- // ==UserScript==
- // @name Worldcosplay download
- // @namespace http://devs.forumvi.com/
- // @description Download photo(s) on worldcosplay.net
- // @version 2.2.1
- // @icon http://i.imgur.com/gJLjIzb.png
- // @author Zzbaivong
- // @license MIT
- // @match http://worldcosplay.net/*/photos*
- // @match http://worldcosplay.net/*/favorites*
- // @match http://worldcosplay.net/photo/*
- // @match http://worldcosplay.net/tag/*
- // @match http://worldcosplay.net/search/photos?*
- // @match http://worldcosplay.net/collections/*
- // @match http://worldcosplay.net/character/*
- // @match http://worldcosplay.net/title/*
- // @match http://worldcosplay.net/photos
- // @match http://worldcosplay.net/popular
- // @match http://worldcosplay.net/ranking/good*
- // @match http://worldcosplay.net/*/photo/*
- // @match http://worldcosplay.net/*/tag/*
- // @match http://worldcosplay.net/*/search/photos?*
- // @match http://worldcosplay.net/*/collections/*
- // @match http://worldcosplay.net/*/character/*
- // @match http://worldcosplay.net/*/title/*
- // @match http://worldcosplay.net/*/photos
- // @match http://worldcosplay.net/*/popular
- // @match http://worldcosplay.net/*/ranking/good*
- // @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/*/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*
- // @require https://code.jquery.com/jquery-3.2.1.slim.min.js
- // @require https://greasyfork.org/scripts/18532-filesaver/code/FileSaver.js?version=164030
- // @require https://greasyfork.org/scripts/5392-waitforkeyelements/code/WaitForKeyElements.js?version=115012
- // @noframes
- // @connect self
- // @supportURL https://github.com/baivong/Userscript/issues
- // @run-at document-idle
- // @grant GM_xmlhttpRequest
- // @grant GM_download
- // ==/UserScript==
- /* global GM_download, waitForKeyElements */
- (function ($, window) {
- 'use strict';
- window.URL = window.URL || window.webkitURL;
- function downloadPhoto(el, url) {
- var photoName = url.replace(/.*\//g, '');
- if (typeof GM_download !== 'undefined') {
- GM_download({
- url: url,
- name: photoName,
- saveAs: false,
- onerror: function (err) {
- console.error(err);
- }
- });
- } else {
- 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');
- saveAs(blob, photoName);
- },
- onerror: function (err) {
- 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',
- 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>'
- });
- $btn.on('click', function (e) {
- e.preventDefault();
- e.stopPropagation();
- downloadPhoto(this, getImage3000($('#photoContainer').find('.img').attr('src')));
- });
- $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',
- 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)));
- });
- $this.find('.options').append($btn);
- $this.addClass('added-download-btn');
- });
- };
- addBtn();
- waitForKeyElements('.preview', addBtn);
- }
- })(jQuery, window);