// ==UserScript== // @name zherop小工具 // @namespace http://tampermonkey.net/ // @version 1.4 // @description 一键无图、隐藏图片、查看源代码、爱问财选股 // @author zherop@163.com // @match *://*/* // @connect static.61read.com // @connect basic.10jqka.com.cn // @require https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_download // @grant GM_openInTab // @license AGPL License // @downloadURL https://update.greasyfork.icu/scripts/460913/zherop%E5%B0%8F%E5%B7%A5%E5%85%B7.user.js // @updateURL https://update.greasyfork.icu/scripts/460913/zherop%E5%B0%8F%E5%B7%A5%E5%85%B7.meta.js // ==/UserScript== (function() { 'use strict'; // 定义 var menus = [ {"code":"noPic","name":"一键无图","event":"noPic"}, {"code":"hidePic","name":"隐藏图片","event":"hidePic"}, {"code":"viewSource","name":"查看源代码","event":"viewSource"}, {"code":"downloadPng","name":"下载图片","event":"downloadPng","domain":"http://static.61read.com/"}, {"code":"openIframe","name":"访问iframe","event":"openIframe"}, {"code":"checkTargetInIwencai","name":"标的筛选","event":"checkTargetInIwencai","domain":"https?://www.iwencai.com/"}, {"code":"queryStockInfo","name":"查看标的信息","event":"queryStockInfo","domain":"https?://www.iwencai.com/"} ] // 菜单样式 function menuStyle() { return ` ` } // 创建菜单DOM function createMenuDom() { var html = '
' menus.forEach(item => { var regexObject = new RegExp(item.domain); if(!item.domain || item.domain == "*" || regexObject.test(window.location.href)) { html += `
${item.name}
` } }) html += '
' return html; } // 菜单事件 // 一键无图 function noPic(){ $("img").remove(); $("svg").remove(); } // 隐藏图片 function hidePic(){ $("img").hide(); $("svg").hide(); } // 查看源代码 function viewSource() { GM_openInTab('view-source:' + window.location.href) } // 下载图片 function downloadPng() { var currentHref = window.location.href if(currentHref.startsWith('http://static.61read.com/')) { var baseURL = currentHref.substr(0,currentHref.lastIndexOf('/')) var xmlFile = unsafeWindow.xmlFile var pageFile = unsafeWindow.pageFile GM_xmlhttpRequest({ method: "GET", url: baseURL + '/'+ pageFile + xmlFile, headers: { "Content-Type": "application/xml" }, onload: function(response) { var responseXML = response.responseXML var items = responseXML.getElementsByTagName('item') for(var i=0;i 0) { name = path.substring(path.lastIndexOf('/') + 1) } download(imageURL,name); } } }); } else { } } function download(filePath,name){ fetch(filePath).then(res => res.blob()).then(blob => { const a = document.createElement('a'); document.body.appendChild(a) a.style.display = 'none' // 使用获取到的blob对象创建的url const url = window.URL.createObjectURL(blob); a.href = url; // 指定下载的文件名 a.download = name; a.click(); document.body.removeChild(a) // 移除blob对象的url window.URL.revokeObjectURL(url); }); } function download2(url,name) { GM_download({ url: url, onerror: function (error) { console.log(error) }, onprogress: (pro) => { console.log(pro.loaded) //文件加载量 console.log(pro.totalSize) //文件总大小 }, ontimeout: () => { //如果此下载由于超时而失败,则要执行的回调 }, onload: () => { //如果此下载完成,则要执行的回调 } }) } // 打开iframe function openIframe() { if(document.getElementsByTagName("iframe").length > 0){ window.open(document.getElementsByTagName("iframe")[0].src) } else { console.log('不存在iframe') } } function copyText(text) { if($('#zp-copy').length <= 0) { $("body").append('') } $('#zp-copy').text(text).show(); var ele = document.getElementById("zp-copy"); ele.select(); if (document.queryCommandEnabled('copy')) { try { document.execCommand('copy'); console.log('文本已复制到剪贴板'); } catch (error) { console.error('复制到剪贴板失败:', error); } } else if (navigator.clipboard) { navigator.clipboard.writeText(textToCopy) .then(() => { console.log('文本已复制到剪贴板'); }) .catch((error) => { console.error('复制到剪贴板失败:', error); }); } else { console.error('复制命令不可用'); } $('#zp-copy').hide(); } function getRequest(url,mimeType) { return new Promise((resolve, reject) => { GM_xmlhttpRequest({ method: "GET", url: url, overrideMimeType: mimeType ? mimeType:"text/html; charset=utf-8", onload: function(response) { if (response.status === 200) { resolve(response.responseText); } else { reject("Failed to fetch HTML page."); } }, onerror: function(error) { reject(error); } }); }); } async function checkTargetInIwencai() { console.log('checkTarget'); if(window.location.href.startsWith("http://www.iwencai.com/")) { let trs = $(".iwc-table-scroll").find("tr"); let data = [] for(let i=0;i= 20 && rt >= 20) { selected = true; } else { selected = false; } // 连续5年的平均净利润现金含量高于100%的 let ct = (parseFloat(obj.c1) + parseFloat(obj.c2) + parseFloat(obj.c3) + parseFloat(obj.c4) + parseFloat(obj.c5))/5; obj.ct = ct; if(ct >= 100) { selected = selected && true; } else { selected = selected && false; } // 连续5年的毛利率中,平均值并且最近1年的数值高于40%的 let mf = parseFloat(obj.m1); let mt = (parseFloat(obj.m1) + parseFloat(obj.m2) + parseFloat(obj.m3) + parseFloat(obj.m4) + parseFloat(obj.m5))/5; obj.mt = mt; if(mt >= 40 && mf >= 40) { selected = selected && true; } else { selected = selected && false; } // 连续5年的资产负债率中,平均值且最近1年的数值小于60% if(selected) { // 获取资产负债率 let htmlContent = await getRequest("http://basic.10jqka.com.cn/" + obj.code + "/finance.html","text/html; charset=gbk"); let financeData = parseFinance(htmlContent); obj.financeData = financeData; for(let i=0;i 60) { selected = selected && false; break; } } } // 连续5年的派息比率中,每年都大于25% if(selected){ // 获取派息比率数据 let htmlContent = await getRequest("http://basic.10jqka.com.cn/" + obj.code + "/bonus.html","text/html; charset=gbk"); let bonusData = parseBonus(htmlContent); obj.bonusData = bonusData; for(let i=0;i item.code===opType) if(currentMenu) { eval(currentMenu.event + "()") } }) }) })();