您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Direct image links for sites that obfuscate the image from easy downloading.
当前为
// ==UserScript== // @name Direct Picture Link (Instagram) // @namespace https://lawrenzo.com/p/direct-picture-link // @version 0.3 // @description Direct image links for sites that obfuscate the image from easy downloading. // @author Lawrence Sim // @license WTFPL (http://www.wtfpl.net) // @match https://*.instagram.com/* // @grant none // ==/UserScript== (function() { var contextMenu; var openContextMenu = function(evt, src, type) { let a; if(!contextMenu) { contextMenu = document.createElement("div"); contextMenu.style["position"] = "absolute"; contextMenu.style["background"] = "#efefef"; contextMenu.style["border-radius"] = "0.2em"; contextMenu.style["box-shadow"] = "1px 1px 3px 1px rgba(0,0,0,0.4)"; contextMenu.style["padding"] = "0.2em 0.5em"; contextMenu.style["font-size"] = "0.85em"; contextMenu.style["z-index"] = "999999"; a = document.createElement("a"); a.innerHTML = "> view direct source"; a.setAttribute("target", "_blank"); a.setAttribute("href", src); contextMenu.append(a); document.body.append(contextMenu); } else { a = contextMenu.querySelector("a"); a.setAttribute("src", src); } if(type === "video") { a.innerHTML = "> view direct video"; } else { a.innerHTML = "> view direct image"; } contextMenu.style.left = `${evt.pageX}px`; contextMenu.style.top = `${evt.pageY}px`; }; document.body.addEventListener("click", () => { if(!contextMenu) return; contextMenu.remove(); contextMenu = null; }); var link = (mutated, observer) => { mutated = mutated || [{target: document.body}]; mutated.forEach(mutant => { mutant.target.querySelectorAll("article img").forEach(img => { if(img.getAttribute("ilnkd")) return; let btn = img.closest("div[role='button']"); if(!btn) return; btn.addEventListener("contextmenu", (evt) => { evt.preventDefault(); openContextMenu(evt, img.getAttribute("src")); }); img.setAttribute("ilnkd", 1); }); mutant.target.querySelectorAll("article video").forEach(vid => { if(vid.getAttribute("ilnkd")) return; let btn = vid.closest("article > div"); if(!btn) return; btn.addEventListener("contextmenu", (evt) => { evt.preventDefault(); openContextMenu(evt, vid.getAttribute("src"), "video"); }); vid.setAttribute("ilnkd", 1); }); }); }; link(); var obs = new MutationObserver(link); obs.observe(document.body, {childList:true, subtree:true}); })();