SuCloud / 【百科】复制优化

// ==UserScript==
// @name         【百科】复制优化
// @namespace    http://tampermonkey.net/
// @version      7.9
// @description  【百科】复制优化.
// @author       Youf
// @match        https://baike.baidu.com/item/*
// @match        https://baike.baidu.com/pic/*
// @match        https://baike.baidu.com/item/*?adplus
// @match        https://bkimg.cdn.bcebos.com/*autodownload*
// @match        https://baike.baidu.com/*?areyousuper
// @match        https://baike.baidu.com/item/*?fromtitle=*
// @match        https://baike.baidu.com/item/*?nothing


// @icon         https://www.google.com/s2/favicons?sz=64&domain=baidu.com
// @grant        none
// @license      MIT
// @downloadURL https://openuserjs.org/install/SuCloud/【百科】复制优化.user.js
// @updateURL https://openuserjs.org/meta/SuCloud/【百科】复制优化.meta.js
// ==/UserScript==

(function() {
    'use strict';


    //*************************************************************************************
    //----------------------------------------全局辅助函数
    //*************************************************************************************
    // 右下按键样式
    function addButton(innerHTML, bottom, right, where, onClick) {
        var mybutton = document.createElement("div");
        // var tag = document.querySelector(where);
        where.appendChild(mybutton);
        mybutton.id = innerHTML;
        mybutton.innerHTML = innerHTML;
        // mybutton.style.position = 'absolute';
        mybutton.style.position = "fixed";
        mybutton.style.bottom = bottom;
        mybutton.style.right = right;
        mybutton.style.width = "50px";
        mybutton.style.height = "45px";
        mybutton.style.background = "black";
        mybutton.style.opacity = "1";
        mybutton.style.color = "white";
        mybutton.style.textAlign = "center";
        mybutton.style.lineHeight = "45px";
        mybutton.style.fontSize = "30px";//按钮元素的字体大小
        mybutton.style.cursor = "pointer";
        mybutton.style.zIndex = "999999";
        // 设置点击事件
        mybutton.onclick = onClick;
    }

    // 函数运行次数、时间设置函数
    function runFunction(func, interval, count) {
        let currentCount = 0;
        const intervalID = setInterval(() => {
            func();
            currentCount++;
            if (currentCount === count) {
                clearInterval(intervalID);
            }
        }, interval);
    }
    // 展开角色列表等
    function 函数_展开角色列表() {
        // 获取所有具有指定类名的元素
        let elements = document.querySelectorAll('div[class*="showAll_"]');

        // 遍历每个元素并为其添加点击事件监听器
        elements.forEach(function(element) {
            element.click();
            console.log('[展开角色列表]');
        });

    }



    //*************************************************************************************
    //----------------------------------------改杂函数
    //*************************************************************************************
    function delZ() {

        let parent = document.querySelector('.J-lemma-content');

        // 去除目录右侧编辑按钮
        // 查找parent下所有类名中包含 "paraTitle" 和 "level-1" 字符串的div元素
        const paraTitleDivs = parent.querySelectorAll('[class*="paraTitle"][class*="level-1"]');

        // 遍历这些div,并删除其内的所有span元素
        paraTitleDivs.forEach((div) => {
            Array.from(div.getElementsByTagName('span')).forEach((span) => {
                span.remove();
            });
        });

        // 获取parent下所有class包含 "editLemma" 的div元素
        const editLemmaDivs = parent.querySelectorAll('[class*="editLemma"]');

        // 遍历并隐藏这些div元素
        editLemmaDivs.forEach((div) => {
            div.style.display = 'none';
        });


        // 去除多余目录
        // 分集剧情
        let delTag_plot = parent.querySelector('div[data-tag="module"][data-module-type="plot"]');
        if (delTag_plot) {
            delTag_plot.style.display = 'none';
        }

        // 去除多余内容-海报
        let delTag_A = document.querySelector('div[class*="posterBottom_"]');
        if (delTag_A) {
            delTag_A.remove();
        }
        let delTag_C = document.querySelector('div[class*="worksAndRelation_"]');
        if (delTag_C) {
            delTag_C.remove();
        }

        // 去除多余内容-右侧广告
        let delTag_B = document.querySelector('div[class="swiper swiper-initialized swiper-horizontal swiper-pointer-events swiper-backface-hidden"]');
        if (delTag_B) {
            //delTag_B.remove();
        }

        // 信息栏文字去空格
        let 信息栏 = document.querySelector('div[class*="basicInfo_"]');
        if (信息栏) {
            let dtElements = 信息栏.querySelectorAll('dt');
            dtElements.forEach(dt => {
                // 获取 dt 元素的文本内容
                let text = dt.textContent;
                // 删除中文文字中间的空格
                let processedText = text.replace(/(\S)\s+(\S)/g, '$1$2');
                // 将处理后的文本内容设置回 dt 元素
                dt.textContent = processedText;
            });
        }

    }

    //*************************************************************************************
    //----------------------------------------跳转完整url
    //*************************************************************************************
    function goAllUrl() {

        // 获取当前网页的URL
        const currentUrl = window.location.href;

        // 查询hreflang为"x-default"的link标签
        const defaultLink = document.querySelector('head > link[hreflang="x-default"]');

        // 检查是否找到了对应的link标签
        if (defaultLink) {
            const defaultHref = defaultLink.href;

            // 比较当前页面URL与查找到的href
            if (!currentUrl.includes('?adplus')
                && currentUrl !== defaultHref) {
                // 如果两者不一致,则跳转到href链接
                window.location.href = defaultHref;
            } else {
                console.log("当前页面已经是默认语言页面。");
            }
        } else {
            console.log("没有找到hreflang为'x-default'的链接。");
        }

    }




    //*************************************************************************************
    //----------------------------------------隐参函数
    //*************************************************************************************
    function delC(type) {
        // 获取所有class包含 'supWrap_xbcoi' 和 'J-supWrap' 的span元素
        let spans = document.querySelectorAll('span[class*="supWrap"][class*="J-supWrap"]');

        // 遍历并隐藏这些元素
        for (let i = 0; i < spans.length; i++) {
            if (type === 'notsee') {
                spans[i].style.display = 'none';
            } else if (type === 'cansee') {
                spans[i].style.display = '';
            }
        }
        spans = '';

        // 空格text_jaYku sup_xRHcs
        let supspans = document.querySelectorAll('span[class*="text_"][class*="sup_"]');

        // 遍历并隐藏这些元素
        for (let i = 0; i < supspans.length; i++) {
            if (type === 'notsee') {
                supspans[i].style.display = 'none';
            } else if (type === 'cansee') {
                supspans[i].style.display = '';
            }
        }
        supspans = '';


        // 本人 personalTag_Allop J-psl-tag
        let sups = document.querySelectorAll('sup[class*="personalTag_"]');

        // 遍历并隐藏这些元素
        for (let i = 0; i < sups.length; i++) {
            if (type === 'notsee') {
                sups[i].style.display = 'none';
            } else if (type === 'cansee') {
                sups[i].style.display = '';
            }
        }
        sups = '';

    }

    //*************************************************************************************
    //----------------------------------------隐函数;有序目录
    //*************************************************************************************
    function change_list(type) {//隐藏有序目录的序号
        //type:0隐藏,1展示
        // 获取所有class包含 'supWrap_xbcoi' 和 'J-supWrap' 的span元素
        let spans = document.querySelectorAll('span[class*="orderNum_"]');

        // 遍历并隐藏这些元素
        if (type == 0) {//0隐藏
            for (let i = 0; i < spans.length; i++) {

                if (spans[i].style.display != 'none') {
                    spans[i].style.display = 'none';
                }
            }
        }
        else if (type == 1) {//1展示
            for (let i = 0; i < spans.length; i++) {
                if (spans[i].style.display = 'none') {
                    spans[i].style.display = '';
                }

            }
        }
        else {//反转
            for (let i = 0; i < spans.length; i++) {
                if (spans[i].style.display != 'none') {
                    spans[i].style.display = 'none';
                }else if (spans[i].style.display = 'none') {
                    spans[i].style.display = '';
                }

            }
        }
        spans = '';

    }





    //*************************************************************************************
    //----------------------------------------改参函数
    //*************************************************************************************
    //对url中的一些内容进行修改
    function changeC_url(url) {//对url中的一些内容进行修改
        let ture_url = url;
        // 修改时光网旧链接
        if (ture_url?.includes('http://movie.mtime.com')
            && ture_url.endsWith('.html')) {
            ture_url = ture_url.replace(/\.html$/,'');
        }
        // 修改爱奇艺追踪链接
        if (ture_url?.includes('&rfr=https://baike.baidu.com')) {
            ture_url = ture_url.replace(/\&rfr=https:\/\/baike.baidu.com$/,'');
        }

        //http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2020/62/01/21/620121106.html
        ture_url = ture_url?.replace(/www.stats.gov.cn\/tjsj\/tjbz/g,'www.stats.gov.cn/sj/tjbz');
        url = ture_url;

        return url;
    }


    function changeReference_ready() {//修改参考资料的准备工作
        //定义一个window.PAGE_DATA.userReferenceData
        window.Reference_DATA = {
            userReferenceData: [
                { },
            ]
        };
        //定义的window.PAGE_DATA.userReferenceData使用window.PAGE_DATA.reference的数据
        window.Reference_DATA.userReferenceData = window.PAGE_DATA.reference;

        function getUrl() {
            // 假设 dataReference 已经存在
            let dataReference = window.PAGE_DATA.reference;

            // 使用异步函数来处理每一项的请求
            async function updateRefUrl() {
                for (let i = 0; i < dataReference.length; i++) {
                    let encodeUrl = dataReference[i].encodeUrl;
                    let apiUrl = `https://baike.baidu.com/lemma/api/reference/check?encodeUrl=${encodeUrl}`;

                    try {
                        // 发起异步请求
                        let response = await fetch(apiUrl);
                        if (response.ok) {

                            let json = await response.json();

                            // 获取 refUrl 并动态添加到 dataReference 中
                            if (json && json.data.refUrl) {
                                //dataReference[i].refUrl = json.data.refUrl;

                                window.Reference_DATA.userReferenceData[i].baseUrl = json.data.refUrl;
                                window.Reference_DATA.userReferenceData[i].trueUrl = changeC_url(json.data.refUrl);

                                console.log(`json.data.refUrl`, json.data.refUrl);
                            }
                        } else {
                            console.error(`Error fetching data for ${encodeUrl}`);
                        }
                    } catch (error) {
                        console.error(`Error fetching data for ${encodeUrl}:`, error);
                    }
                }

            }

            // 执行函数
            updateRefUrl();


        }


        /*    "reference":[
        {"type":3,"text":"中",                                                "index":1,"uuid":"sVFqjecyY0sZ"},
        {"type":1,            "title":"朗","site":"中","refDate":"2022-01-27","index":2,"uuid":"sVFr1hxWqq7C","encodeUrl":"53"},
        {"type":3,"text":"国",                                                "index":3,"uuid":"sVFr5ySeXXJs"}
        ]
         */
        getUrl();



        console.log('window.Reference_DATA.userReferenceData:',window.Reference_DATA.userReferenceData);
        console.log('window.PAGE_DATA.reference:',window.PAGE_DATA.reference);




    }


    function changeReference(){
        function changeReference_addData() {// 把数据放到网页标签中方便获取
            // 1. 创建一个新的 div 元素
            let newDiv = document.createElement("script");
            // 2. 为新 div 设置属性、内容或者样式(可选)
            newDiv.id = "addData"; // 设置 id
            //newDiv.innerHTML = window.Reference_DATA.userReferenceData; // 设置div的内容
            // let addDataText = JSON.stringify(window.Reference_DATA.userReferenceData, null, 2); // 将对象转为 JSON 字符串,并格式化
            let addDataText = window.Reference_DATA.userReferenceData.map(item => {
                return `"type": ${item.type}, "title": "${item.title}", "site": "${item.site}", "refDate": "${item.refDate}", "index": ${item.index}, "uuid": "${item.uuid}", "encodeUrl": "${item.encodeUrl}", "baseUrl": "${item.baseUrl}", "trueUrl": "${item.trueUrl}"`;
            }).join("\n");

            newDiv.innerHTML = addDataText;

            let addDataTag = document.querySelector("#addData");
            if(addDataTag) {
                addDataTag.remove();
            }

            // 3. 将新 div 添加到页面中的某个父元素
            document.body.appendChild(newDiv); // 将 div 添加到 body 元素的末尾

        }
        changeReference_addData();


        function changeReference_addTable(ckzl_supTag_this) {
            //参考资料序号
            let ckzl_ListNum = parseInt(ckzl_supTag_this.id, 10) - 1;


            //获取当前参考资料信息
            /*    "reference":[
        {"type":3,"text":"中",                                                "index":1,"uuid":"sVFqjecyY0sZ"},
        {"type":1,            "title":"朗","site":"中","refDate":"2022-01-27","index":2,"uuid":"sVFr1hxWqq7C","encodeUrl":"53"},baseUrl trueUrl
        {"type":3,"text":"国",                                                "index":3,"uuid":"sVFr5ySeXXJs"}
        ]
         */

            if (window.Reference_DATA.userReferenceData[ckzl_ListNum].type === 1 &&//是网络参考资料
                typeof window.Reference_DATA.userReferenceData[ckzl_ListNum].trueUrl !== 'undefined' &&//参考资料网址不为空
                !window.Reference_DATA.userReferenceData[ckzl_ListNum].trueUrl.includes('baidu')//参考资料网址不含百度
               ) {

                let ckzl_thisTag_title = window.Reference_DATA.userReferenceData[ckzl_ListNum].title;//文章标题
                let ckzl_thisTag_trueUrl = window.Reference_DATA.userReferenceData[ckzl_ListNum].trueUrl;//来源网址
                let ckzl_thisTag_site = window.Reference_DATA.userReferenceData[ckzl_ListNum].site;//网站名称

                // 打印参考资料信息
                console.log('ckzl_thisTag_trueUrl:',ckzl_thisTag_trueUrl)
                console.log('ckzl_thisTag_title:',ckzl_thisTag_title)
                console.log('ckzl_thisTag_site:',ckzl_thisTag_site)

                //当前参考资料信息
                let text = [, ckzl_thisTag_trueUrl, ckzl_thisTag_title, ckzl_thisTag_site]

                // 如果已有div则删除
                if (ckzl_supTag_this.parentNode.querySelector(`div[id="\[${ckzl_ListNum + 1}\]"]`)) {
                    ckzl_supTag_this.parentNode.querySelector(`div[id="\[${ckzl_ListNum + 1}\]"]`).remove();
                }

                // 创建容器div
                var newContainerDiv = document.createElement('div');
                newContainerDiv.style.display = 'flex'; // 使用Flex布局使子元素在同一行显示
                newContainerDiv.id = `\[${ckzl_ListNum + 1}\]`;

                for (let m = 0; m < 4; m++) {
                    let childDiv = document.createElement('div');
                    childDiv.style.border = '1px solid #000'; // 设置样式
                    childDiv.style.padding = '8px';
                    childDiv.style.width = '150px'; // 新增这一行来设定宽度
                    childDiv.style.zIndex = "999999";
                    childDiv.textContent = text[m]; // 文本内容
                    childDiv.sandbox = "allow-scripts allow-top-navigation-by-user-activation";
                    newContainerDiv.appendChild(childDiv);

                    // 定义一个变量来存储最后一个被点击的按钮
                    let lastClickedButton = null;

                    if (m === 0) {
                        // 创建按钮元素
                        const 按钮 = document.createElement('button');
                        按钮.textContent = '点击打开';
                        按钮.style.width = '100px'; // 设置宽度为100像素
                        按钮.style.height = '40px'; // 设置高度为50像素

                        // 给按钮添加点击事件处理程序
                        按钮.addEventListener('click', function(event) {
                            event.preventDefault(); // 阻止默认行为

                            const newWindow = window.open(ckzl_thisTag_trueUrl, '_blank', 'width=500,height=500');

                            // 关闭新窗口
                            setTimeout(function() {
                                newWindow.close();
                            }, 3500);

                            // 更新按钮颜色
                            if (lastClickedButton !== this) {
                                // 记录当前点击的按钮
                                lastClickedButton = this;
                                // 将当前点击的按钮背景设为红色
                                lastClickedButton.style.backgroundColor = 'red';
                            }

                            // 阻止滚动到按钮位置
                            event.stopPropagation(); // 阻止事件冒泡可能导致的滚动
                        });

                        // 将按钮添加到页面中的某个元素中
                        childDiv.appendChild(按钮);
                    } else if (m >= 1 && m <= 3) {
                        // 创建按钮元素
                        const 按钮 = document.createElement('button');
                        按钮.textContent = '复制文本';
                        按钮.style.width = '100px'; // 设置宽度为100像素

                        // 给按钮添加点击事件处理程序
                        按钮.addEventListener('click', function(event) {
                            event.preventDefault(); // 阻止默认行为

                            // 创建一个新的 textarea 元素,用于复制文本
                            const textarea = document.createElement('textarea');
                            textarea.value = text[m]; // 设置文本内容

                            // 将 textarea 添加到页面中,但是在视觉上隐藏它
                            textarea.style.position = 'absolute';
                            textarea.style.left = '-9999px';
                            document.body.appendChild(textarea);

                            // 选择并复制文本
                            textarea.select();
                            document.execCommand('copy');

                            // 删除 textarea 元素
                            document.body.removeChild(textarea);

                            // 提示复制成功
                            console.log('文本已复制: ' + text[m]);

                            // 更新按钮颜色
                            if (lastClickedButton !== this) {
                                // 记录当前点击的按钮
                                lastClickedButton = this;
                                // 将当前点击的按钮背景设为红色
                                lastClickedButton.style.backgroundColor = 'red';
                            }

                            // 阻止滚动到按钮位置
                            event.stopPropagation(); // 阻止事件冒泡可能导致的滚动
                        });

                        // 创建一个新的 div 元素用于放置按钮
                        const buttonDiv = document.createElement('div');
                        buttonDiv.style.zIndex = "999999";
                        buttonDiv.appendChild(按钮);

                        // 将按钮添加到页面中的某个元素中
                        childDiv.appendChild(buttonDiv);
                    }
                }

                // 将新创建的div插入到目标元素的父元素之后
                ckzl_supTag_this.parentNode.insertBefore(newContainerDiv, ckzl_supTag_this.nextSibling);
            }
        }


        // 获取所有sup  em元素
        let ckzl_supTag = document.querySelectorAll('span[class*="supWrap"][class*="J-supWrap"] > sup > em');
        for (let i = 0; i < ckzl_supTag.length; i++) {
            ckzl_supTag[i].id = ckzl_supTag[i].id.replace('sup-', '');//参考资料引用的id
            let ckzl_ListNum = parseInt(ckzl_supTag[i].id, 10) - 1;

            //如果是网络参考资料才添加按钮
            if (window.Reference_DATA.userReferenceData[ckzl_ListNum].type === 1) {
                changeReference_addTable(ckzl_supTag[i]);
            }
        };
    }






    //*************************************************************************************
    //----------------------------------------显示图片、参考资料数量
    //*************************************************************************************
    function numCanSee() {
        // 显示图片数量
        let main = document.querySelector("div.J-lemma-content");
        //  console.log('main',main);

        // 图册中的图片数量
        function numCanSee_imgsTag() {
            let images_card_list = main.querySelectorAll('div[data-module-type="album"]');
            // console.log('images_card_list',images_card_list);

            let images_num_imgsTag = 0;

            if (images_card_list) {

                images_card_list.forEach((image_card) => {
                    let image_num_this = 0;

                    let image_num_this_many = image_card.querySelector('span[class*="total_"]');
                    let image_num_this_many_hen = image_card.querySelector('div[class*="albumSwiper_"]');
                    if (image_num_this_many) {
                        image_num_this = image_num_this_many.textContent.trim().replace(/^\(/,'').replace(/张\)$/,'');
                        // 将字符串转换为数字
                        image_num_this = parseInt(image_num_this, 10);
                        //  console.log('image_num_this',image_num_this);
                    }
                    else if (image_num_this_many_hen) {
                        let image_num_this_many_hen_num = image_num_this_many_hen.querySelectorAll('img');
                        image_num_this = image_num_this_many_hen_num.length;
                    }

                    images_num_imgsTag = images_num_imgsTag + image_num_this;
                    //  console.log('image_num_this',image_num_this);
                    // console.log('images_num_imgTag',images_num_imgsTag);

                });
            }
            // 返回计算所得的总数
            return images_num_imgsTag;
        }

        // 图片中的图片数量
        function numCanSee_imgTag() {
            let image_card_list = main.querySelectorAll('div[class*="lemmaPicture_"]');
            // console.log('image_card_list',image_card_list);

            let image_num_imgTag = 0;

            if (image_card_list) {

                image_card_list.forEach((image_card) => {
                    let image_num_this = 0;


                    image_num_this = 1;


                    image_num_imgTag = image_num_imgTag + image_num_this;
                    //  console.log('image_num_this',image_num_this);
                    // console.log('image_num_imgTag',image_num_imgTag);

                });
            }
            // 返回计算所得的总数
            return image_num_imgTag;
        }


        // 表格中的图片数量
        function numCanSee_tableTag() {
            let table_card_list = main.querySelectorAll('div[class="table-baike-wrap"]');

            let table_num_imgTag = 0;

            if (table_card_list) {

                table_card_list.forEach((table_card) => {
                    let image_num_this = 0;

                    let image_num_this_many = table_card.querySelectorAll("div.table-image-wrap > div.poster-wrap > div.poster-image");
                    if (image_num_this_many) {
                        image_num_this += image_num_this_many.length;
                    }
                    else{
                        image_num_this += 0;
                    }

                    table_num_imgTag = table_num_imgTag + image_num_this;
                    //  console.log('image_num_this',image_num_this);
                    //  console.log('table_num_imgTag',table_num_imgTag);

                });
            }
            // 返回计算所得的总数
            return table_num_imgTag;
        }


        // 模板中的图片数量
        function numCanSee_modeTag() {
            let mode_card_list = main.querySelectorAll('div[class="imagetextlist-card-inner"]');
            //  console.log('mode_card_list',mode_card_list);
            let mode_num_imgTag = 0;

            if (mode_card_list) {
                mode_card_list.forEach((mode_card) => {
                    let mode_num_this = 0;

                    let mode_type_tag = mode_card.querySelector('div[class*="card-content-type"]');
                    let mode_type = mode_type_tag.classList.value;
                    switch (mode_type) {
                        case 'card-content-type1':
                            mode_num_this = mode_type_tag.querySelectorAll('div[class="cardinfo-image"]').length;
                            break;
                        case 'card-content-type2':
                            mode_num_this = mode_type_tag.querySelectorAll('div[class="cardinfo-image"]').length;
                            break;
                        case 'card-content-type3':
                            mode_num_this = mode_type_tag.querySelectorAll('div[class="cardinfo-image"]').length;
                            break;
                        default:
                            mode_num_this += 0;
                    }

                    mode_num_imgTag = mode_num_imgTag + mode_num_this;
                    //  console.log('image_num_this',image_num_this);
                    //  console.log('mode_num_imgTag',mode_num_imgTag);
                });
            }
            // 返回计算所得的总数
            return mode_num_imgTag;
        }



        // 参考资料数量
        function numCanSee_referencesTag() {
            // 显示参考资料数量
            let references = document.querySelector("div#J-lemma-reference");

            let references_list = '0';
            let references_num = 0;
            if(references){
                references_list = references.querySelectorAll('li[class*="referenceItem_"]');
                references_num = references_list.length;
            }

            // 返回计算所得的总数
            return references_num;
        }


        // 信息栏数量
        function numCanSee_basicTag() {
            let basics = document.querySelector("div.J-basic-info");
            let basics_box_list = basics.querySelectorAll("dt[class*='basicInfoItem_']");

            //模板中的有内容数量
            let basics_basic_list = [];

            basics_box_list.forEach(function(basics_box_list_num){
                let text = basics_box_list_num.textContent.trim();
                basics_basic_list.push(text);
            });

            basics_basic_list = [...new Set(basics_basic_list)];//内容去重

            // 返回计算所得的总数
            return basics_basic_list.length;


        }

        //信息栏数量
        let basic_num_all = numCanSee_basicTag();


        let image_num_imgs = numCanSee_imgsTag();
        let image_num_img = numCanSee_imgTag();
        let image_num_table = numCanSee_tableTag();
        let image_num_mode = numCanSee_modeTag();


        let image_num_all = numCanSee_imgsTag() + numCanSee_imgTag() + numCanSee_tableTag() + numCanSee_modeTag();


        //  console.log('image_num_imgs',image_num_imgs);
        //  console.log('image_num_img',image_num_img);
        //  console.log('image_num_table',image_num_table);
        //  console.log('image_num_mode',image_num_mode);


        let references_num_all = numCanSee_referencesTag();


        //显示

        let num_tag = document.querySelector('div#image_num_all');
        if (num_tag) {
            num_tag.remove();
        };


        var mybutton = document.createElement("div");
        // var tag = document.querySelector(where);
        document.querySelector("body").appendChild(mybutton);
        mybutton.id = 'image_num_all';
        mybutton.innerHTML =
            'b_all:' + basic_num_all + '<br/>'+
            'i_all:' + image_num_all + '<br/>'+
            'i_mod:' + image_num_mode + '<br/>'+
            'r_all:' + references_num_all
        ;
        // mybutton.style.position = 'absolute';
        mybutton.style.position = "fixed";
        mybutton.style.top = "80px";
        mybutton.style.right = "60px";
        mybutton.style.width = "65px";
        mybutton.style.height = "75px";
        mybutton.style.background = "white";
        mybutton.style.opacity = "1";
        mybutton.style.color = "black";
        mybutton.style.textAlign = "center";
        mybutton.style.lineHeight = "18px";
        mybutton.style.fontSize = "15px";//按钮元素的字体大小
        mybutton.style.cursor = "pointer";
        mybutton.style.zIndex = "999999";

    }



    //*************************************************************************************
    //----------------------------------------改图函数
    //*************************************************************************************
    function changeP() {
        let rules = [];

        rules = [
            //?x-bce-process=
            ['img','src',/\?x-bce-process=[\s\S]*/, "?x-bce-process=image/format,f_auto/resize,m_lfit,limit_1,w_1080"],//去一切
        ];


        // 获取img
        function getTags(tagType, styleType, beforeText, afterText) {
            let tags = document.querySelectorAll(tagType);

            tags.forEach(function(tag){
                let tagText = tag.getAttribute(styleType);
                // console.log('imgText的旧内容为:' + tagText);

                if (tagText) {
                    tagText = tagText.replace(beforeText, afterText);
                    tag.setAttribute(styleType, tagText);
                    // console.log('imgText的新内容为:' + tagText);
                }
            });
        }


        function goGetTags() {
            for (let i = 0; i < rules.length; i++) {
                let rule = rules[i];
                getTags(rule[0], rule[1], rule[2], rule[3]);
            }
        }
        goGetTags();
    }
    // 修改不显示概述图的词
    function changeTitleImg() {
        // 正常概述图img
        let changeTitleImg_img = document.querySelector('head > meta[name="image"]').content;

        // 正常概述图图册链接
        let changeTitleImg_urlA = document.querySelector('head > link[hreflang="x-default"]').href.replace('https://baike.baidu.com/item/','https://baike.baidu.com/pic/');
        let changeTitleImg_urlB = document.querySelector('head > meta[name="image"]').content.replace('https://bkimg.cdn.bcebos.com/pic/','').replace(/\?x-bce-process=.*/,'');
        let changeTitleImg_url = changeTitleImg_urlA + '/1/' + changeTitleImg_urlB;

        if (!changeTitleImg_url.includes('https://bkssl.bdimg.com/cms/static/baike.png')) {
            // 创建包含图片链接的 img 元素
            let imgElement = document.createElement('img');
            imgElement.setAttribute('width', '100%');
            imgElement.setAttribute('style', 'display: block;');
            imgElement.setAttribute('src', changeTitleImg_img);

            // 创建包含 img 元素的 a 元素
            let aElement = document.createElement('a');
            aElement.setAttribute('href', changeTitleImg_url);
            aElement.setAttribute('target', '_blank'); // 在新标签页打开链接
            aElement.appendChild(imgElement);

            // 创建包含 a 元素的 div 元素
            let divElement = document.createElement('div');
            divElement.classList.add('abstractAlbum_add');
            divElement.appendChild(aElement);

            // 将 div 元素插入到 div#side 的最前面
            let sideDiv = document.querySelector('div#side');
            sideDiv.insertBefore(divElement, sideDiv.firstChild);
        }
    }



    //*************************************************************************************
    //----------------------------------------改表函数
    //*************************************************************************************
    function changeTable() {

        //改表函数:引用函数
        function findFollowingDDByText(textTag, searchText) {
            let dtElements = textTag.getElementsByTagName('dt');
            for(let i = 0; i < dtElements.length; i++) {
                if(dtElements[i].textContent.trim() === searchText) {
                    let nextSibling = dtElements[i].nextElementSibling;
                    while (nextSibling && nextSibling.nodeType === Node.TEXT_NODE) {
                        // 跳过空白文本节点,直到找到下一个元素节点
                        nextSibling = nextSibling.nextSibling;
                    }
                    if (nextSibling && nextSibling.tagName.toLowerCase() === 'dd') {
                        return nextSibling.textContent;
                    }
                    break; // 找到匹配的dt后停止循环
                }
            }
            return null; // 如果未找到匹配项,则返回null
        }

        //*************************************************************************************
        //----------------------------------------改表函数:角色介绍/已优化
        //*************************************************************************************
        function changeTablef_role() {
            let tagName = 'role';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);
            tagDivs.forEach((teleplay) => {
                // 创建一个新的表格
                const table = document.createElement('table');
                table.id = `changeTablef_actor_${tagName}`;
                const thead = document.createElement('thead');
                const tbody = document.createElement('tbody');

                // 初始化列数据数组
                const columns = [
                    { header: '角色名称', data: [] },
                    { header: '演员名称', data: [] },
                    { header: '角色配音', data: [] },
                    { header: '角色简介', data: [] }
                ];

                // 遍历teleplay内的符合条件的子元素并填充表格数据
                let listTags = teleplay.querySelectorAll('div[class*="roleItem_"]');
                for (let i = 0; i < listTags.length; i++) {
                    const row = document.createElement('tr');


                    // 角色名称
                    const roleTd = document.createElement('td');
                    let roleText = listTags[i].querySelector('div[class*="roleName_"] > span > span').textContent?.replace(/[[0-9-]+]/g,'').trim();
                    roleTd.textContent = roleText === '' ? '-' : roleText === undefined ? '-' : roleText;
                    roleTd.textContent = roleText;
                    columns[0].data.push(roleText);

                    // 演员名称
                    const nameTd = document.createElement('td');
                    let nameText = listTags[i].querySelector('div[class*="roleActor_"] > span[class*="itemValue_"] > span').textContent?.replace(/[[0-9-]+]/g,'').trim();
                    nameText = nameText === '' ? '-' : nameText === undefined ? '-' : nameText;
                    nameTd.textContent = nameText;
                    columns[1].data.push(nameText);



                    // 角色配音
                    const soundTd = document.createElement('td');
                    let soundText = listTags[i].querySelector('div[class*="roleVoice_"] > span[class*="itemValue_"] > span')?.textContent?.replace('配音','').replace(/[[0-9-]+]/g,'').trim();
                    soundText = soundText === '' ? '-' : soundText === undefined ? '-' : soundText;
                    soundTd.textContent = soundText;
                    columns[2].data.push(soundText);

                    // 角色简介
                    const tipsTd = document.createElement('td');
                    let tipsText = listTags[i].querySelector('div[class*="roleDesc_"] > div[data-tag="paragraph"] > span[class*="text_"]')?.textContent?.replace(/[[0-9-]+]/g,'').trim();
                    tipsText = tipsText === '' ? '-' : tipsText === undefined ? '-' : tipsText;
                    tipsTd.textContent = tipsText;
                    columns[3].data.push(tipsText);


                    row.appendChild(roleTd);
                    row.appendChild(nameTd);
                    row.appendChild(soundTd);
                    row.appendChild(tipsTd);
                    tbody.appendChild(row);
                }

                // 创建一个数组来跟踪需要删除的列的索引
                let deletedColumns = [];

                // 遍历列数据数组,添加需要删除的列索引到 deletedColumns 数组中
                columns.forEach((column, index) => {
                    if (column.data.every(text => text === '-')) {
                        deletedColumns.push(index);
                    }
                });

                // 创建表头
                const headerRow = document.createElement('tr');
                columns.forEach((column, index) => {
                    if (!deletedColumns.includes(index)) {
                        const th = document.createElement('th');
                        th.textContent = column.header;
                        headerRow.appendChild(th);
                    }
                });
                thead.appendChild(headerRow);

                // 遍历表格行并删除列
                Array.from(tbody.rows).forEach(row => {
                    // 按相反的顺序删除列
                    for (let i = deletedColumns.length - 1; i >= 0; i--) {
                        row.deleteCell(deletedColumns[i]);
                    }
                });

                table.appendChild(thead);
                table.appendChild(tbody);


                // 如果已有则删除
                if (teleplay.parentNode.querySelector(`table#changeTablef_actor_${tagName}`)) {
                    teleplay.parentNode.querySelector(`table#changeTablef_actor_${tagName}`).remove();
                }
                // 在teleplay div的末尾插入表格
                teleplay.appendChild(table);
            });

        }

        //*************************************************************************************
        //----------------------------------------改表函数:影视/已优化
        //*************************************************************************************
        function changeTablef(tagName) {
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);


            tagDivs.forEach((teleplay) => {
                // 删除其中的所有参考资料,方便直接获取内容及其备注
                let supList = teleplay.querySelectorAll('sup');
                if (supList) {
                    supList.forEach((sup) => {
                        sup.remove();
                    });
                }


                // 创建一个新的表格
                const table = document.createElement('table');
                table.id = `changeTablef_${tagName}`;
                const thead = document.createElement('thead');
                const tbody = document.createElement('tbody');


                // 初始化列数据数组
                const columns = [
                    { header: '作品名称', data: [] },
                    { header: '首播时间', data: [] },
                    { header: '饰演', data: [] },
                    //{ header: '导演', data: [] },
                    //{ header: '主演', data: [] }
                ];


                // 遍历teleplay内的符合条件的子元素并填充表格数据
                let listTags = teleplay.querySelectorAll('div[class*="movieItem_"]');
                for (let i = 0; i < listTags.length; i++) {
                    const row = document.createElement('tr');

                    // 名称//*[@id="J-lemma-main-wrapper"]/div[2]/div/div[1]/div/div[6]/div[33]/div/div[1]/div/div[1]/div[2]/div[2]/div/div/b[1]/text()
                    const nameTd = document.createElement('td');
                    let nameText_title = listTags[i].querySelector('b[class*="title_"] > span[data-text="true"]')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    let nameText_all = listTags[i].querySelector('b[class*="title_"]')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    let nameText = nameText_all;
                    nameText = nameText === '' ? '-': nameText === undefined ? '-' : nameText;
                    nameTd.textContent = nameText.trim();
                    columns[0].data.push(nameText);

                    // 上映时间
                    const timeTd = document.createElement('td');
                    let timeText = listTags[i].querySelector('b[class*="title_"]').nextElementSibling.querySelector('span[data-text="true"]')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    timeText = timeText === '' ? '-': timeText === undefined ? '-' : timeText;
                    timeTd.textContent = timeText;
                    columns[1].data.push(timeText);

                    let textTag = listTags[i].querySelector('dl[class*="descWrapper_"]');

                    // 饰演角色
                    const roleTd = document.createElement('td');
                    let roleText = findFollowingDDByText(textTag, "饰演").replace(/[[0-9-]+]/g,'').trim();
                    roleText = roleText === '' ? '-': roleText === undefined ? '-' : roleText;
                    roleTd.textContent = roleText;
                    columns[2].data.push(roleText);

                    /*
                    // 导演
                    const dyTd = document.createElement('td');
                    let dyText = findFollowingDDByText(textTag, "导演").replace(/[[0-9-]+]/g,'').trim();
                    dyText = dyText === '' ? '-': dyText === undefined ? '-' : dyText;
                    dyTd.textContent = dyText;
                    columns[3].data.push(dyText);

                    // 主演
                    const zyTd = document.createElement('td');
                    let zyText = findFollowingDDByText(textTag, "主演").replace(/[[0-9-]+]/g,'').trim();
                    zyTd.textContent = zyText === '' ? '-' : zyText === undefined ? '-': zyText;
                    zyTd.textContent = zyText;
                    columns[4].data.push(zyText);
                    */

                    row.appendChild(nameTd);
                    row.appendChild(timeTd);
                    row.appendChild(roleTd);
                    // row.appendChild(dyTd);
                    // row.appendChild(zyTd);
                    tbody.appendChild(row);
                }

                // 创建一个数组来跟踪需要删除的列的索引
                let deletedColumns = [];

                // 遍历列数据数组,添加需要删除的列索引到 deletedColumns 数组中
                columns.forEach((column, index) => {
                    if (column.data.every(text => text === '-')) {
                        deletedColumns.push(index);
                    }
                });

                // 创建表头
                const headerRow = document.createElement('tr');
                columns.forEach((column, index) => {
                    if (!deletedColumns.includes(index)) {
                        const th = document.createElement('th');
                        th.textContent = column.header;
                        headerRow.appendChild(th);
                    }
                });
                thead.appendChild(headerRow);

                // 遍历表格行并删除列
                Array.from(tbody.rows).forEach(row => {
                    // 按相反的顺序删除列
                    for (let i = deletedColumns.length - 1; i >= 0; i--) {
                        row.deleteCell(deletedColumns[i]);
                    }
                });

                table.appendChild(thead);
                table.appendChild(tbody);

                // 如果已有则删除
                if (teleplay.parentNode.querySelector(`table#changeTablef_${tagName}`)) {
                    teleplay.parentNode.querySelector(`table#changeTablef_${tagName}`).remove();
                }
                // 在teleplay div的末尾插入表格
                teleplay.appendChild(table);
            });
        }
        //*************************************************************************************
        //----------------------------------------改表函数:演员表/已优化
        //*************************************************************************************
        function changeTablef_actor() {
            let tagName = 'actor';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);
            tagDivs.forEach((teleplay) => {
                // 创建一个新的表格
                const table = document.createElement('table');
                table.id = `changeTablef_actor_${tagName}`;
                const thead = document.createElement('thead');
                const tbody = document.createElement('tbody');

                // 初始化列数据数组
                const columns = [
                    { header: '演员', data: [] },
                    { header: '饰演', data: [] },
                    { header: '配音', data: [] },
                    { header: '备注', data: [] }
                ];

                // 遍历teleplay内的符合条件的子元素并填充表格数据
                let listTags = teleplay.querySelectorAll('div[class*="actorItem_"]');
                for (let i = 0; i < listTags.length; i++) {
                    const row = document.createElement('tr');

                    // 演员
                    const nameTd = document.createElement('td');
                    let nameText = listTags[i].querySelector('dl[class*="info_"] > dt').textContent?.replace(/[[0-9-]+]/g,'').split(' 饰 ')[0].trim();
                    nameText = nameText === '' ? '-' : nameText === undefined ? '-' : nameText;
                    nameTd.textContent = nameText;
                    columns[0].data.push(nameText);

                    // 饰演角色
                    const roleTd = document.createElement('td');
                    let roleText = listTags[i].querySelector('dl[class*="info_"] > dt').textContent?.replace(/[[0-9-]+]/g,'').split(' 饰 ')[1].trim();
                    roleTd.textContent = roleText === '' ? '-' : roleText === undefined ? '-' : roleText;
                    roleTd.textContent = roleText;
                    columns[1].data.push(roleText);

                    // 配音
                    const soundTd = document.createElement('td');
                    let soundText = listTags[i].querySelectorAll('dl[class*="info_"] > dd')[0]?.textContent?.replace('配音','').replace(/[[0-9-]+]/g,'').trim();
                    soundText = soundText === '' ? '-' : soundText === undefined ? '-' : soundText;
                    soundTd.textContent = soundText;
                    columns[2].data.push(soundText);

                    // 备注
                    const tipsTd = document.createElement('td');
                    let tipsText = listTags[i].querySelectorAll('dl[class*="info_"] > dd')[1]?.textContent?.replace('备注','')?.replace(/[[0-9-]+]/g,'').trim();
                    tipsText = tipsText === '' ? '-' : tipsText === undefined ? '-' : tipsText;
                    tipsTd.textContent = tipsText;
                    columns[3].data.push(tipsText);

                    row.appendChild(nameTd);
                    row.appendChild(roleTd);
                    row.appendChild(soundTd);
                    row.appendChild(tipsTd);
                    tbody.appendChild(row);
                }

                // 创建一个数组来跟踪需要删除的列的索引
                let deletedColumns = [];

                // 遍历列数据数组,添加需要删除的列索引到 deletedColumns 数组中
                columns.forEach((column, index) => {
                    if (column.data.every(text => text === '-')) {
                        deletedColumns.push(index);
                    }
                });

                // 创建表头
                const headerRow = document.createElement('tr');
                columns.forEach((column, index) => {
                    if (!deletedColumns.includes(index)) {
                        const th = document.createElement('th');
                        th.textContent = column.header;
                        headerRow.appendChild(th);
                    }
                });
                thead.appendChild(headerRow);

                // 遍历表格行并删除列
                Array.from(tbody.rows).forEach(row => {
                    // 按相反的顺序删除列
                    for (let i = deletedColumns.length - 1; i >= 0; i--) {
                        row.deleteCell(deletedColumns[i]);
                    }
                });

                table.appendChild(thead);
                table.appendChild(tbody);


                // 如果已有则删除
                if (teleplay.parentNode.querySelector(`table#changeTablef_actor_${tagName}`)) {
                    teleplay.parentNode.querySelector(`table#changeTablef_actor_${tagName}`).remove();
                }
                // 在teleplay div的末尾插入表格
                teleplay.appendChild(table);
            });

        }
        //*************************************************************************************
        //----------------------------------------改表函数:音乐专辑/已优化
        //*************************************************************************************
        function changeTablef_musicAlbum() {
            let tagName = 'musicAlbum';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);
            tagDivs.forEach((teleplay) => {
                // 创建一个新的表格
                const table = document.createElement('table');
                table.id = `changeTablef_musicAlbum_${tagName}`;
                const thead = document.createElement('thead');
                const tbody = document.createElement('tbody');

                // 初始化列数据数组
                const columns = [
                    { header: '专辑名称', data: [] },
                    { header: '发行时间', data: [] },
                    // { header: '专辑语言', data: [] },
                    // { header: '专辑类型', data: [] },
                    // { header: '唱片公司', data: [] },
                    // { header: '专辑简介', data: [] },
                    // { header: '专辑曲目', data: [] }
                ];

                // 遍历符合条件的子元素并填充表格数据
                let listTags = teleplay.querySelectorAll('div[class*="albumItem_"]');
                for (let i = 0; i < listTags.length; i++) {
                    const row = document.createElement('tr');

                    // 专辑名称
                    const nameTd = document.createElement('td');
                    let nameText = listTags[i].querySelector('div[class*="albumName_"] > span[data-text="true"]')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    nameText = nameText === '' ? '-': nameText === undefined ? '-' : nameText;
                    nameTd.textContent = nameText;
                    columns[0].data.push(nameText);


                    // 上映时间
                    const timeTd = document.createElement('td');
                    let timeText = listTags[i].querySelector('div[class*="albumDate_"] > span[data-text="true"]')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    timeText = timeText === '' ? '-': timeText === undefined ? '-' : timeText;
                    timeTd.textContent = timeText;
                    columns[1].data.push(timeText);


                    row.appendChild(nameTd);
                    row.appendChild(timeTd);
                    tbody.appendChild(row);

                }

                // 创建一个数组来跟踪需要删除的列的索引
                let deletedColumns = [];

                // 遍历列数据数组,添加需要删除的列索引到 deletedColumns 数组中
                columns.forEach((column, index) => {
                    if (column.data.every(text => text === '-')) {
                        deletedColumns.push(index);
                    }
                });

                // 创建表头
                const headerRow = document.createElement('tr');
                columns.forEach((column, index) => {
                    if (!deletedColumns.includes(index)) {
                        const th = document.createElement('th');
                        th.textContent = column.header;
                        headerRow.appendChild(th);
                    }
                });
                thead.appendChild(headerRow);

                // 遍历表格行并删除列
                Array.from(tbody.rows).forEach(row => {
                    // 按相反的顺序删除列
                    for (let i = deletedColumns.length - 1; i >= 0; i--) {
                        row.deleteCell(deletedColumns[i]);
                    }
                });

                table.appendChild(thead);
                table.appendChild(tbody);

                // 如果已有则删除
                if (teleplay.parentNode.querySelector(`table#changeTablef_musicAlbum_${tagName}`)) {
                    teleplay.parentNode.querySelector(`table#changeTablef_musicAlbum_${tagName}`).remove();
                }
                // 在teleplay div的末尾插入表格
                teleplay.appendChild(table);
            });
        }
        //*************************************************************************************
        //----------------------------------------改表函数:杂志写真/已优化
        //*************************************************************************************
        function changeTablef_magazine() {
            let tagName = 'magazine';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);
            tagDivs.forEach((teleplay) => {
                // 创建一个新的表格
                const table = document.createElement('table');
                table.id = `changeTablef_magazine_${tagName}`;
                const thead = document.createElement('thead');
                const tbody = document.createElement('tbody');

                // 初始化列数据数组
                const columns = [
                    { header: '杂志名称', data: [] },
                    { header: '杂志期数', data: [] },
                    { header: '图片位置', data: [] },
                    { header: '备注', data: [] }
                ];


                // 遍历teleplay内的符合条件的子元素并填充表格数据
                let listTags = teleplay.querySelectorAll('div[class*="magazineItem_"]');//class="magazineItem_aYGRC"
                for (let i = 0; i < listTags.length; i++) {
                    const row = document.createElement('tr');


                    // 杂志名称
                    const nameTd = document.createElement('td');
                    let nameText = listTags[i].querySelector('div[class*="name_"]')?.textContent?.replace(/[[0-9-]+]/g,'')?.trim();
                    nameText = nameText === '' ? '-': nameText === undefined ? '-' : nameText;
                    nameTd.textContent = nameText;
                    columns[0].data.push(nameText);

                    // 杂志期数
                    const timeTd = document.createElement('td');
                    let timeText = listTags[i].querySelector('div[class*="time_"] > span')?.textContent?.replace(/[[0-9-]+]/g,'')?.trim();
                    timeText = timeText === '' ? '-': timeText === undefined ? '-' : timeText;
                    timeTd.textContent = timeText;
                    columns[1].data.push(timeText);

                    // 图片位置
                    const locationTd = document.createElement('td');
                    let locationText = listTags[i].querySelector('div[class*="location_"] > span')?.textContent?.replace(/[[0-9-]+]/g,'')?.trim();
                    locationText = locationText === '' ? '-': locationText === undefined ? '-' : locationText;
                    locationTd.textContent = locationText;
                    columns[2].data.push(locationText);

                    // 备注
                    const tipsTd = document.createElement('td');
                    let tipsText = listTags[i].querySelector('div[class*="tips_"] > span')?.textContent?.replace(/[[0-9-]+]/g,'')?.trim();
                    tipsText = tipsText === '' ? '-' : tipsText === undefined ? '-' : tipsText;
                    tipsTd.textContent = tipsText;
                    columns[3].data.push(tipsText);


                    row.appendChild(nameTd);// 杂志名称
                    row.appendChild(timeTd);// 杂志期数
                    row.appendChild(locationTd);// 图片位置
                    row.appendChild(tipsTd);// 备注
                    tbody.appendChild(row);
                }

                // 创建一个数组来跟踪需要删除的列的索引
                let deletedColumns = [];

                // 遍历列数据数组,添加需要删除的列索引到 deletedColumns 数组中
                columns.forEach((column, index) => {
                    if (column.data.every(text => text === '-')) {
                        deletedColumns.push(index);
                    }
                });

                // 创建表头
                const headerRow = document.createElement('tr');
                columns.forEach((column, index) => {
                    if (!deletedColumns.includes(index)) {
                        const th = document.createElement('th');
                        th.textContent = column.header;
                        headerRow.appendChild(th);
                    }
                });
                thead.appendChild(headerRow);

                // 遍历表格行并删除列
                Array.from(tbody.rows).forEach(row => {
                    // 按相反的顺序删除列
                    for (let i = deletedColumns.length - 1; i >= 0; i--) {
                        row.deleteCell(deletedColumns[i]);
                    }
                });

                table.appendChild(thead);
                table.appendChild(tbody);

                // 如果已有则删除
                if (teleplay.parentNode.querySelector(`table#changeTablef_magazine_${tagName}`)) {
                    teleplay.parentNode.querySelector(`table#changeTablef_magazine_${tagName}`).remove();
                }
                // 在teleplay div的末尾插入表格
                teleplay.appendChild(table);
            });
        }
        //*************************************************************************************
        //----------------------------------------改表函数:出版图书/已优化
        //*************************************************************************************
        function changeTablef_publication() {
            let tagName = 'publication';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);
            console.log(tagDivs);

            tagDivs.forEach((teleplay) => {
                // 删除其中的所有参考资料,方便直接获取内容及其备注
                let supList = teleplay.querySelectorAll('sup');
                if (supList) {
                    supList.forEach((sup) => {
                        sup.remove();
                    });
                }


                // 创建一个新的表格
                const table = document.createElement('table');
                table.id = `changeTablef_${tagName}`;
                const thead = document.createElement('thead');
                const tbody = document.createElement('tbody');


                // 初始化列数据数组
                const columns = [
                    { header: '作品名称', data: [] },
                    { header: '作者名称', data: [] },
                    { header: '作品时间', data: [] },
                    { header: '作品简介', data: [] }
                ];


                // 遍历teleplay内的符合条件的子元素并填充表格数据
                let listTags = teleplay.querySelectorAll('li[class*="publicationItem_"]');
                console.log(listTags);
                for (let i = 0; i < listTags.length; i++) {
                    const row = document.createElement('tr');

                    // 作品名称
                    const nameTd = document.createElement('td');
                    let nameText_title = listTags[i].querySelector('div[class*="publicationName_"] > span > span')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    let nameText_all = listTags[i].querySelector('div[class*="publicationName_"] > span > span')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    let nameText = nameText_all;
                    nameText = nameText === '' ? '-': nameText === undefined ? '-' : nameText;
                    nameTd.textContent = nameText.trim();
                    columns[0].data.push(nameText);
                    console.log(nameText_all);

                    // 作者名称
                    const timeTd = document.createElement('td');
                    let timeText = listTags[i].querySelector('div[class*="publicationAuthor_"] > span[class*="itemValue_"] > span')?.textContent.replace(/[[0-9-]+]/g,'').trim();
                    timeText = timeText === '' ? '-': timeText === undefined ? '-' : timeText;
                    timeTd.textContent = timeText;
                    columns[1].data.push(timeText);


                    // 作品时间
                    const roleTd = document.createElement('td');
                    let roleText = listTags[i].querySelector('div[class*="publicationTime_"] > span[class*="itemValue_"] > span')?.textContent?.replace(/[[0-9-]+]/g,'').trim();
                    roleText = roleText === '' ? '-': roleText === undefined ? '-' : roleText;
                    roleTd.textContent = roleText;
                    columns[2].data.push(roleText);

                    // 作品简介
                    const dyTd = document.createElement('td');
                    let dyText = listTags[i].querySelector('dd[class*="publicationDesc_"] > div[data-tag="paragraph"] > span[data-text="true"]')?.textContent?.replace(/[[0-9-]+]/g,'').trim();
                    dyText = dyText === '' ? '-': dyText === undefined ? '-' : dyText;
                    dyTd.textContent = dyText;
                    columns[3].data.push(dyText);


                    row.appendChild(nameTd);
                    row.appendChild(timeTd);
                    row.appendChild(roleTd);
                    row.appendChild(dyTd);
                    tbody.appendChild(row);
                }

                // 创建一个数组来跟踪需要删除的列的索引
                let deletedColumns = [];

                // 遍历列数据数组,添加需要删除的列索引到 deletedColumns 数组中
                columns.forEach((column, index) => {
                    if (column.data.every(text => text === '-')) {
                        deletedColumns.push(index);
                    }
                });

                // 创建表头
                const headerRow = document.createElement('tr');
                columns.forEach((column, index) => {
                    if (!deletedColumns.includes(index)) {
                        const th = document.createElement('th');
                        th.textContent = column.header;
                        headerRow.appendChild(th);
                    }
                });
                thead.appendChild(headerRow);

                // 遍历表格行并删除列
                Array.from(tbody.rows).forEach(row => {
                    // 按相反的顺序删除列
                    for (let i = deletedColumns.length - 1; i >= 0; i--) {
                        row.deleteCell(deletedColumns[i]);
                    }
                });

                table.appendChild(thead);
                table.appendChild(tbody);

                // 如果已有则删除
                if (teleplay.parentNode.querySelector(`table#changeTablef_${tagName}`)) {
                    teleplay.parentNode.querySelector(`table#changeTablef_${tagName}`).remove();
                }
                // 在teleplay div的末尾插入表格
                teleplay.appendChild(table);
            });
        }
        //*************************************************************************************
        //----------------------------------------改表函数:演唱会记录
        //*************************************************************************************
        function changeTablef_concert() {
            let tagName = 'concert';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);
            tagDivs.forEach((teleplay) => {
                // 表头
                let trsT = teleplay.querySelectorAll('table thead tr th[width="45"]');
                if (trsT) {
                    trsT.forEach((trT) => {
                        trT.remove();
                    });
                }

                // 表格
                let trs = teleplay.querySelectorAll('table tbody tr td a[class*="Toggle_"]');
                trs.forEach((tr) => {
                    tr.parentNode.remove();
                });

                // 底色
                let divs = teleplay.querySelectorAll('div[class*="concertRecord_"]');
                divs.forEach((div) => {
                    div.className = '';
                });
            });
        }
        //*************************************************************************************
        //----------------------------------------改表函数:获奖记录
        //*************************************************************************************
        function changeTablef_award() {
            let tagName = 'award';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);
            // 去除旧标题,添加新标题
            tagDivs.forEach(tagDiv => {
                let rowsTable = tagDiv.querySelectorAll('div[class*="awardRecord_"] > table > tbody > tr > td > table');
                rowsTable.forEach(row => {
                    // 旧表格标题
                    let titleTag = row.parentNode.parentNode.previousElementSibling;
                    let title = titleTag.textContent.trim();
                    // 创建新的 <caption> 元素
                    let caption = document.createElement('caption');
                    caption.textContent = title;
                    // 在row的开头插入表格标题
                    let captionList = row.querySelectorAll('caption');
                    if (captionList.length > 0) {
                        captionList.forEach(no => {
                            no.remove();
                        });
                    }
                    row.prepend(caption);
                    // 删除旧表格标题
                    titleTag.remove();
                });
            });


            /*
                title = caption.textContent.trim();
                title = table.parentNode.parentNode.previousElementSibling.textContent.trim();
             */


            // 去除外框表格
            tagDivs.forEach(tagDiv => {
                let rowsBig = tagDiv.querySelectorAll('div[class*="awardRecord_"] > table[width="100%"]');
                rowsBig.forEach(table => {
                    // 创建新的 <div> 元素
                    let div = document.createElement('div');
                    // 复制 <table> 的所有内容
                    while (table.firstChild) {
                        div.appendChild(table.firstChild);
                    }
                    // 用 <div> 替换 <table>
                    table.parentNode.replaceChild(div, table);
                });
            });

            // 去除表格底色、表头宽度
            tagDivs.forEach(tagDiv => {
                let rows = tagDiv.querySelectorAll('tr > td[class*="innerTable_"]');
                rows.forEach(row => {
                    //  row.style.width = "";
                    row.className = '';
                });
            });


        }
        //*************************************************************************************
        //----------------------------------------改表函数:职员表
        //*************************************************************************************
        function changeTablef_staff() {
            let tagName = 'staff';
            const tagDivs = document.querySelectorAll(`div[data-module-type="${tagName}"]`);

            tagDivs.forEach(tagDiv => {
                // 去除表格底色
                let rows = tagDiv.querySelectorAll('table[class*="staffList_"]');
                rows.forEach(row => {
                    row.className = '';
                });
            });
        }






        changeTablef_role()
        // 电影
        changeTablef('movie');
        // 电视剧
        changeTablef('teleplay');

        // 演员表
        changeTablef_actor();
        // 音乐专辑
        changeTablef_musicAlbum();
        // 杂志写真
        changeTablef_magazine();
        // 出版图书
        changeTablef_publication();
        // 演唱会记录
        changeTablef_concert();
        // 获奖记录
        changeTablef_award();
        // 职员表
        changeTablef_staff();
    }
    // 修改特殊表格
    function changeTable_haveimg() {
        // 获取页面中所有的表格
        let tables = document.getElementsByTagName('table');

        // 遍历每个表格
        for (let i = 0; i < tables.length; i++) {
            let table = tables[i];
            let headers = table.querySelectorAll('tr th');

            // 检查表头是否符合要求:名称 图片 名称 图片
            if (headers.length === 4 &&
                headers[0].innerText.trim() === '名称' &&
                headers[1].innerText.trim() === '图片' &&
                headers[2].innerText.trim() === '名称' &&
                headers[3].innerText.trim() === '图片') {

                // 将每一行复制
                let rows = table.querySelectorAll('tr'); // 获取表格中所有行

                for (let j = 1; j < rows.length; j++) {
                    let row = rows[j];
                    let cells = row.querySelectorAll('td'); // 获取当前行的所有单元格

                    // 复制当前行
                    let clonedRow = row.cloneNode(true);

                    // 插入复制的行到当前行的后面
                    row.parentNode.insertBefore(clonedRow, row.nextSibling);
                }



                // 修改表头,变为两列
                headers[2].remove();
                headers[3].remove();

                let rows_new = table.querySelectorAll('tr'); // 获取表格中所有行

                for (let row_no = 1; row_no < rows_new.length; row_no++) {
                    let row_new = rows_new[row_no];
                    let cells_new = row_new.querySelectorAll('td'); // 获取当前行的所有单元格

                    if (row_no % 2 === 0) {
                        // row_no 是偶数
                        cells_new[0].remove();
                        cells_new[1].remove();
                    } else {
                        // row_no 是奇数
                        cells_new[2].remove();
                        cells_new[3].remove();
                    }
                }
            }


            // 检查
            if (headers.length === 3 &&
                headers[0].innerText.trim() !== '名称' && headers[0].innerText.trim() !== '图片' &&
                headers[1].innerText.trim() !== '名称' && headers[1].innerText.trim() !== '图片' &&
                headers[2].innerText.trim() !== '名称' && headers[2].innerText.trim() !== '图片') {
                // 将每一行复制
                let rows = table.querySelectorAll('tr'); // 获取表格中所有行

                for (let j = 1; j < rows.length; j++) {
                    let row = rows[j];
                    let cells = row.querySelectorAll('td'); // 获取当前行的所有单元格

                    // 复制当前行
                    let clonedRow = row.cloneNode(true);

                    // 插入复制的行到当前行的后面
                    row.parentNode.insertBefore(clonedRow, row.nextSibling);

                    // 再次复制当前行
                    let clonedRow2 = row.cloneNode(true);

                    // 插入第二个复制的行到当前行的后面
                    row.parentNode.insertBefore(clonedRow2, row.nextSibling);

                }



                let rows_new = table.querySelectorAll('tr'); // 获取表格中所有行

                for (let row_no = 1; row_no < rows_new.length; row_no++) {
                    let row_new = rows_new[row_no];
                    let cells_new = row_new.querySelectorAll('td'); // 获取当前行的所有列

                    if (row_no) {

                        for (let m = 0; m < cells_new.length; m++) {
                            cells_new[m].innerHTML=cells_new[row_no-1].innerHTML;//修改图片
                        }
                        for (let m = 0; m < cells_new.length; m++) {
                            cells_new[0].innerHTML=headers[row_no-1].innerHTML;//修改图片
                            cells_new[2].remove();
                        }

                    }


                }
                // 修改表头,变为两列
                headers[0].textContent = '名称';
                headers[1].textContent = '图片';
                headers[2].remove();

            }
        }
    }


    //*************************************************************************************
    //----------------------------------------表格复制按钮
    //*************************************************************************************
    function CopyTable(table) {
        // 确保table在DOM中存在
        if (table.parentNode) {
            let range = document.createRange();
            range.selectNode(table);
            window.getSelection().removeAllRanges();
            window.getSelection().addRange(range);

            try {
                document.execCommand('copy'); // 将选中内容复制到剪贴板
                console.log('表格已复制到剪贴板!');
            } catch (err) {
                console.error('无法复制表格:', err);
            }

            window.getSelection().removeAllRanges();

        } else {
            console.error('表格没有找到合适的父节点');
        }
    }
    function CopyTable_T(table) {
        // 确保table在DOM中存在
        if (table.parentNode.parentNode) {
            let title;
            let caption = table.querySelector('caption');
            if (caption) {
                title = caption.textContent.trim();
            } else {
                title = table.parentNode.parentNode.previousElementSibling.textContent.trim();
            }

            navigator.clipboard.writeText(title)
                .then(() => console.log('标题已复制到剪贴板:' + title))
                .catch(err => console.warning('标题复制失败:', err));
            /*   try {
                            document.execCommand('copy'); // 将选中内容复制到剪贴板
                            console.log('标题已复制到剪贴板!');
                        } catch (err) {
                            console.error('无法复制标题:', err);
                        }*/

            window.getSelection().removeAllRanges();

        } else {
            console.error('表格没有找到合适的父节点');
        }
    }



    function addCopyButtonToTable() {

        let tables = document.querySelectorAll('table');
        tables.forEach(function(table) {
            let tableFromType = table.parentNode.parentNode.dataset.moduleType;
            if (tableFromType && tableFromType.includes('staff')) {
                let emTag = table.parentNode.querySelector('em[class*="more_"]');
                if (emTag) {
                    emTag.click();
                    emTag.remove();
                }
            }



            // 创建按钮元素
            let button = document.createElement('button');
            button.textContent = '复制表格';
            button.id = '复制表格';
            button.style.position = 'absolute';
            button.style.top = '5px';
            button.style.right = '5px';
            button.style.zIndex = "999999";

            // 添加按钮点击事件处理程序
            button.addEventListener('click', function() {
                CopyTable(table);
                // 修改按钮样式为橙色
                button.style.backgroundColor = 'orange';
            });

            // 将按钮添加到页面中
            let tableContainer = table.parentNode;
            if (tableContainer.querySelector('#复制表格')) {
                tableContainer.querySelector('#复制表格').remove();
            }
            if (tableContainer) {
                tableContainer.style.position = 'relative'; // 确保图片的父元素是相对定位的
                tableContainer.insertBefore(button, tableContainer.firstChild);
            }


            // 创建按钮元素
            let buttonTitle = document.createElement('button');
            buttonTitle.textContent = '表格标题';
            buttonTitle.id = '表格标题';
            buttonTitle.style.position = 'absolute';
            buttonTitle.style.top = '5px';
            buttonTitle.style.right = '60px';
            buttonTitle.style.zIndex = "999999";

            // 添加按钮点击事件处理程序
            buttonTitle.addEventListener('click', function() {
                CopyTable_T(table);
                // 修改按钮样式为橙色
                buttonTitle.style.backgroundColor = 'orange';
            });

            // 将按钮添加到页面中
            let tableContainerTitle = table.parentNode;
            if (tableContainerTitle.querySelector('#表格标题')) {
                tableContainerTitle.querySelector('#表格标题').remove();
            }
            if (tableContainerTitle) {
                tableContainerTitle.style.position = 'relative'; // 确保图片的父元素是相对定位的
                tableContainerTitle.insertBefore(buttonTitle, tableContainerTitle.firstChild);
            }
        });
    }

    //*************************************************************************************
    //----------------------------------------修改信息栏
    //*************************************************************************************
    function changeBasics() {
        let basics = document.querySelector("div.J-basic-info");
        let sups = basics.querySelectorAll("sup");
        let basics_box_list = basics.querySelectorAll("div[class*='itemWrapper_']");//信息栏
        let basics_list = [[],[]];

        //删除参考资料
        sups.forEach(function(sup){
            sup.remove();
        });


        for (let i = 0;i< basics_box_list.length;i++) {
            let dtTag = basics_box_list[i].querySelector("dt");
            let dt = dtTag.innerText.trim().replace(/    /g,'');
            //let dd = basics_box_list[i].querySelector("dd").innerText.trim().replace(/\n/g,'、');
            let ddTag = dtTag.nextElementSibling;
            let dd = ddTag.innerText.trim().replace(/\n/g,'、');

            let dddiv = ddTag.querySelectorAll('div[class*="basicInfoOverlap_"]');

            // 对部分需要展开的内容进行获取
            if (dddiv.length > 0) {
                ddTag = dddiv[0].querySelector("dl > dd");
                let spanList = ddTag.querySelectorAll('span[class*="text_"]');
                let spanText = [];

                spanList.forEach(function(span){
                    spanText.push(span.textContent.trim()); // 将每个 span 的文本内容添加到数组中
                });

                // 信息栏xxl使用\n分隔,要改改这里【信息栏】
                // 使用 join 方法将数组元素合并成一个用\n分隔的字符串
                let combinedText = spanText.join('\n');
                dd = combinedText.trim();

            }


            // 将获取的内容添加到basics_list中
            if (basics_list[0].includes(dt)) {
                // 如果存在,找到索引并更新对应的dd
                let index = basics_list[0].indexOf(dt);
                // 合并dd内容
                basics_list[1][index] += '、' + dd;
            } else {
                // 如果不存在,将dt和dd添加到basics_list
                basics_list[0].push(dt);
                basics_list[1].push(dd);
            }


        }
        // 不适宜写入模板的内容处理
        for (let m = 0;m< basics_list[0].length;m++) {
            let other_A = ['集数','每集时长','片长','票房']
            for (let j = 0;j< other_A.length;j++) {
                if (basics_list[0][m]===other_A[j]) {
                    // 如果存在,修改
                    // console.log('basics_list[0][i]:',basics_list[0][m]);
                    basics_list[0][m] = basics_list[0][m]+' ';
                }
            }
        }


        //let regexStr = `"lemmaId":([0-9]+),"lemmaTitle":"${keyword}"`;
        //  let regex = new RegExp(regexStr, 'g');

        // let match_2 = match_contentItemChildren[1].match(regex);

        for (let m = 0;m< basics_list[0].length;m++) {
            let other_B = [['上映时间', '^((\\d{1,4}年)?(\\d{1,2}月)?(\\d{1,2}日)?)$'],
                           ['首播时间', '^((\\d{1,4}年)?(\\d{1,2}月)?(\\d{1,2}日)?)$'],
                           ['播出时间', '^((\\d{1,4}年)?(\\d{1,2}月)?(\\d{1,2}日)?)$'],
                           ['拍摄日期', '^((\\d{1,4}年)?(\\d{1,2}月)?(\\d{1,2}日)?)$'],
                           ['出生日期', '^((\\d{1,4}年)?(\\d{1,2}月)?(\\d{1,2}日)?)$'],
                           ['逝世日期', '^((\\d{1,4}年)?(\\d{1,2}月)?(\\d{1,2}日)?)$'],


                          ]
            for (let j = 0;j< other_B.length;j++) {
                // 获取规则

                //let regexStr = `\`${other_B[j][1]}\`s`;
                let regexStr = other_B[j][1];
                let regex = new RegExp(regexStr, 'g');
                if (basics_list[0][m] === other_B[j][0] &&
                    !basics_list[1][m].match(regex)
                   ) {
                    // 如果存在,修改
                    // console.log('basics_list[0][i]:',basics_list[0][m]);
                    basics_list[0][m] = basics_list[0][m]+' ';
                }
            }
        }
        // });拍摄日期

        console.log('basics_list:',basics_list);

        //
        function addBasics() {
            // 创建一个表格元素
            let table = document.createElement("table");
            table.id = 'addBasics';

            // 样式定义
            let purpleColor = "#dcd0ff";
            let blueColor = "#d0dcff";
            let orangeColor = "#ffa500";
            let redColor = "#000000";

            // 遍历基本信息数据,创建表格行和单元格
            for (let i = 0; i < basics_list.length; i++) {
                let row = table.insertRow();

                for (let j = 0; j < basics_list[0].length; j++) {
                    let cell = row.insertCell();
                    let button = document.createElement("button");
                    let buttonText = document.createTextNode("CC");
                    button.style.width = "25px";
                    button.style.height = "25px";
                    button.style.textAlign = "center";
                    button.style.lineHeight = "25px";
                    button.style.fontSize = "15px";//按钮元素的字体大小
                    button.style.zIndex = "999999";

                    // 添加 copyText 属性
                    button.setAttribute('copyText', basics_list[i][j]);
                    button.appendChild(buttonText);// 将文本内容添加到按钮
                    cell.appendChild(button);// 将按钮添加到单元格


                    // 设置按钮初始颜色
                    button.style.backgroundColor = (i === 0 && j === 0) ? orangeColor : (i === 0 ? purpleColor : blueColor);

                    // 按钮点击事件处理函数,复制对应数据并修改颜色
                    button.addEventListener('click', function() {
                        // 复制对应的基本信息数据
                        let dataToCopy = basics_list[i][j];
                        // 创建一个临时的 textarea 元素,用于复制文本
                        let tempTextarea = document.createElement('textarea');
                        tempTextarea.value = dataToCopy;
                        document.body.appendChild(tempTextarea);
                        tempTextarea.select();
                        document.execCommand('copy');
                        document.body.removeChild(tempTextarea);

                        // 修改按钮颜色为红色
                        button.style.backgroundColor = redColor;

                        // 找到同列的下一行按钮,并将其颜色设置为橙色
                        if (i < basics_list.length - 1) { // 检查是否有下一行
                            table.rows[i + 1].cells[j].querySelector("button").style.backgroundColor = orangeColor;
                        } else { // 如果没有下一行,则找下一列的第一行按钮
                            if (j < basics_list[0].length - 1) { // 检查是否有下一列
                                table.rows[0].cells[j + 1].querySelector("button").style.backgroundColor = orangeColor;
                            }
                        }
                    });

                    button.appendChild(buttonText);
                    cell.appendChild(button);
                }
            }

            // 将表格添加到指定的 div 元素末尾
            basics.appendChild(table);



        }
        // 如果已有table则删除
        if (basics.querySelector('table#addBasics')) {
            basics.querySelector('table#addBasics').remove();
        }
        addBasics();

    }


    //*************************************************************************************
    //----------------------------------------下图函数-改
    //*************************************************************************************
    // 打开词条完整图册页面URL
    function openNewPage() {
        // 词条完整图册页面URL
        let titleImages_urlA = document.querySelector('head > link[hreflang="x-default"]').href.replace('https://baike.baidu.com/item/','https://baike.baidu.com/pic/');

        // 词条完整图册页面URL末尾添加标识autodownloadimage
        let titleImages_urlB = titleImages_urlA + '?adi';
        // 在新标签页中打开完整图册页面URL
        //   window.open(newImgUrl, '_blank');
        window.open(titleImages_urlB, '_blank', 'width=8000,height=8000');
        //window.open(titleImages_urlB, '_blank', 'fullscreen=1');

    };

    // 在词条完整图册页面URL打开
    function openNewPage_openPageList() {
        setTimeout(() => {
            let num_tag = document.querySelector("#root > div > div[class*='pageBody_'] > div[class*='albumHeader_'] > div > span > svg > path[d='M938.667 553.92V768c0 64.8-52.534 117.333-117.334 117.333H202.667c-64.8 0-117.334-52.533-117.334-117.333V256c0-64.8 52.534-117.333 117.334-117.333h618.666c64.8 0 117.334 52.533 117.334 117.333v297.92zm-64-74.624V256a53.333 53.333 0 0 0-53.334-53.333H202.667A53.333 53.333 0 0 0 149.333 256v344.48A290.09 290.09 0 0 1 192 597.333a286.88 286.88 0 0 1 183.296 65.846C427.029 528.384 556.906 437.333 704 437.333c65.707 0 126.997 16.779 170.667 41.963zm0 82.24c-5.334-8.32-21.131-21.653-43.648-32.917-34.251-17.131-77.974-27.286-127.019-27.286-121.77 0-229.13 76.267-270.432 188.694-2.73 7.445-7.403 20.32-13.995 38.581-7.68 21.301-34.453 28.107-51.37 13.056-16.438-14.635-28.555-25.067-36.139-31.147A222.89 222.89 0 0 0 192 661.333a225.169 225.169 0 0 0-42.667 4.054V768a53.333 53.333 0 0 0 53.334 53.333h618.666A53.333 53.333 0 0 0 874.667 768V561.525zM320 480a96 96 0 1 1 0-192 96 96 0 0 1 0 192zm0-64a32 32 0 1 0 0-64 32 32 0 0 0 0 64z']");
            let num = num_tag.parentNode.parentNode.textContent.trim();
            if (num && num <= 0) {
                window.close();
            }
        }, 3000);

        // 获取图册链接列表,
        // 除***精彩图册(拓展图册默认名):not([title$="精彩图册"])
        // 实地认证:not([title$="实地认证"])')
        let albumLinks = document.querySelectorAll('a[class*="albumCover_"]:not([href$="/"]):not([title$="实地认证"])');

        // 提取所有 href 属性并转换为数组
        const hrefs = Array.from(albumLinks).map(albumLink => albumLink.href);

        // 打印所有 href 属性
        console.log(hrefs);


        // 存储图片链接的数组
        let imgUrlArray = [];
        let uniqueImgUrls = [];


        // 定义处理函数
        function handleAlbumLink(albumLink) {
            // 创建一个新的 iframe 元素
            let iframe = document.createElement('iframe');
            let srcTrue = '';

            // 修改词条名中会导致图册链接错误的符号
            let srcTrue_A = 'https://baike.baidu.com/pic/';

            //https://baike.baidu.com/pic/T-34/85/9555520/1/8d5494eef01f3a294067ff569325bc315d607cfe?fr=newalbum&fromModule=album
            //.split(/\/[0-9]+\/[0-9]+\//)[0];
            let regex = /\/[0-9]+\/[0-9]+\/[0-9a-z]+\?fr=newalbum&fromModule=album/;
            let regexText = albumLink.href.match(regex);
            console.log('regexText[0]:', regexText[0]);

            let srcTrue_B_from = albumLink.href.replace('https://baike.baidu.com/pic/', '').replace(regexText[0], '');
            let srcTrue_C = albumLink.href.replace(srcTrue_A, '').replace(srcTrue_B_from, '');

            let srcTrue_B = srcTrue_B_from
            .replace(/\&#34;/g, '%22')// "
            .replace(/\&#38;/g, '%26')
            .replace(/\&%2338;/g, '%26')
            .replace(/\&#39;/g, "'")//'
            .replace(/\&%2339;/g, "'")//'
            .replace(/\//g, '%2F')
            .replace(/\#/g, '%23')
            ;



            console.log('srcTrue_A:', srcTrue_A);
            console.log('srcTrue_B:', srcTrue_B);
            console.log('srcTrue_C:', srcTrue_C);
            srcTrue = srcTrue_A + srcTrue_B + srcTrue_C + '?adi';

            iframe.src = srcTrue;

            // 定义iframe加载完成后执行的操作
            iframe.onload = function() {
                // 获取 iframe 中的文档对象
                let iframeDocument = iframe.contentDocument || iframe.contentWindow.document;

                // 等待iframe中的内容加载完成
                setTimeout(function() {
                    let thumbItems = iframeDocument.querySelectorAll('div[class*="thumbItem_"]');
                    let thumbCount = parseInt(iframeDocument.querySelector('div > span[class*="count_"]').textContent);// 该iframe中的图片数量
                    if (thumbItems.length < thumbCount) {
                        // 图片数量不一致,重新查找图片
                        handleAlbumLink(albumLink);
                        return;
                    }
                    thumbItems.forEach(thumbItem => {
                        // 获取 thumbItem 的样式
                        let urlMatch = thumbItem.getAttribute('style').match(/url\(["']?([^"']*)["']?\)/);
                        let beforeText = /\?x-bce-process=[\s\S]*/;
                        let afterText = "?x-bce-process=image/format,f_auto/resize,m_lfit,limit_1,w_1080";
                        let imgUrl = urlMatch[1].replace(beforeText, afterText);

                        // 将 imgUrl 加入数组
                        imgUrlArray.push(imgUrl);
                    });

                    // 处理完毕后删除 iframe
                    document.body.removeChild(iframe);

                    // 处理下一个链接
                    let nextAlbumLink = getNextAlbumLink(albumLink);
                    if (nextAlbumLink) {
                        handleAlbumLink(nextAlbumLink);
                    } else {
                        // 所有链接处理完毕,去重并打印结果
                        uniqueImgUrls = Array.from(new Set(imgUrlArray));
                        console.log('去重后的图片链接数组:', uniqueImgUrls);

                        // 在获取到 uniqueImgUrls 后调用下载函数
                        downloadAllImages(uniqueImgUrls);

                    }
                }, 5000);
            };

            // 将 iframe 插入到页面中
            document.body.appendChild(iframe);
        }

        // 定义获取下一个链接的函数
        function getNextAlbumLink(currentLink) {
            let index = Array.from(albumLinks).indexOf(currentLink);
            return albumLinks[index + 1];
        }

        // 开始处理第一个链接
        if (albumLinks.length > 0) {
            handleAlbumLink(albumLinks[0]);
        }


        // 判断是否为gif图片
        function isGif(blob) {
            return new Promise((resolve) => {
                const reader = new FileReader();
                reader.onloadend = function () {
                    const arr = new Uint8Array(reader.result).subarray(0, 4);
                    let header = '';
                    for (let i = 0; i < arr.length; i++) {
                        header += arr[i].toString(16);
                    }
                    resolve(header === '47494638'); // GIF89
                };
                reader.readAsArrayBuffer(blob.slice(0, 4));
            });
        }

        // 异步下载图片函数
        function downloadImage(url, filename) {
            return new Promise((resolve, reject) => {
                fetch(url)
                    .then(response => response.blob())
                    .then(async blob => {
                    let newBlob = blob;
                    // 如果图片小于5kb,则扩充为不小于5kb
                    if (blob.size <= 5 * 1024) {
                        const difference = 6 * 1024 - blob.size;
                        const padding = new Uint8Array(difference).fill(255);
                        const paddedBlob = new Blob([blob, padding]);
                        newBlob = paddedBlob;
                    }
                    // 如果图片是gif动图,则转换为png
                    if (await isGif(blob)) {
                        const image = new Image();
                        image.src = URL.createObjectURL(blob);
                        await new Promise((resolve) => {
                            image.onload = () => {
                                const canvas = document.createElement('canvas');
                                canvas.width = image.width;
                                canvas.height = image.height;
                                const ctx = canvas.getContext('2d');
                                ctx.drawImage(image, 0, 0);
                                canvas.toBlob((pngBlob) => {
                                    newBlob = pngBlob;
                                    resolve();
                                }, 'image/png');
                            };
                        });
                    }
                    const url = window.URL.createObjectURL(newBlob);
                    const a = document.createElement('a');
                    a.href = url;
                    a.download = filename;
                    document.body.appendChild(a);
                    a.click();
                    window.URL.revokeObjectURL(url);
                    resolve();
                })
                    .catch(error => {
                    reject(error);
                });
            });
        }

        // 异步下载所有图片
        async function downloadAllImages(imgUrls) {
            // 设置并发下载数为4,可以根据需要调整
            const concurrency = 4;
            const batches = Math.ceil(imgUrls.length / concurrency);

            for (let i = 0; i < batches; i++) {
                const batchStart = i * concurrency;
                const batchEnd = Math.min((i + 1) * concurrency, imgUrls.length);
                const batchUrls = imgUrls.slice(batchStart, batchEnd);

                try {
                    // 使用 Promise.all() 同时发起多个下载任务
                    await Promise.all(batchUrls.map(async imgUrl => {
                        const filename = imgUrl.replace('https://bkimg.cdn.bcebos.com/pic/', '').replace(/\?x-bce-process.*/, '').trim() + '.png';
                        await downloadImage(imgUrl, filename);
                        console.log('下载完成:', filename);
                    }));
                } catch (error) {
                    console.warning('批量下载失败:', error);
                }
            }

            // 3秒后关闭网页
            setTimeout(() => {
                window.close();
            }, 3000);
        }


    };




    function processInput_2() {

        const parts = document.querySelector('head > meta[property="og:title"]').content;
        if (parts) {
            const keyword = parts.trim();

            // 构建百度百科搜索链接
            const searchUrl = `https://baike.baidu.com/item/${encodeURIComponent(keyword)}`;
            console.log('searchUrl',searchUrl);


            // 访问百度百科搜索链接
            fetch(searchUrl)
                .then(response => response.text())
                .then(html => {


                // 使用正则表达式从 HTML 中提取 window.PAGE_DATA 开头的 script 数据
                // "disamLemma":{"lemmaId":21443771,"lemmaTitle":"计算机",
                const match = html.match(/"disamLemma":{"lemmaId":(\d+),/);
                // console.log('match',match);

                if (match) {
                    const jsonData = JSON.parse(match[1]);
                    const lemmaId = JSON.parse(match[1]);
                    const finalUrl = `${searchUrl}/${lemmaId}`;
                    console.log('义项页面:', finalUrl);

                    // 访问义项页面
                    fetch(finalUrl)
                        .then(response_finalUrl => response_finalUrl.text())
                        .then(html_finalUrl => {
                        // console.log('html_finalUrl',html_finalUrl);

                        //黄雀	卢伦常执导的刑电视剧侦
                        //"lemmaId":63278774,"lemmaTitle":"黄雀","lemmaDesc":"卢伦常执导的刑侦电视剧"


                        let match_contentItemChildren = html_finalUrl.match(/"lemmas":(.+),"encodeLemmaId"/);
                        console.log('match_contentItemChildren[1]:', match_contentItemChildren[1]);



                        let regexStr = `"lemmaId":([0-9]+),"lemmaTitle":"${keyword}"`;
                        let regex = new RegExp(regexStr, 'g');

                        let match_2 = match_contentItemChildren[1].match(regex);

                        if (match_2) {
                            console.log('All matches:', match_2);
                            // 如果需要获取每个匹配的第一个捕获组(即 lemmaId 的值)
                            for (let i = 0; i < match_2.length; i++) {
                                console.log(`Match ${i + 1}:`, match_2[i]);
                                console.log(`lemmaId value:`, match_2[i][1]);

                                //"lemmaId":23360414,"lemmaTitle":"余亚军"
                                let lemmaId = match_2[i].split('"lemmaId":')[1].split(`,"lemmaTitle":"${keyword}"`)[0];

                                let trueUrl = searchUrl + '/' + lemmaId + '?areyousuper';
                                console.log('trueUrl:', trueUrl);

                                window.open(trueUrl, '_blank');
                            }
                        } else {
                            console.log('No matches found.');
                        }




                    })
                        .catch(error => {
                        console.error('请求错误:', error);
                    });



                } else {
                    console.log('找不到符合条件的 script 数据');
                    window.open(`${searchUrl}?adplus`, '_blank');
                }
            })
                .catch(error => {
                console.error('请求错误:', error);

            });

        }

        let home = document.querySelector("#J-lemma-main-wrapper")
        let tag = home.querySelector("div[class*='posterFlag_']")

        }

    function AYS() {
        setTimeout(function() {

            let home = document.querySelector("#J-lemma-main-wrapper")
            let tag = home.querySelector("div[class*='posterFlag_']")

            if (tag) {
                let url = window.location.href;
                let new_url = url.replace('?areyousuper','');
                // 跳转到新的 URL
                window.location.href = new_url;
            }
            else {
                window.close();
            }
        }, 5000); // 延迟一段时间
    }



    //*************************************************************************************
    //----------------------------------------显示图片名称复制按钮
    //*************************************************************************************
    function copyImgName(){
        // 获取所有图片元素
        let imageTitle = document.querySelector("#side > div.abstractAlbum_add > a > img"); // 创建的概述图
        let imagesAll = document.querySelectorAll('img:not([src$=".svg"]):not([src$=".png"])');
        let images = [...imagesAll, imageTitle];

        // 循环处理每张图片
        images.forEach(img => {
            // 创建按钮元素
            let button = document.createElement('button');
            //button.textContent = 'C';
            button.id = 'copyImgName';
            button.style.position = 'absolute';
            button.style.bottom = '10px'; // 与底部边距
            button.style.right = '10px'; // 与右侧边距
            button.style.padding = '18px'; // 内边距
            button.style.backgroundColor = 'rgba(255, 0, 255, 0.5)'; // 半透明背景
            button.style.color = 'white'; // 白色文本
            button.style.border = 'none'; // 无边框
            button.style.cursor = 'pointer'; // 指针样式
            button.style.zIndex = '9999999'; // 较高的 z-index
            button.style.fontFamily = 'inherit'; // 继承字体
            button.style.fontSize = 'inherit'; // 继承字体大小
            button.style.userSelect = 'none'; // 防止文本被选中复制



            // 按钮点击事件处理程序-名称
            button.addEventListener('click', function(event) {
                event.stopPropagation();
                event.preventDefault();
                // 获取图片的 src
                let src = img.src;
                // 提取图片路径中的参数
                let picPath = src.replace('https://bkimg.cdn.bcebos.com/pic/','').replace(/\?x-bce-process.*/,'').trim() + '.png';
                // 复制图片路径中的内容到剪贴板
                navigator.clipboard.writeText(picPath)
                    .then(() => console.log('图片路径已复制到剪贴板:' + picPath))
                    .catch(err => console.warning('复制失败:', err));
            });

            // 将按钮添加到图片的父元素中
            img.parentNode.style.position = 'relative'; // 确保图片的父元素是相对定位的
            // 如果已有button则删除
            if (img.parentNode.querySelector('button#copyImgName')) {
                img.parentNode.querySelector('button#copyImgName').remove();
            }
            // 专辑图片格式调整
            if (img.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.classList.contains("module-musicAlbum")
                && img.parentNode.parentNode.querySelector('em[class*="bg_"]')
               ) {
                img.parentNode.parentNode.querySelector('em[class*="bg_"]').remove();
            }
            img.parentNode.appendChild(button);




            // 创建按钮元素2-标题
            let button_title = document.createElement('button');
            //button_title.textContent = 'T';
            button_title.id = 'copyImgNameTitle';
            button_title.style.position = 'absolute';
            button_title.style.bottom = '10px'; // 与底部边距
            button_title.style.right = '50px'; // 与右侧边距
            button_title.style.padding = '18px'; // 内边距
            button_title.style.backgroundColor = 'rgba(255, 0, 0, 0.5)'; // 半透明背景
            button_title.style.color = 'white'; // 白色文本
            button_title.style.border = 'none'; // 无边框
            button_title.style.cursor = 'pointer'; // 指针样式
            button_title.style.zIndex = '9999999'; // 较高的 z-index
            button_title.style.fontFamily = 'inherit'; // 继承字体
            button_title.style.fontSize = 'inherit'; // 继承字体大小
            button_title.style.userSelect = 'none'; // 防止文本被选中复制

            // 按钮点击事件处理程序
            button_title.addEventListener('click', function(event) {
                event.stopPropagation();
                event.preventDefault();
                // 获取图片的 标题
                let title_one = img.parentNode.title;
                let title_list = img.parentNode.parentNode.title;
                let title_alt = img.alt;
                let title = title_one || title_list || title_alt;


                // 复制图片路径中的内容到剪贴板
                navigator.clipboard.writeText(title)
                    .then(() => console.log('图片名称已复制到剪贴板:' + title))
                    .catch(err => console.warning('复制失败:', err));
            });

            // 将按钮添加到图片的父元素中
            img.parentNode.style.position = 'relative'; // 确保图片的父元素是相对定位的
            // 如果已有button则删除
            if (img.parentNode.querySelector('button#copyImgNameTitle')) {
                img.parentNode.querySelector('button#copyImgNameTitle').remove();
            }
            img.parentNode.appendChild(button_title);
        });

    }
    function copyImgName_bgi(){
        // 获取所有图片元素
        const images = document.querySelectorAll('div[class*="thumbItem_"]');

        // 循环处理每张图片
        images.forEach(img => {
            // 创建按钮元素
            const button = document.createElement('button');
            button.textContent = 'C';
            button.style.position = 'absolute';
            button.style.bottom = '10px'; // 与底部边距
            button.style.right = '10px'; // 与右侧边距
            button.style.padding = '10px'; // 内边距
            button.style.backgroundColor = 'rgba(0, 0, 0, 0.5)'; // 半透明背景
            button.style.color = 'white'; // 白色文本
            button.style.border = 'none'; // 无边框
            button.style.cursor = 'pointer'; // 指针样式
            button.style.zIndex = '9999999'; // 较高的 z-index
            button.style.fontFamily = 'inherit'; // 继承字体
            button.style.fontSize = 'inherit'; // 继承字体大小
            button.style.userSelect = 'none'; // 防止文本被选中复制


            // 按钮点击事件处理程序
            button.addEventListener('click', function(event) {
                event.stopPropagation();
                event.preventDefault();
                // 获取图片的样式中的背景图片链接
                const backgroundImage = img.style.backgroundImage;
                // 提取图片链接中的路径
                const matches = backgroundImage.match(/url\("(.+)"\)/);
                if (matches && matches.length > 1) {
                    const imageUrl = matches[1];
                    // 在这里对图片链接进行操作,比如提取路径中的参数等
                    const picPath = imageUrl.replace('https://bkimg.cdn.bcebos.com/pic/','').replace(/\?x-bce-process.*/,'').trim() + '.png';
                    // 复制图片路径中的内容到剪贴板
                    navigator.clipboard.writeText(picPath)
                        .then(() => console.log('图片路径已复制到剪贴板:' + picPath))
                        .catch(err => console.warning('复制失败:', err));
                } else {
                    console.warning('未找到背景图片链接');
                }
            });

            // 将按钮添加到图片的父元素中
            img.parentNode.style.position = 'relative'; // 确保图片的父元素是相对定位的
            img.parentNode.appendChild(button);
        });



    }




    //*************************************************************************************
    //----------------------------------------按钮:目录
    //*************************************************************************************
    function ABT_title(num){
        let tag_A = document.querySelector('div[class*="catalogWrapper_"]');//目录所在
        let tag_list = tag_A.querySelectorAll('a[href*="#"]');//目录所在

        let i = num - 1;
        return(tag_list[i].textContent.trim());

    }
    function copy_new(text){
        let titleContent = text;

        // 创建一个临时的文本输入框(使用 textarea 类型)
        let tempInput = document.createElement("textarea");
        tempInput.style.position = "absolute";
        tempInput.style.left = "-9999px"; // 将其放到屏幕之外,使其不可见
        tempInput.value = titleContent;
        document.body.appendChild(tempInput);

        // 选择文本内容
        tempInput.select();
        tempInput.setSelectionRange(0, 99999); // 兼容 iOS

        // 复制文本内容
        document.execCommand("copy");

        // 移除临时文本输入框
        document.body.removeChild(tempInput);
    }
    function copy_nr(tag){
        let titleContent = document.querySelector(tag).innerText.trim();


        // 创建一个临时的文本输入框(使用 textarea 类型)
        let tempInput = document.createElement("textarea");
        tempInput.style.position = "absolute";
        tempInput.style.left = "-9999px"; // 将其放到屏幕之外,使其不可见
        tempInput.value = titleContent;
        document.body.appendChild(tempInput);

        // 选择文本内容
        tempInput.select();
        tempInput.setSelectionRange(0, 99999); // 兼容 iOS

        // 复制文本内容
        document.execCommand("copy");

        // 移除临时文本输入框
        document.body.removeChild(tempInput);
    }

    // 复制内容 正 的准备工作
    function copy_nr_all_bingo(){
        // 创建一个隐藏的 div 元素
        var copyMain = document.createElement('div');
        copyMain.id = 'copyMain';
        copyMain.style.display = 'none'; // 隐藏该 div
        document.body.appendChild(copyMain); // 将其添加到 body 中

        // 选取要复制的内容
        var main = document.querySelector("div.J-lemma-content");

        // 克隆 main 的内容到 copyMain
        var clonedContent = main.cloneNode(true);
        copyMain.appendChild(clonedContent);


        //删除参考资料
        let sups = copyMain.querySelectorAll("sup");
        sups.forEach((sup) => {
            sup.remove();
        });


        //删除表格-改为空行
        let tables = copyMain.querySelectorAll("table");
        tables.forEach((table) => {
            // 创建一个新的 div 元素,内容为换行符
            let lineBreakDiv = document.createElement('div');
            lineBreakDiv.textContent = '\n';

            // 替换 table 元素
            table.parentNode.replaceChild(lineBreakDiv, table);
        });
        //删除"播报"
        let ttss = copyMain.querySelectorAll("span[data-tts-from='paragraph']");
        ttss.forEach((tts) => {
            tts.remove();
        });
        //删除"播报"
        let edits = copyMain.querySelectorAll('div[class*="editLemma_"]');
        edits.forEach((edit) => {
            edit.remove();
        });

        //删除参考资料行
        let ckzl_s = copyMain.querySelectorAll('div[data-tag="paragraph"]');
        ckzl_s.forEach((ckzl) => {
            if (ckzl.textContent === '参考资料'){
                ckzl.remove();
            }
        });


    }
    // 复制内容 正
    function copy_nr_all(){
        function copyTextWithLineBreaks(selector) {
            const element = document.querySelector(selector);
            if (!element) {
                console.error(`Element with selector ${selector} not found`);
                return;
            }

            // 递归遍历节点,获取文本内容
            function getTextWithLineBreaks(node) {
                let text = '';
                node.childNodes.forEach(child => {
                    if (child.nodeType === Node.TEXT_NODE) {
                        text += child.textContent.replace('游戏数据,参考资料','游戏数据') + '\n'; // 文本节点加换行符
                    } else {
                        text += getTextWithLineBreaks(child); // 递归处理子节点
                    }
                });
                text = text.replace('\n\n\n','\n\n');
                return text;
            }

            const textToCopy = getTextWithLineBreaks(element);

            // 复制到剪切板
            navigator.clipboard.writeText(textToCopy)
                .then(() => {
                console.log('Text copied to clipboard');
            })
                .catch(err => {
                console.error('Failed to copy text: ', err);
            });
        }

        // 调用函数,并传入要复制的元素的选择器
        copyTextWithLineBreaks('#copyMain');




    }


    //*************************************************************************************
    //----------------------------------------按钮:目录修改
    //*************************************************************************************
    function editDirectory(flag,tag){
        function editDirectoryFunc(tagList, newTagName){

            // 遍历所有标签并将其修改为newTagName
            tagList.forEach(function(tagElement) {
                // 创建一个新的newTagName元素
                let h1Element = document.createElement(`${newTagName}`);

                // 复制元素的内容和属性到newTagName元素
                h1Element.innerHTML = tagElement.innerHTML;
                Array.from(tagElement.attributes).forEach(function(attr) {
                    h1Element.setAttribute(attr.name, attr.value);
                });

                // 替换newTagName元素为yuan元素
                tagElement.parentNode.replaceChild(h1Element, tagElement);
            });
        }


        //正文
        let contentTag = document.querySelector(`${tag}`);//正文所在标签


        // 获取所有一级目录(h2)标签
        let L1Tag = contentTag.querySelectorAll("h2");
        editDirectoryFunc(L1Tag, "h1");

        // 获取所有二级目录(h3)标签
        let L2Tag = contentTag.querySelectorAll("h3");
        editDirectoryFunc(L2Tag, "h2");

        // 获取所有二级目录(h3)标签
        let ListTag = document.querySelectorAll(`${tag} ul`);
        editDirectoryFunc(ListTag, "div");

        // 获取所有加粗目录(B)标签
        //let BTag = contentTag.querySelectorAll("span[class*='text_'][class*='bold_']");
        //editDirectoryFunc(BTag, "h3");



        function editDirectoryFunc_delOther(tagList){
            // 遍历所有标签并将其删除
            tagList.forEach(function(tagElement) {
                // 删除
                tagElement.remove();

            });
        }


        // 获取所有地图标签
        let mapTag = contentTag.querySelectorAll('div[data-module-type="map"]');
        console.log('mapTag:',mapTag);
        editDirectoryFunc_delOther(mapTag);

        // 获取所有分集剧情
        let plotTag = contentTag.querySelectorAll('div[data-module-type="plot"]');
        console.log('plotTag:',plotTag);
        editDirectoryFunc_delOther(plotTag);

        // 获取所有杂志写真
        let magazineTag = contentTag.querySelectorAll('div[data-module-type="magazine"]');
        console.log('magazineTag:',magazineTag);
        editDirectoryFunc_delOther(magazineTag);


        // 获取所有合并类图册标
        let albumTag = contentTag.querySelectorAll('div[data-module-type="album"] a[class*="albumWrapper_"]');
        if (flag === 'FF') {
            // console.log('albumTag:',albumTag);
            editDirectoryFunc_delOther(albumTag);
        } else {
            console.log('albumTag合并类图:',albumTag);
            // 遍历所有标签
            albumTag.forEach(function(tagElement) {
                if (tagElement && tagElement.href) {
                    // 获取图册的 href
                    let href = tagElement.href;
                    // 提取图片路径中的参数
                    let name = href;

                    // 获取词条的 title
                    let titleContent = document.querySelector('head > meta[property="og:title"]').content;
                    // 获取图册的 title
                    let titleAlbum = tagElement.title;

                    let title = titleAlbum || titleContent;

                    // 添加图片信息
                    let newTag = document.createElement('div');
                    newTag.textContent = '【【' + name + '|【Album】|' + title + '】】';
                    tagElement.parentNode.appendChild(newTag);
                }


                // 删除
                tagElement.remove();
            });
        }


        // 获取所有展开图册标
        let galleryAlbumTag = contentTag.querySelectorAll('div[class*="galleryWrapper_"]');
        if (flag === 'FF') {
            // console.log('albumTag:',albumTag);
            editDirectoryFunc_delOther(galleryAlbumTag);
        } else {
            console.log('albumTag展开类图:',galleryAlbumTag);
            // 遍历所有标签
            galleryAlbumTag.forEach(function(tagElement) {
                if (tagElement.querySelector('div[class*="galleryView_"]') && tagElement.querySelector('div[class*="galleryView_"]').getAttribute('data-gallery')) {

                    let tagA = tagElement.querySelector('div[class*="galleryView_"]');
                    let tagB = tagElement.querySelector('div[class*="galleryDesc_"]');

                    // 获取带ID的URL
                    let itemTitle = document.querySelector('head > link[hreflang="x-default"]').href;

                    // 获取图册的 dataGallery
                    let dataGallery = tagA.getAttribute('data-gallery');

                    // 获取图册的 dataImg
                    let tagList = tagA.querySelectorAll('img');
                    console.log('albumTag展开类图tagList:',tagList);
                    let dataImg = tagList[0]?.src?.replace('https://bkimg.cdn.bcebos.com/pic/','')?.replace(/\?x-bce-process.*/,'')?.trim();

                    let name = itemTitle.replace('baike.baidu.com/item','baike.baidu.com/pic') + '/' + dataGallery + '/' + dataImg;

                    // 获取词条的 title
                    let titleContent = document.querySelector('head > meta[property="og:title"]').content;
                    // 获取图册的 title
                    let titleAlbum;
                    if (tagB && tagB.textContent) {
                        titleAlbum = tagB.textContent;
                    }

                    let title = titleAlbum || titleContent;

                    console.log('albumTag展开类图name:',name);
                    console.log('albumTag展开类图title:',title);

                    // 添加图片信息
                    let newTag = document.createElement('div');
                    newTag.textContent = '【【' + name + '|【Album】|' + title + '】】';
                    tagElement.parentNode.appendChild(newTag);
                }


                // 删除
                tagElement.remove();
            });
        }




        // 获取所有单张图片标签
        let lemmaPictureTag = contentTag.querySelectorAll('div[class*="lemmaPicture_"]');
        if (flag === 'FF') {
            console.log('lemmaPictureTag:',lemmaPictureTag);
            editDirectoryFunc_delOther(lemmaPictureTag);
        } else {
            console.log('lemmaPictureTag:',lemmaPictureTag);
            // 遍历所有标签
            lemmaPictureTag.forEach(function(tagElement) {
                // 获取图片的 src
                let src = tagElement.querySelector('a img').src;
                // 提取图片路径中的参数
                let name = src.replace('https://bkimg.cdn.bcebos.com/pic/','').replace(/\?x-bce-process.*/,'').trim() + '.png';

                // 获取图片的 title
                let title = tagElement.querySelector('a').title || '';

                // 添加图片信息
                let newTag = document.createElement('div');
                newTag.textContent = '【【' + name + '|【imgisthis】|' + title + '】】';
                tagElement.parentNode.appendChild(newTag);


                // 删除
                tagElement.remove();
            });
        }

        // 获取所有按钮
        let buttonTag = contentTag.querySelectorAll('button');
        console.log('buttonTag:',buttonTag);
        editDirectoryFunc_delOther(buttonTag);

        // 获取所有模板-演员表
        let actorTag = contentTag.querySelectorAll('div[data-module-type="actor"] div');
        if (flag === 'TT') {//暗中复制
            console.log('buttonTag:',actorTag);
            editDirectoryFunc_delOther(actorTag);
        } else if (flag === 'FF') {
            console.log('buttonTag:',actorTag);
            editDirectoryFunc_delOther(actorTag);
        }

        if (flag === 'TT') {//有序目录修改
            change_list(0);
        }

        // 获取所有模板-角色介绍
        let roleTag = contentTag.querySelectorAll('div[class*="roleWrap_"]');
        if (flag === 'TT') {//暗中复制
            console.log('buttonTag:',roleTag);

            // 遍历所有标签
            roleTag.forEach(function(tagElement) {

                // 添加信息
                let newTag = document.createElement('div');
                newTag.textContent = '《【《角色介绍》】》';
                tagElement.parentNode.appendChild(newTag);


                // 删除
                tagElement.remove();

                // 删除表格
                let del_role = contentTag.querySelectorAll('table#changeTablef_actor_role');
                if (del_role.length > 0) {
                    del_role.forEach(function(tagElement) {
                        tagElement.remove();
                    });
                }
            });
        } else if (flag === 'FF') {
            console.log('buttonTag:',roleTag);
            editDirectoryFunc_delOther(roleTag);
        }

        // 获取所有模板-参演电影movieAndTvPosterWrapper_
        let movieTag = contentTag.querySelectorAll('div[class*="movieAndTvPosterWrapper_"]');
        console.log('buttonTag:',movieTag);
        editDirectoryFunc_delOther(movieTag);

        // 获取所有模板-音乐专辑
        let musicAlbumTag = contentTag.querySelectorAll('div[class*="module-musicAlbum"]');
        console.log('buttonTag:',musicAlbumTag);
        editDirectoryFunc_delOther(musicAlbumTag);


    }

    //新建隐藏tag并写入内容
    function editNewTag(){
        // 如果div#copyNewTag存在,删除它
        if (document.querySelector("div#copyNewTag")) {
            document.querySelector("div#copyNewTag").remove();
        }




        function addNewTag() {
            // 获取目标元素
            const sourceDiv = document.querySelector("div.J-lemma-content");
            const targetDiv = document.querySelector("div#copyNewTag");

            // 创建一个新的div元素
            const newDiv = document.createElement('div');
            newDiv.id = 'copyNewTag';

            // 将目标元素的内容复制到新元素
            sourceDiv.childNodes.forEach(child => {
                newDiv.appendChild(child.cloneNode(true));
            });

            // 将新元素添加到网页中
            document.querySelector("body").appendChild(newDiv);

            // 设置新元素为隐藏
            newDiv.style.display = 'none';
        }


        addNewTag();
    }

    //写一个js,要求复制指定标签下的内容,像鼠标划选复制一样连带格式一同复制到剪切板
    function copyElementContentToClipboard(elementSelector) {
        const element = document.querySelector(elementSelector);
        if (!element) {
            console.log('[复制正文]未找到要复制的内容');
            return;
        }
        console.log('element',element);

        // 创建一个临时的可编辑的div元素
        const tempDiv = document.createElement('div');
        tempDiv.contentEditable = 'true';
        tempDiv.style.position = 'absolute';
        tempDiv.style.left = '-9999px';
        document.body.appendChild(tempDiv);

        // 将目标元素的内容复制到临时div中
        tempDiv.innerHTML = element.innerHTML;

        // 选择临时div的内容
        tempDiv.focus();
        document.execCommand('selectall');

        // 执行复制命令
        document.execCommand('copy');

        // 移除临时div
        document.body.removeChild(tempDiv);

        console.log('[复制正文]带格式正文内容已复制');
    }




    function ABT_1_bingo() {
        var tableMain = document.createElement('div');
        tableMain.id = 'tableMain';
        tableMain.style.display = 'none'; // 隐藏该 div
        document.body.appendChild(tableMain); // 将其添加到 body 中

        // 选取要复制的内容
        let main = document.querySelector("div.J-lemma-content");

        // 克隆 main 的内容到 tableMain
        var clonedContent = main.cloneNode(true);
        tableMain.appendChild(clonedContent);



        console.log('tableMain',tableMain);


        //删除参考资料
        let sups = tableMain.querySelectorAll("sup");
        sups.forEach((sup) => {
            sup.remove();
        });



        //删除"播报"
        let ttss = tableMain.querySelectorAll("span[data-tts-from='paragraph']");
        ttss.forEach((tts) => {
            tts.remove();
        });
        //删除"播报"
        let edits = tableMain.querySelectorAll('div[class*="editLemma_"]');
        edits.forEach((edit) => {
            edit.remove();
        });

        //删除参考资料行
        let ckzl_s = tableMain.querySelectorAll('div[data-tag="paragraph"]');
        ckzl_s.forEach((ckzl) => {
            if (ckzl.textContent === '参考资料'){
                ckzl.remove();
            }
        });


        // 清理多余目录保留表格所在区域
        let divElements = tableMain.querySelectorAll('div'); // 确保转换为数组以便使用索引

        for(let i = 0; i < divElements.length; i++) {
            if (divElements[i] && divElements[i].textContent && divElements[i].textContent.trim() === "能力设定") {
                break; // 遇到目标文本则停止循环
            }
            else if (divElements[i]) {
                divElements[i].remove();
            }
        }
        for(let i = divElements.length; i > 0; i--) {
            if (divElements[i] && divElements[i].textContent && divElements[i].textContent.trim() === "角色专属") {
                break; // 遇到目标文本则停止循环
            }
            else if (divElements[i]) {
                divElements[i].remove();
            }
        }
        //    console.log('tableMain',tableMain);


        // 查找位于它们之间的button#复制表格元素
        let copyButton = tableMain.querySelector("button#复制表格")

        if (copyButton) {
            // 找到了button#复制表格元素,可以在这里进行你的操作
            copyButton.click();
        } else {
            console.log('未找到button#复制表格元素');
        }

    }

    //*************************************************************************************
    //*************************************************************************************
    //----------------------------------------页面
    //*************************************************************************************
    //*************************************************************************************
    let url = window.location.href;
    console.log('url:'+url);
    //词条页面
    if (url.includes("baike.baidu.com/item") && !url.includes("baike.baidu.com/pic") && !url.includes('?adplus')) {
        console.log('词条页面');

        function auto() {
            //自动化词条页面
            if (url.includes("?areyousuper") && !url.includes("?fromtitle=")) {
                console.log('自动化词条页面');

                AYS();
            }
            //自动化词条页面,小问题
            else if (url.includes("?fromtitle=") && !url.includes("?areyousuper")) {
                console.log('自动化词条页面');

                //let new_url = document.querySelector('head > link[hreflang="x-default"]').href + '?areyousuper';


                // 使用 URL 对象解析当前的 URL
                let urlParams = new URLSearchParams(window.location.search);

                // 获取查询参数 fromtitle 和 fromid 的值
                let fromtitle = urlParams.get('fromtitle');
                // let fromid = urlParams.get('fromid');

                // 打印结果

                // let new_url = 'https://baike.baidu.com/item/' + fromtitle + '/' + fromid;

                let lemmaId = window.PAGE_DATA.navigation.disamLemma.lemmaId;

                let list_url = 'https://baike.baidu.com/item/' + fromtitle + '/' + lemmaId;

                console.log('lemmaId:', lemmaId);
                console.log('new_url:', list_url);

                // 跳转到新的 URL
                window.location.href = list_url;
            }


            //聚焦加载图册
            let galleryAlbumTag = document.querySelector("div.J-lemma-content").querySelectorAll('div[class*="galleryWrapper_"]');



            // 当前索引
            let currentIndex = 0;
            let time = 500;

            // 定义函数来聚焦到下一个元素
            function focusNextElement() {


                if (currentIndex < galleryAlbumTag.length) {
                    // 当前元素
                    let element = galleryAlbumTag[currentIndex];

                    // 将当前元素滚动到视图中
                    element.scrollIntoView({ behavior: 'smooth', block: 'center' });

                    // 增加索引以便下次调用
                    currentIndex++;

                    // 设置定时器,1秒后调用下一个元素
                    setTimeout(focusNextElement, time);
                }
                else if (currentIndex = galleryAlbumTag.length){
                    let titleTag = document.querySelector("h1.J-lemma-title");

                    // 将当前元素滚动到视图中
                    titleTag.scrollIntoView({ behavior: 'smooth', block: 'center' });
                }
            }
            // 启动函数
            focusNextElement();


            // 显示图片、参考资料数量
            setInterval(numCanSee, 1000);
            setInterval(window.gc, 1000); // 尝试强制执行垃圾回收

            // 不显示概述图则显示
            setTimeout(function() {
                if (!document.querySelector('#side > div[class*="abstractAlbum_"]')
                    && !document.querySelector('div[class^="posterRight_"] > div[class^="abstractAlbum_"] > img')) {
                    changeTitleImg();
                }
            }, 3000);

            // 目录去杂
            runFunction(delZ, 1000, 5);

            // 展开角色列表
            setTimeout(function() {
                函数_展开角色列表();
            }, 5000);

            // 参考资料预备处理
            setTimeout(function() {
                changeReference_ready();
            }, 1000);

            //role
            // copy_nr_all_bingo();

            // 更新img
            runFunction(changeP, 2000, 3);
        }
        auto();


        //*************************************************************************************
        //----------------------------------------按钮:去参/显参/改参
        //*************************************************************************************
        let type = '';
        addButton("隐", "120px", "10px", document.querySelector("body"), function() {
            // 创建并显示弹窗
            type = 'notsee';
            delC(type);
            setInterval(() => delC(type), 1000);
        });
        addButton("显", "70px", "10px", document.querySelector("body"), function() {
            // 创建并显示弹窗
            type = 'cansee';
            delC(type);
        });
        addButton("改", "20px", "10px", document.querySelector("body"), function() {
            // 创建并显示弹窗
            changeReference()
        });


        //*************************************************************************************
        //----------------------------------------按钮:下图/表格/显图
        //*************************************************************************************
        addButton("图", "300px", "10px", document.querySelector("body"), function() {
            copyImgName();
        });
        addButton("表", "250px", "10px", document.querySelector("body"), function() {
            delC('notsee');
            changeTable();
            // 在页面加载完成后调用函数
            setTimeout(function() {
                addCopyButtonToTable();
            }, 1000);
        });
        addButton("下", "200px", "10px", document.querySelector("body"), function() {
            openNewPage();
        });


        //*************************************************************************************
        //----------------------------------------按钮:URL/词条名/义项名
        //*************************************************************************************

        addButton("名", "500px", "10px", document.querySelector("body"), function() {
            let titleContent = document.querySelector('head > meta[property="og:title"]').content;

            // 创建一个临时的文本输入框
            let tempInput = document.createElement("input");
            tempInput.value = titleContent;
            document.body.appendChild(tempInput);

            // 选择文本内容
            tempInput.select();
            tempInput.setSelectionRange(0, 99999); // 兼容 iOS

            // 复制文本内容
            document.execCommand("copy");

            // 移除临时文本输入框
            document.body.removeChild(tempInput);
        });
        addButton("义", "450px", "10px", document.querySelector("body"), function() {
            //document.querySelector("#lemmaDesc > div.lemmaDescText_DgfBu")
            let titleContent = document.querySelector('#lemmaDesc > div[class*="lemmaDescText_"]').textContent.trim();

            // 创建一个临时的文本输入框
            let tempInput = document.createElement("input");
            tempInput.value = titleContent;
            document.body.appendChild(tempInput);

            // 选择文本内容
            tempInput.select();
            tempInput.setSelectionRange(0, 99999); // 兼容 iOS

            // 复制文本内容
            document.execCommand("copy");

            // 移除临时文本输入框
            document.body.removeChild(tempInput);
        });
        addButton("概", "400px", "10px", document.querySelector("body"), function() {
            //document.querySelector("#lemmaDesc > div.lemmaDescText_DgfBu")
            let titleContent = document.querySelector('div[class*="J-summary"]').innerText.trim();


            // 创建一个临时的文本输入框(使用 textarea 类型)
            let tempInput = document.createElement("textarea");
            tempInput.style.position = "absolute";
            tempInput.style.left = "-9999px"; // 将其放到屏幕之外,使其不可见
            tempInput.value = titleContent;
            document.body.appendChild(tempInput);

            // 选择文本内容
            tempInput.select();
            tempInput.setSelectionRange(0, 99999); // 兼容 iOS

            // 复制文本内容
            document.execCommand("copy");

            // 移除临时文本输入框
            document.body.removeChild(tempInput);
        });


        addButton("头", "600px", "10px", document.querySelector("body"), function() {
            let img_many = document.querySelector("#side div[class*='abstractAlbum_'] img");
            let img_a = document.querySelector("div[class*='smallFeatureWrap_'] div[class*='poster_'] div[class*='posterRight_'] img");
            let img = img_many || img_a;


            event.stopPropagation();
            event.preventDefault();
            // 获取图片的 src
            let src = img.src;
            // 提取图片路径中的参数
            let picPath = src.replace('https://bkimg.cdn.bcebos.com/pic/','').replace(/\?x-bce-process.*/,'').trim() + '.png';
            // 复制图片路径中的内容到剪贴板
            navigator.clipboard.writeText(picPath)
                .then(() => console.log('图片路径已复制到剪贴板:' + picPath))
                .catch(err => console.warning('复制失败:', err));
        });
        addButton("U", "650px", "10px", document.querySelector("body"), function() {
            let titleContent = document.querySelector('head > link[hreflang="x-default"]').href;

            // 创建一个临时的文本输入框
            let tempInput = document.createElement("input");
            tempInput.value = titleContent;
            document.body.appendChild(tempInput);

            // 选择文本内容
            tempInput.select();
            tempInput.setSelectionRange(0, 99999); // 兼容 iOS

            // 复制文本内容
            document.execCommand("copy");

            // 移除临时文本输入框
            document.body.removeChild(tempInput);
        });
        addButton("模", "700px", "10px", document.querySelector("body"), function() {


            // 假设使用可选链操作符安全地获取第一个元素的 name 属性
            let mod_type = window.PAGE_DATA?.extData?.kpdClassify?.[0]?.name;
            mod_type = mod_type
                .replace('行政区划','行政规划')
            console.log("mod_type",mod_type);

            copy_new(mod_type)
        });


        addButton("FF", "600px", "80px", document.querySelector("body"), function() {
            let flag = 'FF';
            let tag = 'div.J-lemma-content';
            editDirectory(flag,tag);
        });
        addButton("TT", "650px", "80px", document.querySelector("body"), function() {
            //新建隐藏tag并写入内容

            editNewTag();

            //修改隐藏tag的内容
            let flag = 'TT';
            let tag = 'div#copyNewTag';
            editDirectory(flag,tag);

            // 复制指定标签下的内容,像鼠标划选复制一样连带格式一同复制到剪切板
            setTimeout(function() {
                copyElementContentToClipboard(tag);
            }, 200);
        });




        const targetDiv = document.querySelector('body');



        // 在网页上动态创建一个输入框
        function createInputBox() {
            const inputBox = document.createElement('input'); // 创建一个输入框
            const inputContent = inputBox.value.trim(); // 获取输入框中的内容(去除首尾的空白字符)


            targetDiv.appendChild(inputBox); // 或者将其插入到页面的其他位置
            inputBox.id = '判断';
            //inputBox.style.position = 'absolute';
            inputBox.type = 'text'; // 设置输入框类型为文本
            inputBox.style.position = "fixed";
            inputBox.style.bottom = "450px";
            inputBox.style.right = "80px";
            inputBox.style.width = "50px";
            inputBox.style.height = "45px";
            inputBox.style.background = "black";
            inputBox.style.opacity = "1";
            inputBox.style.color = "white";
            inputBox.style.textAlign = "center";
            inputBox.style.lineHeight = "45px";
            inputBox.style.fontSize = "30px";//按钮元素的字体大小
            inputBox.style.cursor = "pointer";
            inputBox.style.zIndex = "99999";
            inputBox.placeholder = '❓'; // 设置输入框的占位符为名称

            // 先定义点击事件处理程序
            const handleInputClick = (inputContent) => {
                let textTag = document.querySelector('head > meta[property="og:title"]');
                const content = textTag.content;
                const insertionTarget = targetDiv;

                const createPlusElement = (text, className) => {
                    const plusElement = document.createElement('div');
                    plusElement.style.fontSize = '30px';
                    plusElement.style.position = "fixed";
                    plusElement.style.bottom = "500px";
                    plusElement.style.right = "80px";
                    plusElement.style.width = "50px";
                    plusElement.style.height = "45px";
                    plusElement.style.background = "black";
                    plusElement.style.opacity = "1";
                    plusElement.style.color = "white";
                    plusElement.style.textAlign = "center";
                    plusElement.style.lineHeight = "45px";
                    plusElement.style.cursor = "pointer";
                    plusElement.style.zIndex = "99999";
                    plusElement.textContent = text;
                    plusElement.classList.add(className);
                    return plusElement;
                };

                // 移除之前的 plus-div
                const existingPlusElement = insertionTarget.querySelector('.plus-div');
                if (existingPlusElement) {
                    insertionTarget.removeChild(existingPlusElement);
                }

                // 根据输入内容与meta标签内容比较结果创建不同的plus元素
                const plusText = inputContent === content ? '✅' : '❌';
                const plusElement = createPlusElement(plusText, 'plus-div');
                insertionTarget.appendChild(plusElement);
            };

            // 监听回车键按下事件
            inputBox.addEventListener('keydown', (event) => {
                if (event.key === 'Enter') {
                    event.preventDefault(); // 阻止默认的回车键行为
                    // 直接调用处理函数并传入输入框的内容
                    handleInputClick(inputBox.value);
                }
            });

            // 返回创建的输入框
            return inputBox;
        };


        createInputBox()






        //*************************************************************************************
        //----------------------------------------按钮:🔄/⏫/⏬
        //*************************************************************************************
        addButton("⏫", "120px", "80px", document.querySelector("body"), function() {
            // 滚动到顶部
            window.scrollTo({
                top: 0,
                behavior: 'smooth'
            });
        });
        addButton("🔄", "70px", "80px", document.querySelector("body"), function() {
            // 刷新网页
            location.reload();
        });
        addButton("⏬", "20px", "80px", document.querySelector("body"), function() {
            // 滚动到底部
            window.scrollTo({
                top: document.body.scrollHeight,
                behavior: 'smooth'
            });
        });

        //*************************************************************************************
        //----------------------------------------按钮:特/序/xxl
        //*************************************************************************************
        addButton("特", "200px", "80px", document.querySelector("body"), function() {
            // 刷新网页
            processInput_2();
        });
        addButton("序", "250px", "80px", document.querySelector("body"), function() {
            change_list(2);
        });
        addButton("xxl", "300px", "80px", document.querySelector("body"), function() {
            changeBasics();
        });



        //*************************************************************************************
        //----------------------------------------按钮:目录
        //*************************************************************************************
        function addButton_text() {
            let tag_A = document.querySelector('div[class*="catalogWrapper_"]');//目录所在
            let tag_list = tag_A.querySelectorAll('a[href*="#"]');//目录所在
            //tag_list.length为目录数量


            function ABT_1() {
                addButton("T1", "300px", "210px", document.querySelector("body"), function() {
                    copy_new(ABT_title(1));
                });
                addButton("N1", "300px", "150px", document.querySelector("body"), function() {
                    let tag_A = document.querySelector('div[class="J-lemma-content"]');//正文所在

                    let tag = document.querySelector('div[class="J-lemma-content"]');//正文所在
                    copy_nr(tag);
                });
            }

            function ABT_2() {
                addButton("T2", "250px", "210px", document.querySelector("body"), function() {
                    copy_new(ABT_title(2));
                });
                addButton("N2", "250px", "150px", document.querySelector("body"), function() {


                });
            }

            function ABT_3() {
                addButton("T3", "200px", "210px", document.querySelector("body"), function() {
                    copy_new(ABT_title(3));
                });
                addButton("N3", "200px", "150px", document.querySelector("body"), function() {


                });
            }

            function ABT_4() {
                addButton("T4", "120px", "210px", document.querySelector("body"), function() {
                    copy_new(ABT_title(4));
                });
                addButton("N4", "120px", "150px", document.querySelector("body"), function() {


                });
            }

            function ABT_5() {
                addButton("T5", "70px", "210px", document.querySelector("body"), function() {
                    copy_new(ABT_title(5));
                });
                addButton("N5", "70px", "150px", document.querySelector("body"), function() {


                });
            }

            function ABT_6() {
                addButton("T6", "20px", "210px", document.querySelector("body"), function() {
                    copy_new(ABT_title(6));
                });
                addButton("N6", "20px", "150px", document.querySelector("body"), function() {


                });
            }

            //循环按照目录数量设置按钮
            for (let i = 0;i < tag_list.length;i++) {
                let index = i + 1;
                eval(functionName);
            }
        }
        // addButton_text();

        function addButton_table() {
            // 选取要复制的内容
            let main = document.querySelector("div.J-lemma-content");
            let tableList = main.querySelectorAll("table");
            console.log('table',tableList);
            //tag_list.length为目录数量


            function ABT_1() {
                tableList.forEach(function(table, index) {

                    let caption = table.querySelector('caption');
                    let header = table.querySelectorAll('tr th');
                    let tableImg = table.querySelectorAll('img');
                    if (tableList.length === 3 && index === 0) {
                        let emTag = table.parentNode.querySelector('em[class*="more_"]');
                        if (emTag) {
                            emTag.click();
                            emTag.remove();
                        }
                        addButton("S0", "300px", "210px", document.querySelector("body"), function() {
                            CopyTable(table);
                        });
                    }
                    if (caption && caption.textContent.trim()) {
                        let emTag = table.parentNode.querySelector('em[class*="more_"]');
                        if (emTag) {
                            emTag.click();
                            emTag.remove();
                        }
                        addButton("ST", "300px", "150px", document.querySelector("body"), function() {
                            CopyTable_T(table);
                        });
                    }
                });
            }

            function ABT_2() {
                tableList.forEach(function(table) {
                    let caption = table.querySelector('caption');
                    let header = table.querySelectorAll('tr th');
                    let tableImg = table.querySelectorAll('img');

                    if (!caption && header.length === 6
                        && tableImg.length === 0
                        && tableList.length > 3) {
                        let emTag = table.parentNode.querySelector('em[class*="more_"]');
                        if (emTag) {
                            emTag.click();
                            emTag.remove();
                        }
                        addButton("SX", "250px", "210px", document.querySelector("body"), function() {
                            CopyTable(table);
                        });
                    }
                    if (!caption && header.length === 2 && header[1].textContent === '描述'
                        && tableImg.length === 0) {
                        let emTag = table.parentNode.querySelector('em[class*="more_"]');
                        if (emTag) {
                            emTag.click();
                            emTag.remove();
                        }
                        addButton("JN", "250px", "150px", document.querySelector("body"), function() {
                            CopyTable(table);
                        });
                    }
                });
            }

            function ABT_3() {
                tableList.forEach(function(table) {
                    let caption = table.querySelector('caption');
                    let header = table.querySelectorAll('tr th');
                    let tableImg = table.querySelectorAll('img');

                    if (!caption && header.length === 2
                        && tableImg.length > 0) {
                        let emTag = table.parentNode.querySelector('em[class*="more_"]');
                        if (emTag) {
                            emTag.click();
                            emTag.remove();
                        }
                        addButton("ZS", "200px", "210px", document.querySelector("body"), function() {
                            CopyTable(table);
                        });
                    }
                });
            }

            function ABT_4() {

                tableList.forEach(function(table) {
                    let caption = table.querySelector('caption');
                    let header = table.querySelectorAll('tr th');
                    let tableImg = table.querySelectorAll('img');

                    if (!caption && header.length >= 2 && header[1].textContent.trim().includes('台词')
                        && tableImg.length === 0) {
                        let emTag = table.parentNode.querySelector('em[class*="more_"]');
                        if (emTag) {
                            emTag.click();
                            emTag.remove();
                        }
                        addButton("TC", "120px", "210px", document.querySelector("body"), function() {
                            CopyTable(table);
                        });
                    }
                });
            }


            //循环按照目录数量设置按钮tableList.length
            for (let i = 0;i < 4;i++) {
                let index = i + 1;
                let functionName = `ABT_${index}()`;
                eval(functionName);
            }
        }

        function addButton_img() {
            // 选取要复制的内容
            let main = document.querySelector("div.J-lemma-content");
            let tableList = main.querySelectorAll("table");


            function copyImg(img) {

                // 获取图片的 src
                let src = img.src;
                // 提取图片路径中的参数
                let picPath = src.replace('https://bkimg.cdn.bcebos.com/pic/','').replace(/\?x-bce-process.*/,'').trim() + '.png';
                // 复制图片路径中的内容到剪贴板
                navigator.clipboard.writeText(picPath)
                    .then(() => console.log('图片路径已复制到剪贴板:' + picPath))
                    .catch(err => console.warning('复制失败:', err));
            }


            tableList.forEach(function(table) {
                let tableImg = table.querySelectorAll('img');
                function ABT_1() {
                    addButton("🔴", "500px", "210px", document.querySelector("body"), function() {
                        copyImg(tableImg[0]);
                    });
                }
                function ABT_2() {
                    addButton("🟡", "500px", "150px", document.querySelector("body"), function() {
                        copyImg(tableImg[1]);
                    });
                }
                function ABT_3() {
                    addButton("🟢", "450px", "210px", document.querySelector("body"), function() {
                        copyImg(tableImg[2]);
                    });
                }
                function ABT_4() {
                    addButton("🔵", "450px", "150px", document.querySelector("body"), function() {
                        copyImg(tableImg[3]);
                    });
                }
                function ABT_5() {
                    addButton("⚫", "400px", "210px", document.querySelector("body"), function() {
                        copyImg(tableImg[4]);
                    });
                }
                function ABT_6() {
                    addButton("⚪", "400px", "150px", document.querySelector("body"), function() {
                        copyImg(tableImg[5]);
                    });
                }

                if (tableImg.length > 0) {
                    for (let i = 0;i < tableImg.length;i++) {
                        let index = i + 1;
                        let functionName = `ABT_${index}()`;
                        eval(functionName);
                    }

                }

            });



        }
        // 在页面加载完成后调用函数
        setTimeout(function() {
            delC('notsee');
            changeTable();
            addCopyButtonToTable();
        }, 1000);

        //游戏角色
        setTimeout(function() {
            let desc = document.querySelector("#lemmaDesc > div[class*='lemmaDescText_']").textContent.trim();
            if (desc.includes('战舰少女') ||
                desc.includes('苍蓝誓约')) {
                addButton_table();
                addButton_img();
            }
        }, 1000);



        addButton("正", "400px", "80px", document.querySelector("body"), function() {
            copy_nr_all_bingo();

            setTimeout(() => {
                copy_nr_all();
            }, 2000);
        });

    }
    //图册页面
    else if (url.includes('baike.baidu.com/pic') && !url.includes('baike.baidu.com/item') && !url.includes('autodownload') && !url.includes('?adi')) {
        console.log('图册页面');

        // 更新img
        runFunction(changeP, 500, 100);

        setTimeout(function() {
            copyImgName_bgi();
        }, 1000); // 延迟一段时间

        addButton("词", "500px", "10px", document.querySelector("body"), function() {
            let titleContent = document.querySelector('head > title').textContent.replace('图片_百度百科','');

            // 创建一个临时的文本输入框
            let tempInput = document.createElement("input");
            tempInput.value = titleContent;
            document.body.appendChild(tempInput);

            // 选择文本内容
            tempInput.select();
            tempInput.setSelectionRange(0, 99999); // 兼容 iOS

            // 复制文本内容
            document.execCommand("copy");

            // 移除临时文本输入框
            document.body.removeChild(tempInput);
        });

        addButton("册", "400px", "10px", document.querySelector("body"), function() {
            let titleContent = document.querySelector("#root > div > div > div > span").textContent.replace('图片_百度百科','');

            // 创建一个临时的文本输入框
            let tempInput = document.createElement("input");
            tempInput.value = titleContent;
            document.body.appendChild(tempInput);

            // 选择文本内容
            tempInput.select();
            tempInput.setSelectionRange(0, 99999); // 兼容 iOS

            // 复制文本内容
            document.execCommand("copy");

            // 移除临时文本输入框
            document.body.removeChild(tempInput);
        });

        addButton("下", "300px", "10px", document.querySelector("body"), function() {
            //还没写

        });

    }
    //下载页面——新
    else if (url.includes('?adi') && url.includes('baike.baidu.com/pic')) {
        console.log('下载页面——新');
        setTimeout(function() {
            openNewPage_openPageList();
        }, 2000);

    }
    //下载图片-附加
    else if (!url.includes('?adi') && url.includes('?adplus')) {
        setTimeout(() => {
            openNewPage();
        }, 10000);

        setTimeout(() => {
            window.close();
        }, 20000);
    }
    //无运行
    else if (!url.includes('?adi') && url.includes('?nothing')) {
        //
    }


})();