Greasy Fork

Greasy Fork is available in English.

大别野[米游社频道]右侧成员栏显示频道用户数,标签位置显示频道创建时间

大别野[米游社频道]右侧成员栏显示频道用户数,标签位置显示频道创建时间。自用

当前为 2024-05-24 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         大别野[米游社频道]右侧成员栏显示频道用户数,标签位置显示频道创建时间
// @name:en   Display Dabieye [Mihoyo channel] members & channel creation time
// @namespace    http://tampermonkey.net/
// @version      0.4.2
// @description  大别野[米游社频道]右侧成员栏显示频道用户数,标签位置显示频道创建时间。自用
// @description:en   Dabieye [Mihoyo channel] right side member column shows the number of channel users, and the label position shows the channel creation time. Self-use
// @author       aspen138
// @match        https://dby.miyoushe.com/*
// @match        https://dby.miyoushe.com/chat/*
// @icon         https://dby.miyoushe.com/favicon.png
// @require      https://update.greasyfork.icu/scripts/483208/1302155/ajaxHooker_myaijarvis.js
// @grant        GM_addStyle
// @run-at       document-start
// @license      MIT
// ==/UserScript==
 
 
 
// 定义一个全局对象,用来包装memberNum
var globals = {};
 
 
// Define the updateMemberText function
const updateMemberText = () => {
    console.log("触发updateMemberText");
 
    // Use setInterval to periodically check for the elements
    const intervalId = setInterval(() => {
        var elements = document.querySelectorAll('#__nuxt > div > div > div:nth-child(3) > div > h2');
        console.log(elements);
 
        // Only proceed if elements are found
        if (elements.length > 0) {
            elements.forEach(targetElement => {
                if (targetElement && targetElement.textContent.includes('')) {
                    targetElement.childNodes.forEach((child) => {
                        if (child.nodeType === Node.TEXT_NODE && child.textContent.includes('')) {
                            console.log("这个应该后出现 频道人数函数里", globals.memberNum);
                            child.textContent = globals.memberNum + '名频道成员';
                        }
                    });
                }
            });
 
            // Clear the interval once updates are made
            clearInterval(intervalId);
        }
    }, 100); // Check every 100ms or any other reasonable time interval
};
 
 
//"退出大别野"文字改为更容易理解的"退出此频道"
(function (){
  // Function to observe DOM changes
    const observeDOM = () => {
        // Options for the observer (which mutations to observe)
        const config = {
            childList: true,
            subtree: true
        };
 
        // Callback function to execute when mutations are observed
        const callback = function(mutationsList, observer) {
            for (let mutation of mutationsList) {
                if (mutation.type === 'childList') {
                    changeTextContent();
                }
            }
        };
 
        // Create an observer instance linked to the callback function
        const observer = new MutationObserver(callback);
 
        // Start observing the target node for configured mutations
        observer.observe(document.body, config);
    };
 
    // Function to change the text content
    const changeTextContent = () => {
        // Select the element based on its inner text
        let elements = Array.from(document.querySelectorAll('span'));
        let targetElement = elements.find(el => el.textContent.includes('退出大别野'));
 
        // If the element is found, change its text content
        if (targetElement) {
            targetElement.textContent = '退出此频道';
        }
    };
 
    // Wait for the DOM to be fully loaded
    document.addEventListener('DOMContentLoaded', observeDOM);
})();
 
 
(function() {
    'use strict';
 
    function timestampToTime(timestamp) {
        const milliseconds = timestamp * 1000;
        const date = new Date(milliseconds);
        const year = date.getFullYear();
        const month = addZero(date.getMonth() + 1);
        const day = addZero(date.getDate());
        const hour = addZero(date.getHours());
        const minute = addZero(date.getMinutes());
        const second = addZero(date.getSeconds());
 
        return `${ year }-${ month }-${ day } ${ hour }:${ minute }:${ second }`;
    }
 
    function addZero(num) {
        return num < 10 ? `0${ num }` : `${ num }`;
    }
 
    
 
    ajaxHooker.hook(request => {
        if (request.url.includes("https://bbs-api.miyoushe.com/vila/wapi/villa/v2/getVillaFull")
            // || request.url.includes("https://bbs-api.miyoushe.com/vila/wapi/home/list")
        ) {
            //console.log("成功劫持")
            //console.log(request)
            request.response = res => {
                //console.log('\n== ↓ ↓ ↓ ↓ ↓ == \n', res)
                var jsonString = res.responseText
                try {
                    var json = JSON.parse(jsonString);
                    globals.memberNum = json.data.villa_full_info.villa_info.member_num;
                    var createdAt = timestampToTime(Number(json.data.villa_full_info.villa_info.villa_created_at));
                    console.log("这个应该先出现    频道人数函数里",globals.memberNum)
                    //json.data.villa_full_info.villa_info.tags.push('人数:' + globals.memberNum);
                    setTimeout(updateMemberText(),10*1000);
                    json.data.villa_full_info.villa_info.tags.push('创建时间:' + createdAt);
                    res.responseText = JSON.stringify(json);
                } catch (e) {
                    console.error("Parsing error:", e);
                }
                // GM_addStyle(`
                // .memberNum {
                // 			position: absolute;
                // 			left: 0;
                // 			bottom: -25px;
                // 			color: #999;
                // 		}
                // `);
            }
        }
    });
    // Your code here...
})();