Greasy Fork is available in English.
CC98消息已读辅助
// ==UserScript==// @name CC98消息辅助脚本// @namespace http://tampermonkey.net/// @version 0.1// @description CC98消息已读辅助// @author You// @match https://www.cc98.org/topic/*// @icon https://www.google.com/s2/favicons?sz=64&domain=greasyfork.org// @grant none// @license MIT// ==/UserScript==(async function () {'use strict';// Your code here...//https://api.cc98.org/user/name/用户姓名function sleep(ms) {return new Promise(resolve => setTimeout(resolve, ms));}function replaceAfterLastSlash(path) {let paths = path.split("/")if(paths.length === 4) {paths.pop() //有分页的情况}return paths.join("/")}function compareTime(a, b) {const _a = new Date(a)const _b = new Date(b)return _a > _b}const wait = async (done) => {while (true) {if (done()) {await sleep(1000)}else {break;}}}const checkRead = async () => {let replys = undefined;await wait(() => {replys = document.querySelectorAll(".reply")return replys.length === 0})const accessToken = localStorage.getItem("accessToken").replace("str-", '')const metaUrl = "https://api.cc98.org" + replaceAfterLastSlash(location.pathname)fetch(metaUrl, {headers: {Host: location.host,Authorization: accessToken}}).then(response => response.json()).then(responseJson => {//获取到lz的userNamereturn fetch(`https://api.cc98.org/user/name/${responseJson.userName}`).then(response => response.json()).then(responseJson => responseJson.lastLogOnTime)}).then(lastLogOnTime => {console.log(666, lastLogOnTime);[...replys].forEach(reply => {const time = reply.querySelector(".comment1 span").innerHTML.replace("发表于 ", '')reply.querySelector("#commentlike").insertAdjacentHTML('beforeend',`<div class="operation1" style="padding-left: 5px; padding-right: 5px;width: auto">楼主${compareTime(lastLogOnTime, time) ? '已' : '未'}读</div>`);})})}await wait(() => document.querySelector(".pagination") === null)document.addEventListener("click", async (e) => {if (e.target.classList.contains("page-link")) {await sleep(1000)checkRead()}})checkRead()})();