您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
try to take over the world!
当前为
// ==UserScript== // @name ACGN-stock營利統計外掛 // @namespace http://tampermonkey.net/ // @version 2.500 // @description try to take over the world! // @author SoftwareSing // @match http://acgn-stock.com/* // @match https://acgn-stock.com/* // @grant none // ==/UserScript== //版本號為'主要版本號 + "." + 次要版本號 + 錯誤修正版本號(兩位),ex 1.801 //修復導致功能失效的錯誤或更新重大功能提升主要或次要版本號 //優化UI,優化效能,優化小錯誤更新錯誤版本號 //兩個錯誤修正版本號防止迫不得已進位到次要版本號 //本腳本修改自 "ACGN股票系統每股營利外掛 2.200 by papago89" var wasCompany, wasStockSummary, wasaccountInfo, wasfoundationPlan, oldUrl; // 程式進入點 (function mainfunction() { //設定狀態 checkSeriousError(); wasCompany = (document.location.href.search(/company\/detail/) != -1); wasStockSummary = (document.location.href.search(/company\/[0-9]+/) != -1); //wasAccountInfo = (document.location.href.search(/accountInfo/) != -1); //wasFoundationPlan = document.location.href.search(/foundation/) != -1; oldUrl = document.location.href; //針對現在的頁面做反應 if (wasCompany) { setTimeout(addCompanyClickListener, 1000); } else if (wasStockSummary) { //setTimeout(computeProfit, 1000); setTimeout(addStockSummaryListener, 1000); } /*else if (wasaccountInfo) { setTimeout(AddTaxListener, 1000); setTimeout(addShowSubscribesListener,1000); } else if (wasfoundationPlan) setTimeout(addFPEvent, 1000);*/ //全域事件 setTimeout(addEvent, 5000); checkDividendUpdateTime(); setTimeout(checkScriptEvent, 500); })(); //Header新增按鈕並監聽 -----已刪除 // 監測main的變化並判斷當前屬於哪個頁面加入正確的事件監聽 function addEvent() { $('#main').bind("DOMNodeInserted DOMNodeRemoved", function() { // 因AJAX動態生成不斷執行,所以有時候main的變動並不代表換頁,此時無須重新加入事件 if(oldUrl != document.location.href && document.location.href.search(/company\/detail/) != -1) { setTimeout(addCompanyClickListener, 1000); } else if(oldUrl != document.location.href && document.location.href.search(/company\/[0-9]+/) != -1) { //setTimeout(computeProfit, 1000); setTimeout(addStockSummaryListener, 1000); } /*else if(oldUrl != document.location.href && document.location.href.search(/accountInfo/) != -1) { setTimeout(AddTaxListener, 1000); setTimeout(addShowSubscribesListener,1000); } else if(oldUrl != document.location.href && document.location.href.search(/foundation/) != -1) setTimeout(addFPEvent, 1000);*/ wasCompany = (document.location.href.search(/company\/detail/) != -1); wasStockSummary = (document.location.href.search(/company\/[0-9]+/) != -1); //wasAccountInfo = (document.location.href.search(/accountInfo/) != -1); //wasFoundationPlan = document.location.href.search(/foundation/) != -1; oldUrl = document.location.href; }); } function checkSeriousError() { //這個function將會清空所有由本插件控制的localStorage //用於如果上一版發生嚴重錯誤導致localStorage錯亂,以致插件無法正常啟動時 var seriousErrorVersion = 2.300; //seriousErrorVersion會輸入有問題的版本號,當發生問題時我會增加本數字,而使用者本地的數字紀錄如果小於這個數字將會清空所有localStorage var lastErrorVersion = 0 !== window.localStorage.getItem ("lastErrorVersion") ? Number(JSON.parse(window.localStorage.getItem ("lastErrorVersion"))) : 0; //lastErrorVersion = 0; //你如果覺得現在就有問題 可以把這行的註解取消掉來清空localStorage console.log(Number.isInteger(lastErrorVersion)); console.log(lastErrorVersion); if (Number.isNaN(lastErrorVersion)) { lastErrorVersion = 0; console.log("reset lastErrorVersion as 0"); } else { console.log("localStorage of lastErrorVersion is work"); } if (lastErrorVersion < seriousErrorVersion) { console.log("last version has serious error, start remove all localStorage"); window.localStorage.removeItem ("Dividend_UpdateTime"); window.localStorage.removeItem ("Dividend"); window.localStorage.removeItem ("lastErrorVersion"); lastErrorVersion = seriousErrorVersion; window.localStorage.setItem ("lastErrorVersion", JSON.stringify(lastErrorVersion)); } } function get_abcd1357_JsonObj() { var request = new XMLHttpRequest(); request.open("GET", "https://jsonbin.org/abcd1357/ACGNstock-company", false); // 連線 POST到該連線位址 request.send(); abcd1357_jsonObj = JSON.parse(request.responseText); } function checkDividendUpdateTime() { get_abcd1357_JsonObj(); //window.localStorage.removeItem ("Dividend_UpdateTime"); var Dividend_UpdateTime = null !== window.localStorage.getItem ("Dividend_UpdateTime") ? JSON.parse(window.localStorage.getItem ("Dividend_UpdateTime")) : "null"; if (abcd1357_jsonObj.updateTime === Dividend_UpdateTime) { console.log("dont need update " + Dividend_UpdateTime); } else { console.log("server update time: " + abcd1357_jsonObj.updateTime); console.log("local update time: " + Dividend_UpdateTime); console.log("start update data"); updateDividendData(); } } function updateDividendData() { get_abcd1357_JsonObj(); var Dividends = []; //console.log(abcd1357_jsonObj.companys[0].companyID); //console.log(abcd1357_jsonObj.companys[0].companyDividend); for (var n in abcd1357_jsonObj.companys) { Dividends.push({"companyID": String(abcd1357_jsonObj.companys[n].companyID), "companyDividend": String(abcd1357_jsonObj.companys[n].companyDividend)}); //console.log("push success"); } window.localStorage.setItem ("Dividend", JSON.stringify(Dividends)); if (abcd1357_jsonObj.updateTime === null) { window.localStorage.setItem ("Dividend_UpdateTime", JSON.stringify("no data")); } else { window.localStorage.setItem ("Dividend_UpdateTime", JSON.stringify(abcd1357_jsonObj.updateTime)); } console.log("Dividend Cookie Update Success!!"); } /************UpdateScript*************/ function checkScriptEvent() { var myVersion = GM_info.script.version; var oReq = new XMLHttpRequest(); oReq.addEventListener("load", checkScriptVersion); oReq.open("GET", "https://gf.qytechs.cn/scripts/33542.json"); oReq.send(); } function checkScriptVersion() { var obj = JSON.parse(this.responseText); var myVersion = GM_info.script.version; console.log(obj.version.substr(0, 3) + "," + myVersion.substr(0, 3) + "," + (obj.version.substr(0, 3) > myVersion.substr(0, 3))); if(obj.version.substr(0, 3) > myVersion.substr(0, 3)) $('<li class="nav-item"><a class="nav-link btn btn-primary" href="https://gf.qytechs.cn/zh-TW/scripts/33542" id="UpdateDividendScript" target="Blank">' + Dict[lan].updateDividendScript + '</a></li>').insertAfter($('.nav-item')[$('.nav-item').length - 1]); else setTimeout(checkScriptEvent, 600000); } /************UpdateScript*************/ /************stockSummary*************/ function addStockSummaryListener() { setTimeout(computeProfit, 2100); $(".btn.btn-secondary.mr-1")[0].addEventListener("click", ComputeEvt); $(".btn.btn-secondary.mr-1")[1].addEventListener("click", ComputeEvt); var pagesbtn = $(".page-item"); for (var i = 0; i < pagesbtn.length; i++) { pagesbtn[i].addEventListener("click", ComputeEvt); } console.log("Triggered StockSummary"); } function ComputeEvt() { setTimeout(addStockSummaryListener, 2000); } //總獲利計算--加入分紅計算 function computeProfit() { //加入變數 profit為總獲利, ID是公司網址, earnPerShare是每股獲利 var profit = 0, tag, price, hold, classProfit, ID, earnPerShare, index; var Dividends = null !== window.localStorage.getItem ("Dividend") ? JSON.parse(window.localStorage.getItem ("Dividend")) : []; //方格模式 if ($(".col-12.col-md-6.col-lg-4.col-xl-3").length > 0) { for (var i = 0; i < $('.company-card').length; ++i) { price = Number($('.company-card')[i].innerText.match(/\$ [0-9]+\(([0-9]+)\)/)[1]); hold = Number($('.company-card')[i].innerText.match(/([0-9]+).+%.+/)[1]); ID = $('.company-card')[i].innerHTML.match(/<a href="\/company\/detail\/([0-z]+)">/)[1]; console.log("companyID = " + ID); index = Dividends.findIndex(x => x.companyID == ID); if (index == -1) { earnPerShare = 0; } else { earnPerShare = Dividends[index].companyDividend; profit += earnPerShare * hold; } //console.log("companyID = " + ID); console.log("earnPerShare = " + earnPerShare); console.log(""); } console.log("本頁預計分紅: " + profit); classProfit = $("#totalProfitNumber"); if (classProfit.length === 0) { $('<div class="media company-summary-item border-grid-body" id = "totalProfit"><div class="col-6 text-right border-grid" id = "totalProfitTitle"><h2>' + Dict[lan].totalProfitInThisPage + '</h2></div></div>').insertAfter($('.card-title.mb-1')[0]); $('<div class="col-6 text-right border-grid" id = "totalProfitNumber"><h2>$ ' + profit.toFixed() + '</h2></div>').insertAfter($('#totalProfitTitle')[0]); } else { $("#totalProfitNumber")[0].innerHTML = "<h2>$ " + profit.toFixed() + "</h2>"; } } /*else { //列表模式 //列表模式暫不開放 //console.log($(".col-8.col-lg-3.text-right.border-grid")); for (var j = 0; j < $('.media-body.row.border-grid-body').length; ++j) { price = Number($('.media-body.row.border-grid-body')[j].innerText.match(/\$ [0-9]+\(([0-9]+)\)/)[1]); hold = Number($('.media-body.row.border-grid-body')[j].innerText.match(/您在該公司持有([0-9]+)數量的股份/)[1]); // 找出持股量 console.log("價= " + price + ",持= " + hold + ",總= " + (price * hold) ); assets += price * hold; } console.log("本頁持股價值: " + assets); classAssets = $("#totalAssetsNumber"); if (classAssets.length === 0) { $('<div class="media company-summary-item border-grid-body" id = "totalAssets"><div class="col-6 text-right border-grid" id = "totalAssetsTitle"><h2>' + Dict[lan].totalAssetsInThisPage + '</h2></div></div>').insertAfter($('.card-title.mb-1')[0]); $('<div class="col-6 text-right border-grid" id = "totalAssetsNumber"><h2>$ ' + assets + '</h2></div>').insertAfter($('#totalAssetsTitle')[0]); } else { $("#totalAssetsNumber")[0].innerHTML = "<h2>$ " + assets + "</h2>"; } }*/ //setTimeout(computeAssets,1000); } /************stockSummary*************/ /*************************************/ /**************company****************/ //---------------按鍵區---------------// function addCompanyClickListener() { if ($('.d-block.h4').length === 6) { // 初始化 先看使用者有沒有預設打開資料夾 folderOpenString = "fa-folder-open"; folderCloseString = "12345678"; //chartEvent(); numbersEvent(); //orderEvent(); //productEvent(); //directorEvent(); //logEvent(); folderOpenString = "fa-folder"; folderCloseString = "fa-folder-open"; // 註冊事件 //$('.d-block.h4')[0].addEventListener("click", chartEvent); //股價趨勢 $('.d-block.h4')[1].addEventListener("click", numbersEvent); //數據資訊 //$('.d-block.h4')[2].addEventListener("click", orderEvent); //交易訂單 //$('.d-block.h4')[3].addEventListener("click", productEvent); //產品中心 //$('.d-block.h4')[4].addEventListener("click", directorEvent); //董事會 //$('.d-block.h4')[5].addEventListener("click", logEvent); //所有紀錄 console.log("OnclickListener Registered"); } else { setTimeout(addCompanyClickListener, 500); } console.log("Triggered Company"); } var folderOpenString, folderCloseString; // 數據資訊 function numbersEvent() { var folderstate = $(".d-block.h4 i")[1].classList[1]; if (folderstate === folderOpenString) { //Open Event console.log("Open numbersfolder"); //setTimeout(addSomeInfo, 1000); setTimeout(AddDividendCookie, 1000); //總獲利計算--紀錄分紅 } else if (folderstate === folderCloseString) { //Close Event console.log("close numbersfolder"); } } //總獲利計算--紀錄分紅cookie 09/27 function AddDividendCookie() { //window.localStorage.removeItem ("Dividend"); var revenue, totalStock, earnPerShare, ID; revenue = $('.col-8.col-md-4.col-lg-2.text-right.border-grid')[3].innerHTML.match(/[0-9]+/); totalStock = $('.col-8.col-md-4.col-lg-2.text-right.border-grid')[4].innerHTML.match(/[0-9]+/); earnPerShare = 0.8075 * revenue / totalStock; //name = $('.card-title.text-truncate')[0].innerText; ID = document.location.href.substr(38,99); var Dividends = null !== window.localStorage.getItem ("Dividend") ? JSON.parse(window.localStorage.getItem ("Dividend")) : []; //如果先前紀錄過該公司,則刪除重記 var index = Dividends.findIndex(x => x.companyID == ID); if (index != -1) { if (Dividends[index].companyDividend == earnPerShare) { console.log(ID + "---" + earnPerShare); console.log("dont need update cookie"); } else { Dividends.splice(index, 1); console.log("AddDividendCookie---splice"); Dividends.push({"companyID":ID, "companyDividend":earnPerShare}); window.localStorage.setItem ("Dividend", JSON.stringify(Dividends)); console.log(ID + "---" + earnPerShare); console.log("Add Dividend Cookie!!"); } } else { Dividends.push({"companyID":ID, "companyDividend":earnPerShare}); window.localStorage.setItem ("Dividend", JSON.stringify(Dividends)); console.log(ID + "---" + earnPerShare); console.log("AddDividendCookie!!"); } } /**************company****************/ /*************************************/ /************accountInfo**************/ // -----已刪除 /************accountInfo**************/ /*************************************/ /************foundationPlan***********/ //-----已刪除 /************foundationPlan***********/ /**************aboutMe****************/ // -----已刪除 /**************aboutMe****************/ /*************Language***************/ var lan = ""; lan = null !== window.localStorage.getItem ("PM_language") ? window.localStorage.getItem ("PM_language") : "tw"; /*function ChangeLanguage(l){ if(lan === l)return; lan = l; window.localStorage.setItem ("PM_language",l); window.location.reload(); }*/ var Dict = { tw: { totalProfitInThisPage: "本頁預計分紅:", updateDividendScript: "更新預估分紅腳本", }, en: { totalProfitInThisPage: "Total profit in this page :", updateDividendScript: "Update Dividend Script", }, jp: { totalProfitInThisPage: "本頁預計分紅:", updateDividendScript: "更新預估分紅腳本", }, marstw: { totalProfitInThisPage: "這ㄘ可yee拿ㄉ$$:", updateDividendScript: "有★版", } }; /*************Language***************/ /*************Subscribe***************/ // -----已刪除 /*************Subscribe***************/
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址