论坛的能量在哪里查看呀? 好久没上来了,发现论坛完全改版了

论坛的能量在哪里查看呀? 好久没上来了,发现论坛完全改版了

2 个赞

我之前也找了好久
点开个人主页,右上角,展开
就能看到了

1 个赞

你可以在帖子里面点击自己的头像

也可以右上角点击自己头像==》右侧边栏最下面的个人资料==》总结的信息里查看

最后也可以添加个油猴脚本来显示在论坛右上角

image

油猴脚本
// ==UserScript==
// @name         NodeLoc 导航栏能量显示
// @namespace    http://tampermonkey.net/
// @icon         data:image/png;base64,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
// @version      0.5
// @description  在导航栏显示能量数值(图标前置+黑色透明样式)
// @author       You & Hiram
// @match        https://nodeloc.cc/*
// @match        https://nodeloc.com/*
// @run-at       document-end
// @grant        GM_addStyle
// @connect      nodeloc.cc
// @connect      nodeloc.com
// ==/UserScript==

(function () {
  "use strict";

  // 创建导航栏元素
  function createEnergyDisplayItem() {
    const li = document.createElement("li");
    li.className = "header-dropdown-toggle energy-display";

    li.innerHTML = `
      <div class="energy-display-container">
        <div class="left">
          <svg width="24" height="24" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg" class="fa d-icon d-icon-calendar-check svg-icon svg-string">
            <path d="M31 4H16L10 27H18L14 44L40 16H28L31 4Z" fill="none" stroke="#9b9b9b" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
            <path d="M21 11L19 19" stroke="#9b9b9b" stroke-width="4" stroke-linecap="round"/>
          </svg>
        </div>
        <div class="right">
          <div class="title">能量值</div>
          <div class="value">加载中...</div>
        </div>
      </div>
    `;

    // 插入到导航栏第一个位置
    const navBar = document.querySelector("ul.d-header-icons");
    if (navBar) {
      navBar.insertBefore(li, navBar.firstChild);
      return li.querySelector(".value");
    }
    return null;
  }

  // 创建样式
  function createEnergyDisplayStyle() {
    GM_addStyle(`
      .energy-display {
      }
      .energy-display .energy-display-container {
        box-sizing: content-box;
        -webkit-appearance: none;
        appearance: none;
        position: relative;
        display: flex;
        align-items: center;
        justify-content: center;
        height: 2.2857em;
        padding: .2143em;
        text-decoration: none;
        cursor: pointer;
        border: 1px solid rgba(0, 0, 0, 0);
        outline: none;
        gap: 0.2143em;
        color: var(--header_primary-low-mid);
      }
      .energy-display .energy-display-container .left svg path {
        stroke: var(--header_primary-low-mid);
      }
      .energy-display .energy-display-container .right {
        font-size: 18px;
        line-height: 1.2;
        display: flex;
        flex-direction: column;
        align-items: flex-end;
      }
      .energy-display .energy-display-container .right .title {
        font-size: 12px;
      }
      .energy-display .energy-display-container .right .value {
        font-size: 16px;
        font-weight: bold;
        opacity: 1;
      }
    `);
  }

  function xhrRequest(options) {
    const {
      url,
      method = "GET",
      headers = {},
      body = null,
      withCredentials = false,
      responseType = "text",
    } = options;

    const xhr = new XMLHttpRequest();
    xhr.open(method, url);
    xhr.withCredentials = withCredentials;
    xhr.responseType = responseType;

    if (Object.keys(headers).length) {
      for (const [key, value] of Object.entries(headers)) {
        xhr.setRequestHeader(key, value);
      }
    }

    return new Promise((resolve, reject) => {
      xhr.onload = () => {
        const code = xhr.status;
        if (code >= 200 && code <= 299) {
          resolve(xhr.response);
        } else {
          reject(new Error(`Network Error: ${code}`));
        }
      };

      xhr.onerror = () => {
        reject(new Error("Network Error"));
      };

      xhr.ontimeout = () => {
        reject(new Error("Request timed out"));
      };

      if (!["get"].includes(method.toLowerCase())) {
        xhr.send(body);
      } else {
        xhr.send();
      }
    });
  }

  // 获取并更新能量值
  async function updateEnergyValue(displayElement) {
    xhrRequest({
      url: "https://nodeloc.cc/leaderboard/1.json",
      method: "GET",
      headers: {
        "Content-Type": "application/json",
      },
      withCredentials: true,
      responseType: "json",
    }).then((res) => {
      if (displayElement) {
        displayElement.textContent = res.personal.user.total_score.toString();
      }
    }).catch((err) => {
      console.error('TampermonKey-NodeLoc-xhrRequest', err.message);
      handleError(displayElement);
    });

    // GM_xmlhttpRequest({
    //   method: "GET",
    //   url: "https://nodeloc.cc/leaderboard/1.json",
    //   withCredentials: true,
    //   onload: function (response) {
    //     try {
    //       const data = JSON.parse(response.responseText);
    //       if (displayElement) {
    //         displayElement.textContent =
    //           data.personal.user.total_score.toLocaleString();
    //       }
    //     } catch (err) {
    //       console.error('TampermonKey-NodeLoc-RespParse',err.message);
    //       handleError(displayElement);
    //     }
    //   },
    //   onerror: function (err) {
    //     console.error('TampermonKey-NodeLoc-xhrRequest',err.message);
    //     handleError(displayElement);
    //   },
    // });
  }

  // 错误处理
  function handleError(displayElement) {
    if (displayElement) {
      displayElement.textContent = "--";
    }
  }

  // 等待导航栏加载
  const observer = new MutationObserver(() => {
    const navBar = document.querySelector("ul.d-header-icons");

    if (navBar) {
      observer.disconnect();
      createEnergyDisplayStyle();
      const displayElement = createEnergyDisplayItem();

      if (displayElement) {
        // 初始加载
        updateEnergyValue(displayElement);
        // 每30秒刷新
        setInterval(() => updateEnergyValue(displayElement), 30000);
      }
    }
  });

  observer.observe(document, {
    childList: true,
    subtree: true,
  });
})();
4 个赞

好的 感谢佬

好的 感谢佬

大佬,这个脚本问你下是你写的吗?如果是的话我能否拿去整合成一个NL增强脚本?
提供下开源协议谢谢 :smiley:

不是我写的,也是网上搜到的~

1 个赞