统计指定楼层中用户加蒸汽的情况
// ==UserScript== // @name SteamCN Point Confirmation Tool // @namespace TypeNANA // @version 0.1 // @description 统计指定楼层中用户加蒸汽的情况 // @author TypeNANA // @match https://steamcn.com/* // ==/UserScript== (function () { function SetPage() { document.getElementById("nav-user-action-bar").getElementsByClassName("list-inline")[0].innerHTML = '<li> <a id="mShowAlert" class="btn btn-user-action"> 加体力统计 </a> </li><li id="hiddenDiv" style="width:0;height:0"/>' + document.getElementById("nav-user-action-bar").getElementsByClassName("list-inline")[0].innerHTML; var script = '<script>var urlList=[];var urlIdList=[];var scoreList={};function startGetData(){urlList=[];urlIdList=[];scoreList={};var txt=document.getElementById("text").value;dealUrls(txt)}function dealUrls(urls){urls=urls.replace(/\r\n/g,"").replace(/\n/g,"");var reg=new RegExp(/https:\/\/[^:]+\d/g);var r###lt;while((r###lt=reg.exec(urls))!=null){urlList.push(r###lt[0])}dealUrlList(urlList,0)}function dealUrlList(list,index){document.getElementById("progressTxt").innerHTML="获取帖子信息中 "+(index+1)+"/"+list.length;if(index>=list.length){webRequest(urlIdList,0);return}var reg=new RegExp(/tid=(\d+)&pid=(\d+)/g);var r###lt;if((r###lt=reg.exec(list[index]))!=null){urlIdList.push([r###lt[1],r###lt[2]]);dealUrlList(list,index+1)}else{webRequestSpecial(list,index)}}function webRequest(list,index){document.getElementById("progressTxt").innerHTML="获取体力数据中 "+(index+1)+"/"+list.length;if(index>=list.length){document.getElementById("progressTxt").innerHTML="体力数据抓取完成";setTable(scoreList);return}jQuery.post("https://steamcn.com/forum.php",{mod:"misc",action:"viewratings",inajax:1,tid:list[index][0],pid:list[index][1],}).done(function(res){var txt=res.all[0].innerHTML;var reg=new RegExp(/体力.+?\+(\d+?)[\s\S]+?suid-.+?">(.+?)<\/a/g);var r###lt;while((r###lt=reg.exec(txt))!=null){if(scoreList[r###lt[2]]==null){scoreList[r###lt[2]]=0}scoreList[r###lt[2]]+=r###lt[1]/1}webRequest(urlIdList,index+1)})}function webRequestSpecial(list,index){jQuery.post(list[index],{inajax:1}).done(function(res){var txt=res.all[0].innerHTML;var mList=[];var reg2=new RegExp(/t\d+/g);mList.push(reg2.exec(list[index])[0].replace("t",""));var reg=new RegExp(/post_\d+/g);mList.push(reg.exec(txt)[0].replace("post_",""));urlIdList.push(mList);dealUrlList(list,index+1)})}function setTable(list){var tbody=document.getElementById("container");tbody.innerHTML="";var newlist=sortList(list);for(var i in newlist){tbody.innerHTML+="<tr><td>"+newlist[i][0]+"</td><td>"+newlist[i][1]+"</td></tr>"}}function sortList(list){var tmpList=JSON.parse(JSON.stringify(list));var newList=[];var oriCount=0;for(var i in tmpList){oriCount++}while(newList.length<=oriCount){var max="";for(var i in tmpList){if(max==""){max=i}if(tmpList[i]>tmpList[max]){max=i}}newList.push([max,tmpList[max]]);delete tmpList[max]}console.log(newList);return newList};</script>'; document.getElementById("mShowAlert").onclick = function () { showDialog(script + '<br><textarea id="text" placeholder="在这里粘贴楼层链接,推荐以每个链接一行的格式录入" style="margin: 0px 10px 5px;resize: vertical;height: 132px;width: 600px;border: 1px solid rgb(238, 238, 238);border-radius: 5px;"></textarea><div style="height: 28px;"><span style="padding-left:10px;color:red;font-weight:bold" id="progressTxt"></span><button id="steamsubmitbtn" onclick="document.getElementById(\'hiddenDiv\').onclick()" value="true" class="pn pnc" style="float:right;margin-right:10px;margin-bottom:10px;"><strong>开始统计</strong></button></div><style>#container tr:nth-child(2n+1){background-color: #ffffff;}.tbtitle th{background:#57BAE8;color:white;}</style><div style="width:100%;max-height:300px;overflow:scroll;overflow-x:hidden"><table class="dt mtm" style="margin: 0 10px 10px 10px;width: calc(100% - 20px);"><tbody class="tbtitle"><tr><th style="width: 60%;">用户名</th><th style="width: 20%;">总计体力</th></tr></tbody><tbody id="container"><tr><td>-</td><td>-</td></tr></tbody></table></div>', 'info', '加体力统计', null, 1); } document.getElementById("hiddenDiv").onclick = function () { var urlList = []; var urlIdList = []; var scoreList = {}; function startGetData() { urlList = []; urlIdList = []; scoreList = {}; var txt = document.getElementById("text").value; dealUrls(txt); } function dealUrls(urls) { urls = urls.replace(/\r\n/g, "").replace(/\n/g, ""); var reg = new RegExp(/https:\/\/[^:]+\d/g); var r###lt; while ((r###lt = reg.exec(urls)) != null) { urlList.push(r###lt[0]); } dealUrlList(urlList, 0); } function dealUrlList(list, index) { document.getElementById("progressTxt").innerHTML = "获取帖子信息中 " + (index + 1) + "/" + list.length; if (index >= list.length) { webRequest(urlIdList, 0); return; } var reg = new RegExp(/tid=(\d+)&pid=(\d+)/g); var r###lt; if ((r###lt = reg.exec(list[index])) != null) { urlIdList.push([r###lt[1], r###lt[2]]); dealUrlList(list, index + 1); } else { webRequestSpecial(list, index); } } function webRequest(list, index) { document.getElementById("progressTxt").innerHTML = "获取体力数据中 " + (index + 1) + "/" + list.length; if (index >= list.length) { document.getElementById("progressTxt").innerHTML = "体力数据抓取完成"; setTable(scoreList); return; } jQuery.post('https://steamcn.com/forum.php', { mod: "misc", action: "viewratings", inajax: 1, tid: list[index][0], pid: list[index][1], }).done(function (res) { var txt = res.all[0].innerHTML; var reg = new RegExp(/体力.+?\+(\d+?)[\s\S]+?suid-.+?">(.+?)<\/a/g); var r###lt; while ((r###lt = reg.exec(txt)) != null) { if (scoreList[r###lt[2]] == null) scoreList[r###lt[2]] = 0; scoreList[r###lt[2]] += r###lt[1] / 1; } webRequest(urlIdList, index + 1); }); } function webRequestSpecial(list, index) { jQuery.post(list[index], { inajax: 1 }).done(function (res) { var txt = res.all[0].innerHTML;; var mList = []; var reg2 = new RegExp(/t\d+/g); mList.push(reg2.exec(list[index])[0].replace("t", "")); var reg = new RegExp(/post_\d+/g); mList.push(reg.exec(txt)[0].replace("post_", "")); urlIdList.push(mList); dealUrlList(list, index + 1); }); } function setTable(list) { var tbody = document.getElementById("container"); tbody.innerHTML = ""; var newlist = sortList(list); for (var i in newlist) { if (newlist[i][1] == undefined) continue; tbody.innerHTML += "<tr><td>" + newlist[i][0] + "</td><td>" + newlist[i][1] + "</td></tr>"; } } function sortList(list) { var tmpList = JSON.parse(JSON.stringify(list)); var newList = []; var oriCount = 0 for (var i in tmpList) { oriCount++; } while (newList.length <= oriCount) { var max = "" for (var i in tmpList) { if (max == "") { max = i; } if (tmpList[i] > tmpList[max]) { max = i; } } newList.push([max, tmpList[max]]); delete tmpList[max]; } console.log(newList); return newList; } startGetData(); } } SetPage(); })();