- "use strict";
- // ==UserScript==
- // @name 提升卡记录
- // @version 0.1.5
- // @match https://www.mcbbs.net/home.php?mod=space*
- // @match https://www.mcbbs.net/?*
- // @match https://www.mcbbs.net/forum.php?mod=viewthread&tid=*
- // @match https://www.mcbbs.net/thread-*.html
- // @author xmdhs
- // @license MIT
- // @description 查看用户的提升卡使用记录
- // @namespace https://gf.qytechs.cn/users/166541
- // ==/UserScript==
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
- };
- (() => __awaiter(void 0, void 0, void 0, function* () {
- if (location.href.startsWith("https://www.mcbbs.net/home.php?mod=space") || location.href.startsWith("https://www.mcbbs.net/?")) {
- yield userPage();
- return;
- }
- else {
- let doms;
- try {
- doms = document.querySelectorAll("div.pi > div > a.xw1");
- }
- catch (e) {
- return;
- }
- let i = 0;
- for (const dom of Array.from(doms)) {
- i++;
- if (!(dom instanceof HTMLAnchorElement)) {
- continue;
- }
- let u = new URL(dom.href);
- const uid = u.searchParams.get("uid");
- if (!uid)
- continue;
- dosome(uid, dom, 0);
- if (i > 5) {
- yield new Promise((r) => setTimeout(r, 1000));
- i = 0;
- }
- }
- }
- function userPage() {
- return __awaiter(this, void 0, void 0, function* () {
- const uid = getuid();
- if (uid === null) {
- alert("无法获取 uid");
- return;
- }
- let d = {
- data: [],
- msg: "",
- code: 0
- };
- let f = yield fetch(`https://auto.xmdhs.com/getforuid?uid=` + uid);
- d = yield f.json();
- if (d.code != 0) {
- console.warn(d.msg);
- alert(d.msg);
- return;
- }
- const profile = document.querySelector(".bm_c.u_profile");
- if (profile && profile.lastElementChild) {
- profile.lastElementChild.className = "pbm mbm bbda cl";
- }
- const p = document.querySelector("#ct > div > div.bm.bw0 > div > div.bm_c.u_profile");
- const div = document.createElement("div");
- p ? p.appendChild(div) : console.warn("没有找到");
- const text = document.createElement("h2");
- text.className = "mbn";
- text.innerText = "提升卡记录";
- div.appendChild(text);
- if (d.data == null) {
- console.log("没有数据");
- return;
- }
- div.appendChild(makeTable(d.data));
- });
- }
- function countData(data) {
- let m = {};
- for (const v of data) {
- if (v.operation.indexOf("提升卡") == -1) {
- continue;
- }
- if (m[v.tid] == undefined) {
- m[v.tid] = { count: 1, lastime: v.time };
- }
- else {
- m[v.tid].count++;
- v.time > m[v.tid].lastime && (m[v.tid].lastime = v.time);
- }
- }
- let l = [];
- for (const key in m) {
- let v = m[key];
- l.push({
- count: v.count,
- lastime: v.lastime,
- tid: Number(key)
- });
- }
- l.sort((a, b) => b.lastime - a.lastime);
- return l;
- }
- function makeTable(data) {
- const c = countData(data);
- let table = document.createElement("table");
- table.className = "bm dt";
- let tbody = document.createElement("tbody");
- table.appendChild(tbody);
- let tr = document.createElement("tr");
- tbody.appendChild(tr);
- tr.innerHTML = `<th class="xw1">tid</th><th class="xw1">数量</th><th class="xw1">上一次顶贴时间</th>`;
- for (const v of c) {
- let trr = document.createElement("tr");
- tbody.appendChild(trr);
- addTr(trr, `<a href="https://www.mcbbs.net/thread-${v.tid}-1-1.html" target="_blank">${v.tid}</a>`, true);
- addTr(trr, String(v.count));
- addTr(trr, transformTime(v.lastime));
- }
- return table;
- }
- function addTr(item, v, h) {
- let t = document.createElement("td");
- if (h === true) {
- t.innerHTML = v;
- }
- else {
- t.innerText = v;
- }
- item.appendChild(t);
- }
- function transformTime(timestamp) {
- var time = new Date(timestamp * 1000);
- var y = time.getFullYear();
- var M = time.getMonth() + 1;
- var d = time.getDate();
- var h = time.getHours();
- var m = time.getMinutes();
- return y + '-' + addZero(M) + '-' + addZero(d) + ' ' + addZero(h) + ':' + addZero(m);
- }
- function addZero(m) {
- return m < 10 ? '0' + String(m) : String(m);
- }
- function getuid() {
- let u = new URL(location.href);
- let uid = u.searchParams.get('uid');
- if (uid && uid.length > 0) {
- return uid;
- }
- let dom = document.querySelector("#uhd > div > div > a");
- if (dom.href.length > 0) {
- u = new URL(dom.href);
- return u.searchParams.get('uid');
- }
- return null;
- }
- function dosome(uid, dom, i) {
- var _a, _b, _c;
- return __awaiter(this, void 0, void 0, function* () {
- i++;
- if (i > 3) {
- console.warn(`${uid} 失败超过3次,跳过`);
- return;
- }
- try {
- const data = yield getData(uid);
- if (data.length == 0) {
- return;
- }
- const dd = document.createElement("dd");
- let c = 0;
- data.forEach(v => {
- if (v.operation.indexOf("提升卡") != -1) {
- c++;
- }
- });
- dd.textContent = `${c} 张`;
- const dt = document.createElement("dt");
- const timg = document.createElement("img");
- timg.src = "https://www.mcbbs.net/source/plugin/mcbbs_mcserver_plus/magic/magic_serverBump.small.gif";
- timg.style.verticalAlign = "middle";
- dt.textContent = ` 提升`;
- dt.style.color = "red";
- dt.style.fontWeight = "bold";
- dt.insertBefore(timg, dt.firstChild);
- const dl = (_c = (_b = (_a = dom === null || dom === void 0 ? void 0 : dom.parentNode) === null || _a === void 0 ? void 0 : _a.parentNode) === null || _b === void 0 ? void 0 : _b.parentNode) === null || _c === void 0 ? void 0 : _c.querySelector("dl.pil");
- dl === null || dl === void 0 ? void 0 : dl.appendChild(dt);
- dl === null || dl === void 0 ? void 0 : dl.appendChild(dd);
- }
- catch (e) {
- console.warn(e);
- yield new Promise((r) => setTimeout(r, 2000));
- yield dosome(uid, dom, i);
- }
- });
- }
- function getData(uid) {
- return __awaiter(this, void 0, void 0, function* () {
- let f = yield fetch(`https://auto.xmdhs.com/getforuid?uid=` + uid);
- let d = {
- data: [],
- msg: "",
- code: 0
- };
- d = yield f.json();
- if (d.code != 0) {
- throw new Error(d.msg);
- }
- if (d.data == null) {
- return [];
- }
- return d.data;
- });
- }
- }))();
- //# sourceMappingURL=bump.user.js.map