别看题解

在你看洛谷题解的时候把自己挂到犇犇。

// ==UserScript==
// @name         别看题解
// @namespace    http://tampermonkey.net/
// @version      0.7.2.1
// @description  在你看洛谷题解的时候把自己挂到犇犇。
// @author       0x3b800001&Maxwell_dcc
// @match        https://www.luogu.com.cn/*
// @icon         https://cdn.luogu.com.cn/upload/usericon/3.png
// @grant        GM_xmlhttpRequest
// @connect      *
// @license      GPL
// ==/UserScript==

function mstt(ms) {
  ms = Number(ms);
  let res = "";
  res += String(Math.floor(ms / 86400000)) + "d ";
  res += String(Math.floor(ms % 86400000 / 3600000)) + "h ";
  res += String(Math.floor(ms % 3600000 / 60000)) + "min ";
  res += String(Math.floor(ms % 60000 / 1000)) + "s";
  return res;
}
(function () {
  'use strict';
  let f = () => {
    if (localStorage["bktj-format"] == undefined) {
      localStorage["bktj-format"] = "这个人在开题 bktjnumber bktjname 后 bktjtime 后看了题解\n\n![](https://cdn.luogu.com.cn/upload/image_hosting/3an86p0q.png) 警钟长鸣。";
    }
    if (localStorage["bktj-times"] == undefined) {
      localStorage["bktj-times"] = "2";
    }
    let lnk = window.location.href;
    if (lnk == "https://www.luogu.com.cn/user/setting#preference") {
      let r = prompt("格式(留空即为不变,具体使用方法见文档):");
      if (r.length != 0) localStorage["bktj-format"] = r.replace(/\\n/g, "\n");
      r = prompt("询问次数(留空即为不变,具体使用方法见文档):");
      if (r.length != 0) localStorage["bktj-times"] = r;
      if (confirm("是否清空重复挂 localStorage")) {
        let tmp = localStorage;
        for (let i = 0; i < localStorage.length; ++i) {
          if (localStorage.key(i).indexOf("bktj-problemcache-") != -1) {
            tmp.removeItem(localStorage.key(i));
          }
        }
        localStorage = tmp;
      }
    } else if (lnk.indexOf("https://www.luogu.com.cn/problem/solution/") != -1) {
      var name = (document.getElementsByClassName('lfe-h1'))[0].innerHTML;
      let P = (name.split(' '))[0];
      name = name.substring(P.length + 1, name.length).split(" 题解")[0];
      console.log(P);
      console.log(name);
      GM_xmlhttpRequest({
        url: "https://www.luogu.com.cn/problem/" + P + "?_contentOnly=1",
        method: "GET",
        onload: function (response) {
          let rp = response.responseText;
          let qwww = rp.split("recommendations")[0];
          if (qwww.indexOf("\"submitted\":true") == -1) {
            console.log("未通过");
            let see = true;
            for (let i = 1; i <= localStorage["bktj-times"]; ++i) {
              if (!confirm("您尚未通过" + P + ",确认要看题解吗?")) {
                see = false;
                break;
              }
            }
            if (see) {
              if (localStorage["bktj-problemcache-" + P] == undefined) {
                if (localStorage["bktj-opentime-" + P] == undefined) localStorage["bktj-opentime-" + P] = Date.now();
                GM_xmlhttpRequest({
                  url: "https://www.luogu.com.cn/api/feed/postBenben",
                  headers: {
                    "content-type": "application/json",
                    "referer": "https://www.luogu.com.cn/",
                    "x-csrf-token": document.querySelector("meta[name=csrf-token]").content
                  },
                  data: JSON.stringify({
                    content: String(localStorage["bktj-format"])
                      .replace(/bktjnumber/g, P)
                      .replace(/bktjname/g, name)
                      .replace(/bktjtime/g, mstt(Date.now() - Number(localStorage["bktj-opentime-" + P])))
                  }),
                  method: "POST",
                });
                localStorage["bktj-problemcache-" + P] = 1;
              } else {
                console.log("已经挂过了");
              }
            } else {
              document.getElementsByClassName("lfe-form-sz-middle")[0].click();
              return;
            }
          } else {
            console.log("已通过");
          }
        }
      });
    } else if (lnk.indexOf("https://www.luogu.com.cn/problem/") != -1) {
      let nm = lnk.substring(33);
      if (localStorage["bktj-opentime-" + nm] == undefined) {
        localStorage["bktj-opentime-" + nm] = Date.now();
      }
      console.log(nm);
    }
  };
  try {
    setTimeout(f, 1000);
  } catch (e) {
    window.location.reload();
  }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址