diff --git a/Scripts/traffic-check.js b/Scripts/traffic-check.js index 19b9fbf..892b641 100644 --- a/Scripts/traffic-check.js +++ b/Scripts/traffic-check.js @@ -6,7 +6,7 @@ For Quantumult-X 631+ ONLY!! event-interaction https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/traffic-check.js, tag=策略流量查询, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Download.png, enabled=true -ps. 简单查询策略/策略组流量使用统计(仅支持一级、二级策略) +ps. 简单查询策略/策略组流量使用统计(仅支持一/二级策略) @XIAO_KOP @@ -27,7 +27,9 @@ const message = { }; -let [datad, datau]= [0, 0] +let [datad, datau]= [0, 0] //总下载/上传流量 +var checked = [] // 已经检查的节点名单 +var checkedtraffic = [] //已检查节点的总用量 var pflag=1 //是否是策略,或者简单节点 @@ -60,23 +62,55 @@ function getJsonLength(jsonData){ // 计算流量信息 var [Tdatad,Tdatau,Udatad,Udatau]=[0,0,0,0] +var total = 0 +var gdnode = 0 +var gdname = policy -function getServerTraffic(data,node){ +function getServerTraffic(data,nodes){ //console.log(data.name) let type = data.type + let nname = data.name //console.log("下载用量:"+(data.rx_transfer/1024/1024).toFixed(1)+"MB") - if (data.name==node ) { + if (nodes.indexOf(nname) != -1) { if (type == "tcp") { - console.log(typeof(Tdatad),typeof(Tdatau)) + //console.log(typeof(Tdatad),typeof(Tdatau)) Tdatad=(Number(Tdatad)+data.rx_transfer/1024/1024).toFixed(1) Tdatau=(Number(Tdatau)+data.tx_transfer/1024/1024).toFixed(1) - console.log(Tdatad,Tdatau) + //console.log(Tdatad,Tdatau) } else if (type == "udp") { Udatad=(Number(Udatad)+data.rx_transfer/1024/1024).toFixed(1) Udatau=(Number(Udatau)+data.tx_transfer/1024/1024).toFixed(1) } + let total = (data.rx_transfer+data.tx_transfer)/1024/1024 + if (checked.indexOf(nname)==-1) { + checked.push(nname) + checkedtraffic.push(total) + } else { + checkedtraffic.push(checkedtraffic[checked.indexOf(nname)]+total) + } } else { + } +} + +//流量排序 +function Rank(){ + checked.sort((prev,next)=> { + return checkedtraffic[checked.indexOf(next)]-checkedtraffic[checked.indexOf(prev)] + }) + checkedtraffic.sort((prev,next)=> { + return next-prev + }) + console.log(checkedtraffic.map(item => item.toFixed(1))) + let rst = checked.map((name, i) => ([i+1,name,checkedtraffic[i].toFixed(1) +"MB"].join(": "))) + console.log(rst.join("\n")) + let msg = "
🥇 "+checked[0]+" ☞ "+checkedtraffic[0].toFixed(0) +" MB" + if (checked.length>=3) { + msg = "
🥇 "+checked[0]+" ☞ "+checkedtraffic[0].toFixed(0) +" MB"+"
🥈 "+checked[1]+" ☞ "+checkedtraffic[1].toFixed(0) +" MB"+"
🥉 "+checked[2]+" ☞ "+checkedtraffic[2].toFixed(0) +" MB" + } else if (checked.length==2) { + msg = "
🥇 "+checked[0]+" ☞ "+checkedtraffic[0].toFixed(0) +" MB"+"
🥈 "+checked[1]+" ☞ "+checkedtraffic[1].toFixed(0) +" MB" } + msg = `

` + msg + `

` + return msg } //查询流量 @@ -88,12 +122,9 @@ $configuration.sendMessage(messageTraffic).then(resolve => { if (resolve.ret) { let output=JSON.stringify(resolve.ret, null, 2); let len = getJsonLength(resolve.ret) - for (var no in nodes) { - console.log(nodes[no]) - for (var item in resolve.ret) { - getServerTraffic(resolve.ret[item],nodes[no]) + for (var item in resolve.ret) { + getServerTraffic(resolve.ret[item],nodes) } - } //console.log(output); content = NodeData(nodes,pflag); //console.log(content) @@ -109,11 +140,12 @@ $configuration.sendMessage(messageTraffic).then(resolve => { function NodeData(nodes,pflag){ datad = "TCP : "+" "+Tdatad+" MB ⟱ | "+Tdatau+" MB ⟰ " datau = "UDP : "+" "+Udatad+" MB ⟱ | "+Udatau+" MB ⟰ " - //console.log(datad,datau) Ncontent = "--------------------------------------

"+[datad,datau].join("

")+ "

--------------------------------------

" - Ncontent = pflag == 0? Ncontent +""+"节点 ➟ " + policy+ "" : Ncontent +""+" 策略组 ➟ " + policy+ "
❬共"+ nodes.length+"个节点❭
" + Ncontent = pflag == 0? Ncontent +""+"节点 ➟ " + policy+ "" : Ncontent +""+" 策略组 ➟ " + policy+ "
共 『"+checked.length+"/"+nodes.length+"』 个节点有使用记录


♔ 排行榜 ☟" //console.log(Ncontent) Ncontent = `

` + Ncontent + `

` + Ncontent = pflag == 0? Ncontent : Ncontent +Rank() //console.log(Ncontent) return Ncontent } +