Imgur Mirror

Switches all imgur links to the mirror site http://kageurufu.net/imgur

当前为 2018-02-19 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Imgur Mirror
  3. // @namespace https://greasyfork.org/users/649
  4. // @version 1.0.16
  5. // @description Switches all imgur links to the mirror site http://kageurufu.net/imgur
  6. // @author Adrien Pyke
  7. // @include http*
  8. // @require https://cdn.rawgit.com/fuzetsu/userscripts/477063e939b9658b64d2f91878da20a7f831d98b/wait-for-elements/wait-for-elements.js
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14.  
  15. var regex = /imgur\.com\/(?!a\/|gallery\/)(?:r\/[a-z0-9_]+\/)?([a-z0-9]+)(\.+[a-z0-9]+)?/i;
  16. var extensions = ['.jpg', '.jpeg', '.png', '.gif', '.gifv', '.webm', '.mp4'];
  17.  
  18. var getNewLink = function(imgurLink, useGif) {
  19. var match = imgurLink.match(regex);
  20. if (match) {
  21. var file = match[1];
  22. var extension = match[2].toLowerCase();
  23. if (!extension || !extensions.includes(extension)) {
  24. extension = '.png';
  25. } else if (extension === '.gifv' || extension === '.gif' || extension === '.webm') {
  26. extension = '.mp4';
  27. }
  28. if (useGif && extension === '.mp4') {
  29. extension = '.gif';
  30. }
  31. return 'http://kageurufu.net/imgur/?' + file + extension;
  32. } else {
  33. return null;
  34. }
  35. };
  36.  
  37. waitForElems({
  38. sel: 'img,a',
  39. onmatch: function(node) {
  40. var isImg = node.nodeName === 'IMG';
  41. var prop = isImg ? 'src' : 'href';
  42. var newLink = getNewLink(node[prop], isImg);
  43. if(newLink) {
  44. node[prop] = newLink;
  45. if (node.dataset.hrefUrl) {
  46. node.dataset.hrefUrl = newLink;
  47. }
  48. if (node.dataset.outboundUrl) {
  49. node.dataset.outboundUrl = newLink;
  50. }
  51. }
  52. }
  53. });
  54. })();