Worldcosplay download

Download photo(s) on worldcosplay.net

当前为 2016-03-05 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Worldcosplay download
  3. // @namespace http://devs.forumvi.com/
  4. // @version 1.1.0
  5. // @description Download photo(s) on worldcosplay.net
  6. // @author Zzbaivong
  7. // @icon http://worldcosplay.net/assets/logo-94d9f272d8eaf6faf23afb3513259e3e.png
  8. // @match http://worldcosplay.net/photo/*
  9. // @match http://worldcosplay.net/member/*/photos*
  10. // @match http://worldcosplay.net/member/*/favorites*
  11. // @match http://worldcosplay.net/tag/*
  12. // @match http://worldcosplay.net/search/photos?*
  13. // @require http://code.jquery.com/jquery-2.2.1.min.js
  14. // @require https://openuserjs.org/src/libs/baivong/FileSaver.min.js
  15. // @require https://greasyfork.org/scripts/6250-waitforkeyelements/code/waitForKeyElements.js?version=23756
  16. // @run-at document-end
  17. // @grant GM_xmlhttpRequest
  18. // ==/UserScript==
  19.  
  20. (function($, window, document, undefined) {
  21. "use strict";
  22.  
  23. window.URL = window.URL || window.webkitURL;
  24.  
  25. function downloadPhoto(el, url) {
  26. var photoName = url.replace(/.*\//g, "");
  27. GM_xmlhttpRequest({
  28. method: "GET",
  29. url: url,
  30. responseType: "blob",
  31. onload: function(response) {
  32. var blob = response.response;
  33. saveAs(blob, photoName);
  34. $(el).attr({
  35. href: window.URL.createObjectURL(blob),
  36. download: photoName
  37. }).removeAttr("onclick");
  38. },
  39. onerror: function(err) {
  40. console.error(err);
  41. }
  42. });
  43. }
  44.  
  45. if (!location.pathname.indexOf("/photo/")) {
  46.  
  47. var $btn = $("<a>", {
  48. href: "#download",
  49. "class": "download-this-photo",
  50. html: '<div class="side_buttons" style="right: 220px;"><div class="like-this-photo button fave fa fa-download"><div class="effect-ripple"></div></div></div>'
  51. });
  52. $btn.on("click", function(e) {
  53. e.preventDefault();
  54. e.stopPropagation();
  55. downloadPhoto(this, $("#photoContainer").find(".img").attr("src"));
  56. });
  57. $btn.insertAfter(".side_buttons");
  58.  
  59. } else {
  60.  
  61. var addBtn = function() {
  62. $(".preview").not(".added-download-btn").each(function() {
  63. var $this = $(this),
  64. $btn = $("<a>", {
  65. href: "#download",
  66. "class": "download-this-photo",
  67. 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>'
  68. });
  69. $btn.on("click", function(e) {
  70. e.preventDefault();
  71. e.stopPropagation();
  72. downloadPhoto(this, $this.find('.photo_img').css('backgroundImage').slice(5, -2).replace("sq300/", ""));
  73. });
  74. $this.find('.options').append($btn);
  75. $this.addClass("added-download-btn");
  76. });
  77. };
  78. addBtn();
  79.  
  80. waitForKeyElements(".preview", addBtn);
  81.  
  82. }
  83.  
  84. })(jQuery, window, document);