CC98查询粉丝的变动

自动获取所有粉丝名字

目前為 2024-12-29 提交的版本,檢視 最新版本

// ==UserScript==
// @name         CC98查询粉丝的变动
// @namespace    http://tampermonkey.net/
// @version      5.1
// @description  自动获取所有粉丝名字
// @author       Lay
// @match        https://www.cc98.org/usercenter/myfans
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @license      AGPL -3.0 
// @grant        GM_xmlhttpRequest
// ==/UserScript==
(function () {
    'use strict';

    // 提取总页数
    function getTotalPages() {
        const pageCountElement = document.querySelector('#userCenterPageCount ul');
        let totalPages = 0;

        if (pageCountElement) {
            const pageItems = pageCountElement.querySelectorAll('li');
            totalPages = pageItems.length;
            console.log(`总页数: ${totalPages}`);
        } else {
            console.error('无法找到总页数元素');
        }

        return totalPages;
    }

    // 获取当前页面的粉丝信息
    function getFansFromCurrentPage() {
        let fanElements = document.querySelectorAll('.user-center-myfollowings-user');
        let fans = Array.from(fanElements).map(el => {
            let name = el.querySelector('.user-center-myfollowings-user-id a').textContent.trim();
            let posts = el.querySelector('.user-center-myfollowings-user-posts').textContent.trim();
            let followers = el.querySelector('.user-center-myfollowings-user-fans').textContent.trim();
            return { name, posts, followers };
        });

        console.log("当前页粉丝信息:", fans);
        return fans;
    }

    // 抓取所有粉丝信息
    async function scrapeAllFans() {
        let allFans = [];
        let totalPages = getTotalPages();

        // 如果获取不到总页数,停止执行
        if (totalPages === 0) {
            console.error("无法获取总页数,无法继续执行");
            return;
        }

        for (let i = 1; i <= totalPages; i++) {
            console.log(`正在抓取第 ${i} 页...`);

            // 模拟点击翻页
            await changePage(i);

            // 获取当前页面的粉丝信息
            let fans = getFansFromCurrentPage();
            allFans = allFans.concat(fans);
        }

        console.log("所有粉丝信息:", allFans);
        alert(`共抓取到 ${allFans.length} 位粉丝的信息!`);

        // 获取并存储上次存储的粉丝信息
        let storedFans = JSON.parse(localStorage.getItem("fansData") || "[]");

        // 比较当前粉丝与之前存储的粉丝数据
        compareFansData(allFans, storedFans);

        // 存储当前抓取到的粉丝信息
        localStorage.setItem("fansData", JSON.stringify(allFans));
    }

    // 比较当前粉丝数据与存储的粉丝数据
    function compareFansData(currentFans, storedFans) {
        let addedFans = currentFans.filter(currentFan => 
            !storedFans.some(storedFan => storedFan.name === currentFan.name)
        );
        let removedFans = storedFans.filter(storedFan => 
            !currentFans.some(currentFan => currentFan.name === storedFan.name)
        );

        if (addedFans.length > 0) {
            alert(`新增的粉丝: ${addedFans.map(fan => fan.name).join(', ')}`);
        }
        if (removedFans.length > 0) {
            alert(`移除的粉丝: ${removedFans.map(fan => fan.name).join(', ')}`);
        }
        if (addedFans.length === 0 && removedFans.length === 0) {
            alert("没有粉丝变动");
        }
    }

    // 模拟点击分页链接并等待加载
    async function changePage(pageNumber) {
        let paginationLink = document.querySelector(`#userCenterPageCount ul li:nth-child(${pageNumber}) a`);
        if (paginationLink) {
            console.log(`点击分页链接: 第 ${pageNumber} 页`);
            paginationLink.click();

            // 等待页面加载完成,可以调整等待时间以确保页面加载完毕
            await new Promise(resolve => setTimeout(resolve, 2000));
        } else {
            console.error(`找不到第 ${pageNumber} 页的分页链接`);
        }
    }

    // 延迟执行脚本
    setTimeout(function () {
        console.log("脚本已延迟执行");

        // 执行抓取粉丝信息
        scrapeAllFans();

    }, 1000);  // 延迟 1000 毫秒 (1秒)

})();

QingJ © 2025

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