您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
2/21/2020, 5:24:50 PM
当前为
// ==UserScript== // @name 微博原图展开和下载 - weibo.com // @namespace Violentmonkey Scripts // @match https://www.weibo.com/* // @grant none // @version 1.0 // @author - // @description 2/21/2020, 5:24:50 PM // ==/UserScript== ; (function () { // eslint-disable-line var butfly = function () { var backward = function (e, cn) { while (e.previousSibling) { e = e.previousSibling; if (e.classList && e.classList.contains(cn)) return e; } if (e.parentElement) return backward(e.parentElement, cn); } var panels = document.getElementsByClassName("WB_media_a_mn"); for (var i = 0; i < panels.length; i++) { var info = backward(panels[i], "WB_info"); var btn = document.createElement('a'); btn.text = "载入所有原图"; btn.style.cursor = 'pointer'; btn.onclick = expand; btn.style["margin-left"] = "3em"; info.append(btn); } } var expand = function (event) { var backward = function (e, cn) { while (e.previousSibling) { e = e.previousSibling; if (e.classList && e.classList.contains(cn)) return e; } if (e.parentElement) return backward(e.parentElement, cn); } var panel = event.target.parentElement.parentElement.getElementsByClassName("WB_media_a_mn")[0]; var text = backward(panel, "WB_text"); // var more = panel.getElementsByClassName("W_icon_tag_9p"); // if (more.length > 0) { // console.debug("Media with more than 9 expanding:\n" + text.innerText); // // more[0].click(); // } event.target.parentElement.append(document.createElement('hr')); var masonry = document.createElement('div'); masonry.classList.add('masonry'); var imgtitle = function (e) { e.target.title = '原图' + (e.target['image-seq'] + 1) + e.target.naturalWidth + "x" + e.target.naturalHeight; } for (var i = 0; i < panel.children.length; i++) { var li = panel.children[i]; var img = li.children[0]; if (img.tagName !== "IMG") continue; var dst = img.src.replace(/sinaimg.cn\/[^/]+\//, 'sinaimg.cn/large/'); var atag = document.createElement('a'); // atag atag.href = dst; atag.target = '_blank'; atag.classList.add("masonry-item") // atag.style.padding = "0.5em"; var img = document.createElement('img'); img["image-seq"] = i; img.onload = imgtitle; img.src = dst; // img.style["max-height"] = "630px"; // img.style["max-width"] = "45%"; // img.classList.add("item_content"); // img.classList.add("content-lar"); atag.append(img) event.target.parentElement.append(atag); } event.target.parentElement.append(document.createElement('hr')); } var topbtn = function () { var ele = document.getElementsByClassName('W_swficon'); if (ele.length == 0) { console.info("等待网页载入……"); setTimeout(topbtn, 5); } else { ele = ele[0]; ele.style.cursor = "pointer"; ele.style.border = "solid 1px"; ele.style["padding-top"] = "2px"; ele.title = "点击启用加载原图按钮"; ele.style.filter = "invert(100%)" ele.onclick = butfly; ele = document.getElementsByClassName('box')[0]; ele.href = "javascript:void(0)"; ele.title = "点击启用加载原图按钮"; ele.onclick = butfly; ele.style.filter = "invert(100%)" console.info("点击发文输入框上方\"有什么新鲜事\"显示加载按钮(在微博作者行)。"); var style = document.createElement("style"); style.id = 'masonry-style'; style.type = 'text/css'; var css = ".masonry {-moz-column-count:3; /* Firefox */ -webkit-column-count:3; /* Safari 和 Chrome */ column-count:3; -moz-column-gap: 2em; -webkit-column-gap: 2em; column-gap: 2em; width: 80%; margin:2em auto;}"; css += "\n.masonry-item {padding: 0.3em; margin-bottom: 0.3em; -moz-page-break-inside: avoid; -webkit-column-break-inside: avoid; break-inside: avoid; background: #f60;}"; css += "\n.masonry-item img {max-width: 30%}"; style.textContent = css; document.head.appendChild(style); } } document.onreadystatechange = function () { if (document.readyState === "complete") topbtn(); else console.debug("document change: " + document.readyState); } document.addEventListener('DOMContentLoaded', (event) => { // var ele = document.getElementsByClassName('W_swficon')[0]; // ele.style.cursor = "pointer"; // ele.onclick = butfly; console.log('DOM fully loaded and parsed'); }); }()); //#endregion