您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Does some magic with images.
当前为
- // ==UserScript==
- // @name Image Wizard
- // @namespace https://github.com/GrumpyCrouton/Userscripts
- // @version 1.5
- // @description Does some magic with images.
- // @author GrumpyCrouton
- // @match *://*.stackoverflow.com/*
- // @match *://*.stackexchange.com/*
- // @match *://*.superuser.com/*
- // @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
- // @require https://gf.qytechs.cn/scripts/48306-waitforkeyelements/code/waitForKeyElements.js?version=275769
- // @grant GM.xmlHttpRequest
- // @grant GM_addStyle
- // @grant GM.getValue
- // ==/UserScript==
- var proxy = "http://service.bypass123.com/index.php";
- var replaceFrom = ["imgur.com", "facebook.com"];
- var processEvery = 0;
- //proces every x seconds (Useful until I can figure out how to detect when a new image or link is added to DOM. Set to 0 to disable.
- //There is an automated way built into the script, processEvery is deprecated since v1.5 but can still be used if the automated method is not working for you.
- /* DEBUG */
- var debugImg = false;
- var debugA = false;
- var debug = false;
- var supportedExtensions = ["png", "jpg", "gif"];
- (function() {
- process();
- function handleImgTag() {
- $('img').each(function() {
- url = $(this).prop('src').split('?').shift();
- extension = url.split('.').pop();
- if (replaceFrom.some(function(v) {
- return url.indexOf(v) >= 0;
- }) && supportedExtensions.some(function(v) {
- return url.indexOf(v) >= 0;
- })) {
- if (!$(this).attr('processed')) {
- $(this).attr('processed', true);
- replaceImg(url, $(this));
- }
- return true;
- }
- if (debugImg) console.log("No URL match in <img>: " + url);
- });
- }
- function handleATag() {
- $('a').each(function() {
- url = $(this).prop('href').split('?').shift();
- extension = url.split('.').pop();
- if (replaceFrom.some(function(v) {
- return url.indexOf(v) >= 0;
- }) && supportedExtensions.some(function(v) {
- return url.indexOf(v) >= 0;
- })) {
- if ($(this).has('img').length < 1) {
- replaceA(url, $(this));
- return true;
- }
- }
- if (debugA) console.log("No URL match in <a>: " + url);
- });
- }
- function replaceImg(src, element) {
- GM.xmlHttpRequest({
- method: "POST",
- url: proxy,
- data: "url=" + src,
- headers: {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- onload: function(response) {
- element.prop('src', response.finalUrl);
- element.prop('alt', "Image replaced by Image Wizard");
- parent_link = element.parent("a");
- if (parent_link.length) {
- if (parent_link.prop('href') == src) {
- parent_link.prop('href', response.finalUrl);
- parent_link.prop('target', "_blank");
- }
- } else {
- element.wrap("<a href='" + response.finalUrl + "' target='_blank'></a>");
- }
- element = element.parent();
- if (element.parents('.post-text').length) {
- wrapContentElement(element);
- } else {
- wrapDefaultElement(element);
- }
- }
- });
- }
- function replaceA(src, element, addImg = true) {
- GM.xmlHttpRequest({
- method: "POST",
- url: proxy,
- data: "url=" + src,
- headers: {
- "Content-Type": "application/x-www-form-urlencoded"
- },
- onload: function(response) {
- if (element.parents('.post-text').length) {
- element.text("");
- element.append("<img src='" + response.finalUrl + "'></img>");
- wrapContentElement(element);
- } else {
- element.text("[Image Wizard");
- element.wrap("<span></span>").parent('span').append("<a href='https://github.com/GrumpyCrouton/Userscripts/blob/master/Image%20Wizard'>]</a>");
- }
- element.prop('href', response.finalUrl).prop('target', "_blank");
- }
- });
- }
- function wrapContentElement(element) {
- element.wrap("<div class='module community-bulletin image-proxier'></div>");
- element = element.parent(".image-proxier");
- element.prepend("\
- <div class='bulletin-title'>\
- <center>\
- <a \
- style='text-decoration:none;' \
- href='https://github.com/GrumpyCrouton/Userscripts/blob/master/Image%20Wizard'>\
- Image Wizard\
- </a>\
- </center>\
- </div>\
- <hr>");
- }
- function wrapDefaultElement(element) {
- element.wrap("<span></span>");
- }
- function process() {
- if(debug) console.log("Processing page.");
- handleImgTag();
- handleATag();
- }
- $('img').on('load', function() {
- handleImgTag();
- });
- $('a').on('load', function() {
- handleATag();
- });
- if(processEvery) {
- setInterval (process, processEvery * 1000);
- }
- waitForKeyElements ("img", loadHandling);
- function loadHandling (jNode) {
- if (jNode[0].complete) {
- handlePostLoadedImg (jNode);
- }
- else {
- jNode.on ('load', handlePostLoadedImg);
- }
- }
- function handlePostLoadedImg (jNodeOrEvent) {
- var newImg; // will be jQuery node
- if (jNodeOrEvent instanceof jQuery) {
- newImg = jNodeOrEvent;
- }
- else {
- newImg = $(jNodeOrEvent.target);
- }
- handleImgTag();
- }
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址