Greasy Fork is available in English.

查看评分

查看评分。

  1. // ==UserScript==
  2. // @name 查看评分
  3. // @version 0.2.8
  4. // @include https://www.mcbbs.net/pinfen
  5. // @author xmdhs
  6. // @description 查看评分。
  7. // @license MIT
  8. // @namespace xmdhs.top
  9. // ==/UserScript==
  10.  
  11. (async function () {
  12. try {
  13. await fetch(`https://www.mcbbs.net/?new=no&mobile=no`)
  14. } catch (error) {
  15. console.error(error)
  16. }
  17. document.write(`<!DOCTYPE html>
  18. <html>
  19. <head>
  20. <meta charset="UTF-8">
  21. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  22. <meta name="viewport" content="width=device-width,initial-scale=1">
  23. <title>查看评分</title>
  24. <script src="https://static.xmdhs.com/wasm_exec@1.js"></script>
  25. <link rel="stylesheet" href="https://static.xmdhs.com/style.css">
  26. <script>let go;
  27. try {
  28. go = new Go();
  29. } catch (error) {
  30. alert("请更新浏览器")
  31. }
  32. async function fetchAndInstantiate() {
  33. const response = await fetch("https://static.xmdhs.com/pinfen-11.wasm");
  34. const buffer = await response.arrayBuffer();
  35. const obj = await WebAssembly.instantiate(buffer, go.importObject)
  36. go.run(obj.instance);
  37. document.getElementById('q').removeAttribute("readOnly");
  38. }
  39. fetchAndInstantiate();
  40. function Form(f) {
  41. let text = document.querySelector("#q").value.toString();
  42. if (text == "") {
  43. return;
  44. }
  45. pinfen(text, (v) => {
  46. let b = document.createElement("span")
  47. b.innerText = v;
  48. let a = document.getElementById("text");
  49. a.appendChild(b)
  50. a.appendChild(document.createElement("br"))
  51. }, (v) => {
  52. document.getElementById("text").innerHTML = '<textarea id="confirmationText" class="text" cols="86" rows="20" name="confirmationText" style="width: 100%;overflow: auto;word-break: break-all;"></textarea>'
  53. document.getElementById("confirmationText").value = v;
  54. f();
  55. let types = {}
  56. const data = JSON.parse(v);
  57. for (const v of data) {
  58. for (const t of v.Link) {
  59. types[t.Type] = true;
  60. }
  61. }
  62. document.querySelector("#type").innerHTML = ""
  63. for (const v in types) {
  64. const dom = document.createElement("option")
  65. dom.value = v;
  66. dom.innerText = v;
  67. document.querySelector("#type").appendChild(dom)
  68. }
  69. analyze(v)
  70. }, location.href)
  71. }
  72. const toanalyze = () => {
  73. let text = document.querySelector("#confirmationText").value;
  74. analyze(text)
  75. }
  76. const analyze = (v) => {
  77. const type = document.querySelector("#type").value;
  78. const data = JSON.parse(v);
  79. const d = []
  80. for (const a of data) {
  81. for (const b of a.Link) {
  82. if (b.Type == type) {
  83. d.push({
  84. Name: b.Name,
  85. Uid: b.Uid,
  86. Num: b.Num,
  87. Text: b.Text,
  88. Link: b.Link
  89. })
  90. }
  91. }
  92. }
  93. const tempa = {}
  94. let all = 0
  95. for (const v of d) {
  96. all += v.Num
  97. let n = tempa[v.Uid]
  98. if (n == undefined) {
  99. tempa[v.Uid] = { num: v.Num, uid: v.Uid, name: v.Name }
  100. } else {
  101. tempa[v.Uid] = { num: v.Num + n.num, uid: v.Uid, name: v.Name }
  102. }
  103. }
  104. const tempb = []
  105. for (const c in tempa) {
  106. tempb.push(tempa[c])
  107. }
  108. tempb.push({ num: all, uid: "all", name: "总和" })
  109. tempb.sort((a, b) => { return b.num - a.num })
  110. d.sort((a, b) => { return b.Num - a.Num })
  111. const s = JSON.stringify(d, null, 4);
  112. const ss = JSON.stringify(tempb, null, 4);
  113. document.querySelector("#b").value = s;
  114. document.querySelector("#a").value = ss;
  115. document.querySelector("#c").removeAttribute("style");
  116. }
  117. </script>
  118. </head>
  119. <body>
  120. <div class="container-lg px-3 my-5 markdown-body">
  121. <h1>主页</h1>
  122.  
  123. <p>因为 mcbbs 关闭了 api,用户脚本版本已失效,请使用软件版本。</p>
  124. <a href="https://pan.baidu.com/s/1ZtLPh0HvEzD0suXePeWV7A?pwd=xj5u">下载</a>
  125.  
  126. <p>总之懒得弄界面,就这样吧</p>
  127. <p>在下面那个框中输入 uid,然后回车</p>
  128. <form id="form"><input type="text" id="q" name="q" readonly="readonly" pattern="^\\d+$">
  129. <input type="submit" value="查询">
  130. </form>
  131. <div id="text"></div>
  132. <div id="c" style="display: none;">
  133. <select name="type" id="type"></select>
  134. <textarea id="b" autocomplete=off class="text" cols="86" rows="20" name="confirmationText"
  135. style="width: 100%;overflow: auto;word-break: break-all;"></textarea>
  136. <textarea id="a" autocomplete=off class="text" cols="86" rows="20" name="confirmationText"
  137. style="width: 100%;overflow: auto;word-break: break-all;"></textarea>
  138. </div>
  139. </div>
  140. </body>
  141. </html>`)
  142. document.close();
  143.  
  144. var t;
  145. window.addEventListener("load", () => {
  146. document.querySelector("#type").addEventListener("change", () => {toanalyze()})
  147. document.getElementById("form").addEventListener("submit", function (event) {
  148. event.preventDefault();
  149. if (!t) {
  150. t = true;
  151. Form(() => {
  152. t = false;
  153. });
  154. } else {
  155. alert("一次只能查询一个用户")
  156. }
  157. })
  158. })
  159. })();
  160.