Greasy Fork

Greasy Fork is available in English.

AcFun - 我的关注直播间

修改uid: 0.0伪用户的直播间页面样式,只展示所关注的直播间列表

当前为 2023-03-05 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         AcFun - 我的关注直播间
// @namespace    http://tampermonkey.net/
// @version      1.2.2
// @description  修改uid: 0.0伪用户的直播间页面样式,只展示所关注的直播间列表
// @author       dareomaewa
// @match        https://live.acfun.cn/live/0.0
// @icon         https://www.google.com/s2/favicons?sz=64&domain=acfun.cn
// @grant        none
// @require      https://cdn.staticfile.org/jquery/3.5.0/jquery.min.js
// @license MIT
// ==/UserScript==


(function() {
    'use strict';

    const config = {
        maxLoveUpsSize: 50,
        maxLiveSize: 1001,
        love: {
            // true: 打开love样式 false: 关闭
            open: true,
            ups: [],
        },
        egg: {
            // 彩蛋开关 true: 打开 false: 关闭
            open: true,
            type: 0,
            upsInfo: {
                416752: {
                    uid: 416752,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_30a99a69987d4995b43df39320491711.jpg',
                    ],
                },
                36626547: {
                    uid: 36626547,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_3151ca8705334d88ba6cdc4834573ec1.jpg',
                    ],
                },
                23682490: {
                    uid: 23682490,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_b8fbdbdd47be447895464b5555225679.jpg',
                    ],
                },
                1345673: {
                    uid: 1345673,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_5d8820b3b8ca42d38f17240c48102752.jpg',
                    ],
                },
                179922: {
                    uid: 179922,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_75e7e36b3e6445baa02f1c8618b4359c.jpg',
                    ],
                },
                30561040: {
                    uid: 30561040,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_61f0f008b94c4d579f789c06e5d2ee4f.jpg',
                    ],
                },
                40740702: {
                    uid: 40740702,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_25a67815bb984f5ea853395af9c8c237.jpg',
                    ],
                },
                12553939: {
                    uid: 12553939,
                    coverUrls: [
                        'https://imgs.aixifan.com/newUpload/776907_b8ac4f947626494cbb96356794d39e3c.jpg',
                    ],
                },
            },
        },
    };

    var lsLoveUps = window.localStorage.getItem('ls_love_ups');
    if (!lsLoveUps) {
        window.localStorage.setItem('ls_love_ups', JSON.stringify({}));
        lsLoveUps = window.localStorage.getItem('ls_love_ups');
    }
    if (typeof(lsLoveUps) === 'string') {
        lsLoveUps = JSON.parse(lsLoveUps);
    }
    config.love.ups = lsLoveUps;
    console.log(`lsLoveUps: ${lsLoveUps}`);
    var loveUpsUids = Object.keys(lsLoveUps) ?? [];
    console.log(`loveUpsUids: ${loveUpsUids}`);

    var lsLoveOpen = window.localStorage.getItem('ls_love_open');
    if (typeof(lsLoveOpen) !== 'boolean' && !lsLoveOpen) {
        console.log(`lsLoveOpen0: ${lsLoveOpen}`);
        window.localStorage.setItem('ls_love_open', config.love.open);
        lsLoveOpen = window.localStorage.getItem('ls_love_open');
    }
    lsLoveOpen = String(lsLoveOpen)
    lsLoveOpen = /^true$/.test(lsLoveOpen)
    console.log(`lsLoveOpen: ${lsLoveOpen}`);

    function StringBuffer() {
        this.__strings__ = [];
    };
    StringBuffer.prototype.Append = function (str) {
        this.__strings__.push(str);
        return this;
    };
    StringBuffer.prototype.ToString = function () {
        return this.__strings__.join('');
    };

    function createLiveListItemHtmlStr(data) {
        var htmlStr = new StringBuffer();
        htmlStr.Append('<div class="live-list-item list-item item">');
        htmlStr.Append(' <span style="position: relative;">');
        htmlStr.Append(' <div class="live-check-cover">');
        htmlStr.Append(' <div class="live-check-cover-desc"><a href="' + data.coverUrls[1]+ '" target="_blank" title="查看封面" style="color: #f3fdff">查看封面</a></div>');
        htmlStr.Append('</div>');
        htmlStr.Append(' <a href="/live/' + data.href + '" target="_blank" class="list-content-top">');
        htmlStr.Append(' <div class="list-content-data">');
        htmlStr.Append(' <span class="likeCount icon-like icon-ks">' + data.likeCount+ '');
        htmlStr.Append('</span>');
        htmlStr.Append(' <span class="onlineCount icon-view">' + data.onlineCount+ '');
        htmlStr.Append('</span>');
        htmlStr.Append('</div>');

        if (config.egg.open && Object.keys(config.egg.upsInfo).some(e => e === data.user.id)) {
            const eggCoverUrl = config.egg.upsInfo[data.user.id].coverUrls[config.egg.type];
            htmlStr.Append(' <div class="list-content-cover">');
            htmlStr.Append(' <img id="cover_' + data.user.id + '" data-src="' + data.coverUrls[0]+ '" src="' + data.coverUrls[0] + '" lazy="loaded"  />');
            htmlStr.Append(' <img id="cover_' + data.user.id + '_love" data-src="' + eggCoverUrl + '" src="' + eggCoverUrl + '" lazy="loaded" style="display: none;"  />');
            htmlStr.Append('</div>');
            htmlStr.Append(' <div class="danmaku-mask" style="background: rgb(0 0 0 / 0%);" onmouseover="danmakuMaskTrigger(\'#cover_' + data.user.id + '_love\', \'#cover_' + data.user.id + '\');" onmouseout="danmakuMaskTrigger(\'#cover_' + data.user.id + '\', \'#cover_' + data.user.id + '_love\');">');
        }else {
            htmlStr.Append(' <div class="list-content-cover">');
            htmlStr.Append(' <img id="cover_' + data.user.id + '" data-src="' + data.coverUrls[0]+ '" src="' + data.coverUrls[0] + '" lazy="loaded"  />');
            htmlStr.Append('</div>');
            htmlStr.Append(' <div class="danmaku-mask" style="background: rgb(0 0 0 / 28%);">');
        }

        htmlStr.Append(' <div class="space-danmaku"></div>');
        htmlStr.Append(' <span class="video-time"></span>');
        htmlStr.Append('</div>');
        htmlStr.Append(' <div class="live-status">');
        htmlStr.Append(' <div class="live-status-desc">直播中</div>');
        htmlStr.Append(' <div class="living-icon">');
        htmlStr.Append(' <div class="live-animate" style="width: 12px; height: 12px;">');
        htmlStr.Append(' <img width="100%" height="100%" src="//ali-imgs.acfun.cn/kos/nlav10360/static/img/liveing.54ae1410.gif" />');
        htmlStr.Append('</div>');
        htmlStr.Append('</div>');
        htmlStr.Append('</div>');
        htmlStr.Append('</a>');
        htmlStr.Append('</span>');
        htmlStr.Append(' <div class="up-info">');
        htmlStr.Append(' <a href="/live/' + data.href + '" target="_blank" class="up-info-left">');
        htmlStr.Append(' <img class="up-avatar" data-src="' + data.user.headUrl + '" src="' + data.user.headUrl + '" lazy="loaded" />');
        htmlStr.Append('</a>');
        htmlStr.Append(' <div class="up-info-right">');
        htmlStr.Append(' <h1 class="list-content-title">');
        htmlStr.Append(' <a href="/live/' + data.href + '" target="_blank" title="' + data.title + '">' + data.title + '</a>');
        htmlStr.Append('</h1>');
        htmlStr.Append(' <a href="//www.acfun.cn/u/' + data.user.id + '" target="_blank" title="' + data.user.name + '" data-uid="' + data.user.id + '" class="list-content-uplink">UP: ' + data.user.name + '</a>');
        htmlStr.Append('</div>');
        htmlStr.Append('</div>');
        htmlStr.Append('</div>');
        return htmlStr.ToString();
    }

    function waitElement(selector, times, interval, flag=true){
        var _times = times || -1,
            _interval = interval || 1,
            _selector = selector,
            _iIntervalID,
            _flag = flag;
        return new Promise(function(resolve, reject){
            _iIntervalID = setInterval(function() {
                if(!_times) {
                    clearInterval(_iIntervalID);
                    reject();
                }
                _times <= 0 || _times--;
                var _self = $(_selector);
                if( (_flag && _self.length) || (!_flag && !_self.length) ) {
                    clearInterval(_iIntervalID);
                    resolve(_iIntervalID);
                }
            }, _interval);
        });
    }

    function addChild(fatherNode, childNode, innerHtmlStr, type) {
        childNode.innerHTML = innerHtmlStr;
        if (type) {
            fatherNode.appendChild(childNode);
        }else {
            fatherNode.appendChild(childNode.childNodes[0]);
        }
    }

    function addChildDiv(fatherNode, innerHtmlStr) {
        addChild(fatherNode, document.createElement("div"), innerHtmlStr);
    }

    function addChildScript(fatherNode, scriptStr) {
        addChild(fatherNode, document.createElement("script"), scriptStr, 'script');
    }

    function addChildStyle(fatherNode, styleStr) {
        addChild(fatherNode, document.createElement("style"), styleStr, 'style');
    }

    function initLiveContainer(liveContainerSelector, liveList) {
        waitElement(liveContainerSelector).then(function() {
            var othersLiveContainer = document.querySelector(liveContainerSelector);
            //console.log(liveList);
            liveList.forEach(data => {
                addChildDiv(othersLiveContainer, createLiveListItemHtmlStr(data));
            });
        });
    }

    function replaceText(selector, newText) {
        waitElement(selector).then(function() {document.querySelector(selector).innerText = newText;});
    }

    function removeNode(selector) {
        waitElement(selector).then(function() {document.querySelector(selector).style.display = 'none';});
    }

    function confirmMoreLive(selector) {
        const msg = '确定跳转AC直播大屏幕吗?你将可能进入未曾关注过的直播间。';
        waitElement(selector).then(function() {
            const moreLiveNodes = document.querySelectorAll(selector);
            moreLiveNodes.forEach(node => {
                node.setAttribute('href', 'javascript:if(confirm("' + msg + '")) window.open("/");');
                node.removeAttribute('target');
            });
        });
    }

    replaceText('title', '我的关注直播间');
    //replaceText('.recmd-live-title', '我的关注直播间');

    removeNode('.player-outer-wrapper');
    removeNode('.recmd-live-container');

    confirmMoreLive('.more-live');
    confirmMoreLive('.live-page-title');
    confirmMoreLive('a[href="/"].live');

    $.ajax({
        url: '/api/channel/list?count=' + config.maxLiveSize + '&pcursor=&filters=[%7B%22filterType%22:3,+%22filterId%22:0%7D]',
        type: 'get',
        success: function (res) {
            //console.log(res);

            const liveList = res.liveList;

            replaceText('.recmd-live-title', '我的关注直播间 (' + liveList.length + ')');

            let loveUps = Object.keys(config.love.ups) ?? [];

            waitElement('.recommend-live-wrapper').then(function() {
                const recommendLiveWrapperNode =document.querySelector('.recommend-live-wrapper');
                addChildDiv(recommendLiveWrapperNode,
                         '<div id="loveLiveContainer" class="recmd-live-container" style="box-sizing: border-box;box-shadow: 0px 2px 0px 0px rgb(254 166 174);"></div>');

                addChildDiv(recommendLiveWrapperNode,
                         '<div id="othersLiveContainer" class="recmd-live-container" style="padding-top: 10px;"></div>');
            });

            waitElement('head').then(function() {
                const headNode = document.querySelector('head');
                addChildStyle(headNode,
                              '.live-check-cover {color: #fff;position: absolute;right: 4px;bottom: 5px;border-radius: 3px;text-align: center;width: auto;height: 19px;z-index: 996;} .live-check-cover-desc {font-size: 12px;line-height: 17px;height: 18px;display: inline-block;vertical-align: top;width: 58px;}');

                if (lsLoveOpen) {
                    addChildStyle(headNode,
                                  '#loveLiveContainer .live-list-item .list-content-top .list-content-data {background: linear-gradient(180deg,transparent,rgb(254 129 141 / 83%));} .list-container {min-height: 500px;}');
                }

                if (config.egg.open) {
                    addChildScript(headNode,
                                   'function danmakuMaskTrigger(selector0, selector1){document.querySelector(selector0).setAttribute("style", "display: block;");document.querySelector(selector1).setAttribute("style", "display: none;");}');
                }
            });

            if (!lsLoveOpen || loveUps.length ===0) {
                initLiveContainer('#othersLiveContainer', liveList);
            }else {
                const loveLiveList = liveList.filter((e) => loveUps.some((uid) => uid == e.authorId));
                initLiveContainer('#loveLiveContainer', loveLiveList);

                const othersLiveList = liveList.filter((e) => !loveUps.some((uid) => uid == e.authorId));
                initLiveContainer('#othersLiveContainer', othersLiveList);
            }
        }
    });

    window.aikaCut = function aikaCut() {
        const btn = document.querySelector('#aika-cut');
        $.ajax({
            url: 'https://id.app.acfun.cn/rest/web/token/get',
            type: 'post',
            data: {'sid': 'acfun.midground.api'},
            xhrFields: {
                withCredentials: true
            },
            success: function (res) {
                //console.log(res);
                const aikaText = document.getElementById('aika-text');
                const aikaTestValue = aikaText.value.trim();
                var aikaCutUrl;
                if (/https:\/\/onvideo.kuaishou.com\/vangogh\/editor\/(\d+)\?source=ac/g.test(aikaTestValue)) {
                    aikaCutUrl = 'https://onvideoapi.kuaishou.com/rest/infra/sts?sid=acfun.midground.api&authToken=' + res['acfun.midground.api.at'] + '&followUrl=' + encodeURI(aikaTestValue);
                }
                else if (/^\d+$/.test(aikaTestValue)) {
                    aikaCutUrl = 'https://onvideoapi.kuaishou.com/rest/infra/sts?sid=acfun.midground.api&authToken=' + res['acfun.midground.api.at'] + '&followUrl=' + encodeURI('https://onvideo.kuaishou.com/vangogh/editor/' + aikaTestValue + '?source=ac');
                }
                else {
                    aikaCutUrl = '#';
                }
                console.log(aikaCutUrl);

                const aikaA = document.createElement('a');
                aikaA.href = aikaCutUrl;
                aikaA.target = '_blank';
                aikaA.click();
                aikaA.remove();
            },
            beforeSend: function() {
                btn.disabled = true;
                btn.style['background-color'] = 'rgb(0 0 0 / 45%)';
                btn.innerText = '跳转中…';
            },
            complete: function() {
                btn.disabled = false;
                btn.style['background-color'] = '#fd4c5d';
                btn.innerText = '爱咔剪辑';
            }
        });
    }

    window.checkAika = function checkAika() {
        const btn = document.querySelector('#aika-find');
        $.ajax({
            url: 'https://id.app.acfun.cn/rest/web/token/get',
            type: 'post',
            data: {'sid': 'acfun.midground.api'},
            xhrFields: {
                withCredentials: true
            },
            success: function (res) {
                const aikaA = document.createElement('a');
                aikaA.href = 'https://onvideoapi.kuaishou.com/rest/infra/sts?sid=acfun.midground.api&authToken=' + res['acfun.midground.api.at'] + '&followUrl=' + encodeURI('https://onvideo.kuaishou.com/vangogh/editor/0.0?source=ac');
                aikaA.target = '_blank';
                aikaA.click();
                aikaA.remove();
            },
            beforeSend: function() {
                btn.disabled = true;
                btn.innerText = '跳转中…';
            },
            complete: function() {
                btn.disabled = false;
                btn.innerText = '爱咔号查询>';
            }
        });
    }

    window.triggerLove = function triggerLove() {
        const loveStyle = document.querySelector('#loveStyle');
        const loveStyleChecked = loveStyle.checked;
        if(confirm(`即将刷新页面,确定${loveStyleChecked ? '打开' : '关闭'}喜爱模式吗?`)) {
            window.localStorage.setItem('ls_love_open', loveStyleChecked);;
            window.location.reload();
        }else {
            loveStyle.checked = !loveStyleChecked;
        }
    }

    window.configTrigger = function configTrigger() {
        const configContainerNode = document.querySelector('#configContainer');
        const configTriggerNode = document.querySelector('#configTrigger');
        if(configContainerNode.style.display === 'none') {
            configContainerNode.style.display = 'block';
            configTriggerNode.innerText = '收起配置';

            const loveUpshtmlStringBuffer = new StringBuffer();
            const copyAllUidTextStringBuffer = new StringBuffer();
            if (loveUpsUids.length > 0) {
                loveUpsUids.forEach(uid => {
                    loveUpshtmlStringBuffer.Append(`<a href="//www.acfun.cn/u/${uid}" target="_blank" title="${uid}" class="list-content-uplink" style="text-decoration: underline;" >${lsLoveUps[uid]}</a>&nbsp;&nbsp;`)
                    copyAllUidTextStringBuffer.Append(`${uid},`);
                });
            }
            else {
                loveUpshtmlStringBuffer.Append('当前暂无喜爱主播的信息,请进行添加');
            }

            const loveUpsContainer =document.querySelector('#love_ups_container');
            const currentLoveUpsHtmlStr = `
            <div id="current_love_ups" style="position: relative;">
                <div
                    onmouseover="(function(){document.querySelector('#copyAllUids').style.display = 'inline-block';})()"
                    onmouseout="(function(){document.querySelector('#copyAllUids').style.display = 'none';})()"
                    style="display: inline-block;cursor: default;position: relative;padding: 5px;color: #fd4c5d !important;font-family: 'Font Awesome 5 Regular';font-size: 14px;">
                        当前喜爱主播 (${loveUpsUids.length})
                        <span id="copyAllUids" style="display: none;" >
                            <button onclick="(function(){
                                var text = document.createElement('textarea');
                                text.style.opacity = '0';
                                text.value = '${copyAllUidTextStringBuffer.ToString()}';
                                document.body.appendChild(text);
                                text.select();
                                document.execCommand('copy');
                                document.body.removeChild(text);
                                alert('复制成功');
                            })()"
                            style="font-size: 12px;line-height: 12px;color: #409bef;border-width: 0px;background-color: rgb(255 255 255 / 0%);text-decoration: underline;cursor: pointer;">复制全部uid</button>
                        <span>
                </div>
                <marquee behavior="scroll" scrollamount="5" onmouseover="this.stop()" onmouseout="this.start()"  style="color:#ef8a56;white-space:nowrap;width: 100%;">
                    ${loveUpshtmlStringBuffer.ToString()}
                </marquee>
            </div>`;
            addChild(loveUpsContainer, document.createElement("div"), currentLoveUpsHtmlStr, 'div');

        }else {
            configContainerNode.style.display = 'none';
            configTriggerNode.innerText = '展开配置';

            const currentLoveUps =document.querySelector('#current_love_ups');
            currentLoveUps.parentNode.remove();
        }
    }

    function wait(ms) {
        return new Promise(resolve =>setTimeout(() => resolve(), ms));
    };

    window.addLoveUps = async function addLoveUps() {
        const tips = document.querySelector('#add_uid_tips');
        tips.innerText = '进行中…';
        const delTips = document.querySelector('#del_uid_tips');
        delTips.innerText = '';

        const btn = document.querySelector('#loveUid-add');
        btn.disabled = true;
        btn.style['background-color'] = 'rgb(0 0 0 / 45%)';
        await wait(100);

        if (loveUpsUids.length < config.maxLoveUpsSize) {
            var upUids = document.querySelector('#up_uids').value;
            upUids = upUids.trim();
            const onlyOneUid = /^\d+$/.test(upUids);
            if (onlyOneUid && !loveUpsUids.some((fuid) => fuid == upUids)) {
                $.ajax({
                    async:false,
                    url: 'https://live.acfun.cn/rest/pc-direct/user/userInfo?userId=' + upUids,
                    type: 'get',
                    xhrFields: {
                        withCredentials: true
                    },
                    success: function (res) {
                        if (res.result === 0 && res.profile && res.profile.name) {
                            lsLoveUps[Number(upUids)] = res.profile.name;
                            console.log(lsLoveUps);
                            window.localStorage.setItem('ls_love_ups', JSON.stringify(lsLoveUps));
                            loveUpsUids = Object.keys(lsLoveUps) ?? [];
                            tips.innerText = '添加成功,刷新页面生效';
                        }
                        else {
                            tips.innerText = '添加失败,获取信息失败';
                        }
                    },
                    error: function() {
                        tips.innerText = '添加失败,获取信息失败';
                    }
                });
            }
            else if(upUids && upUids.length > 0) {
                upUids = upUids.replaceAll(",", ",").replaceAll(" ", ",");
                const uids = upUids.split(',');
                if ((uids.length + loveUpsUids.length) <= config.maxLoveUpsSize) {
                    uids.forEach(uid => {
                        uid = uid.trim();
                        if (/^\d+$/.test(uid) && !loveUpsUids.some((fuid) => fuid == uid)) {
                            $.ajax({
                                async:false,
                                url: 'https://live.acfun.cn/rest/pc-direct/user/userInfo?userId=' + uid,
                                type: 'get',
                                xhrFields: {
                                    withCredentials: true
                                },
                                success: function (res) {
                                    if (res.result === 0 && res.profile && res.profile.name) {
                                        lsLoveUps[Number(uid)] = res.profile.name;
                                    }
                                }
                            });
                        }
                    });
                    console.log(lsLoveUps);
                    window.localStorage.setItem('ls_love_ups', JSON.stringify(lsLoveUps));
                    loveUpsUids = Object.keys(lsLoveUps) ?? [];
                    tips.innerText = '添加成功,刷新页面生效';
                }
                else {
                    tips.innerText = '添加失败,超出最大值50';
                }
            }
            else {
                tips.innerText = '添加失败,无效uid';
            }
        }else {
            tips.innerText = '添加失败,超出最大值50';
        }


        btn.disabled = false;
        btn.style['background-color'] = '#fd4c5d';
    }

    window.delLoveUps = async function delLoveUps() {
        const tips = document.querySelector('#del_uid_tips');
        tips.innerText = '';
        const addTips = document.querySelector('#add_uid_tips');
        addTips.innerText = '';

        const btn = document.querySelector('#loveUid-del');
        btn.disabled = true;
        btn.style['background-color'] = 'rgb(0 0 0 / 45%)';
        await wait(100);

        var upUids = document.querySelector('#up_uids').value;
        upUids = upUids.trim();
        const onlyOneUid = /^\d+$/.test(upUids);
        if (onlyOneUid && loveUpsUids.some((fuid) => fuid == upUids)) {
            delete lsLoveUps[upUids];
            console.log(lsLoveUps);
            window.localStorage.setItem('ls_love_ups', JSON.stringify(lsLoveUps));
            tips.innerText = '删除成功,刷新页面生效';
        }
        else if(upUids && upUids.length > 0) {
            upUids = upUids.replaceAll(",", ",").replaceAll(" ", ",");
            const uids = upUids.split(',');
            uids.forEach(uid => {
                uid = uid.trim();
                if (/^\d+$/.test(uid) && loveUpsUids.some((fuid) => fuid == uid)) {
                    delete lsLoveUps[uid];
                }
            });
            console.log(lsLoveUps);
            window.localStorage.setItem('ls_love_ups', JSON.stringify(lsLoveUps));
            tips.innerText = '删除成功,刷新页面生效';
        }
        else {
            tips.innerText = '删除失败,无效uid';
        }

        btn.disabled = false;
        btn.style['background-color'] = '#e6e6e6';
    }

    window.clearConfig = function clearConfig() {
        if(confirm(`即将刷新页面,确定初始化配置吗?`)) {
            window.localStorage.removeItem('ls_love_ups');
            window.localStorage.removeItem('ls_love_open');
            window.location.reload();
        }
     }

    const aikaHtmlStr = `
<div style="padding: 5px;font-size: 12px;border: 1px solid #e5e5e5;line-height: 20px;vertical-align: top;color: #999;box-sizing: border-box;margin-top: 5px;position: relative;">
    <p style="
        color: #333333;
        height: 20px;
        font-size: 17px;
        text-align: center;
        padding-bottom: 5px;">
        爱咔
    </p>
    <div>
        <div style="/* padding-top: 20px; */">
            <input type="text" placeholder="爱咔号 或者 爱咔地址" value="" autocomplete="off" id="aika-text" style="
            width: 100%;
            padding: 8px 30px 8px 10px;
            height: 36px;
            font-size: 12px;
            border: 1px solid #e5e5e5;
            line-height: 14px;
            vertical-align: top;
            color: #999;
            box-sizing: border-box;">
        </div>
    </div>
    <div style="padding: 10px 0 0 0;position: relative;">
        <button id="aika-cut" onclick="window.aikaCut();" style="
            display: inline-block;
            background-color: #fd4c5d;
            width: 74px;
            color: #fff;
            font-size: 14px;
            line-height: 26px;
            border-radius: 4px;
            border-width: 0px;
            cursor: pointer;">
            爱咔剪辑
        </button>
        <button id="aika-find" onclick="window.checkAika();" style="
            position: absolute;
            font-size: 12px;
            line-height: 12px;
            color: #fd4c5d;
            bottom: 0;
            right: 0;
            border-width: 0px;
            background-color: rgb(255 255 255 / 0%);
            cursor: pointer;">爱咔号查询&gt;</button>
    </div>
</div>
    `;
    const configHtmlStr = `
<div id="configContainer" style="display: none;padding: 5px;font-size: 12px;border: 1px solid #e5e5e5;line-height: 20px;vertical-align: top;color: #999;box-sizing: border-box;margin-top: 5px;position: relative;">
    <p style="
        color: #333333;
        height: 20px;
        font-size: 17px;
        text-align: center;
        padding-bottom: 5px;">
        配置
    </p>
    <div style="position: relative;padding-left: 5px;">
        <span onclick="(function(){document.querySelector('#loveStyle').click()})()" style="color: #fd4c5d !important;font-family: 'Font Awesome 5 Regular';font-size: 14px;cursor: pointer;">喜爱模式</span>
        <div style="position: relative;display: inline;">
            <input id="loveStyle" type="checkbox" ${lsLoveOpen ? 'checked=checked' : ''} onclick="window.triggerLove();" style="box-sizing: border-box;padding: 0;position: absolute;bottom: -3px;z-index: 1;cursor: pointer;">
        </div>
        <button onclick="window.clearConfig();" style="position: absolute;font-size: 12px;line-height: 12px;color: #fd4c5d;bottom: 0;right: 0;border-width: 0px;background-color: rgb(255 255 255 / 0%);text-decoration: underline;cursor: pointer;">配置初始化</button>
    </div>
    <div id="love_ups_container" style="display: ${lsLoveOpen ? 'block' : 'none'};">
        <div style="padding: 5px;">
            <span>操作一个或多个喜爱uid,多个uid通过 “ ” (空格) 或者 “,” (英文逗号) 来分隔</span>
            <input type="text" placeholder="123 或者 123,456,789 或者 123 456" value="" autocomplete="off" id="up_uids" style="
                width: 100%;
                padding: 8px 30px 8px 10px;
                height: 36px;
                font-size: 12px;
                border: 1px solid #e5e5e5;
                line-height: 14px;
                vertical-align: top;
                color: #999;
                box-sizing: border-box;">
        </div>
        <div style="padding: 10px 0 0 0;position: relative;">
            <div style="display: inline;">
                <button id="loveUid-add" onclick="window.addLoveUps();" style="display: inline-block; background-color: rgb(253, 76, 93); width: 74px; color: rgb(255, 255, 255); font-size: 14px; line-height: 26px; border-radius: 4px; border-width: 0px;cursor: pointer;">添加uid</button>
                <span id="add_uid_tips" style="padding-left: 0px;color: rgb(38, 185, 99);"></span>
            </div>
            <div style="display: inline;bottom: 0;right: 0;position: absolute;">
                <span id="del_uid_tips" style="padding-left: 0px;color: rgb(38, 185, 99);"></span>
                <button id="loveUid-del" onclick="window.delLoveUps();" style="display: inline-block;background-color: #e6e6e6;width: 74px;color: #666666;font-size: 14px;line-height: 26px;border-radius: 4px;border-width: 0px;cursor: pointer;">删除uid</button>
            </div>
        </div>
    </div>
</div>
<div style="position: relative;">
    <button id="configTrigger" onclick="window.configTrigger();" style="
            text-decoration: underline;
            padding-top: 10px;
            position: absolute;
            font-size: 12px;
            line-height: 12px;
            color: #409bef;
            top: 0px;
            left: 50%;
            transform: translateX(-50%);
            border-width: 0px;
            background-color: rgb(255 255 255 / 0%);
            cursor: pointer;
            ">展开配置</button>
</div>`;

    waitElement('.list-right').then(function() {
        const listRightNode = document.querySelector('.list-right');
        addChild(listRightNode, document.createElement("div"), aikaHtmlStr, 'div');
        addChild(listRightNode, document.createElement("div"), configHtmlStr, 'div');
    });

})();