Greasy Fork is available in English.

b站动态设置

调整b站动态首页得展示

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         b站动态设置
// @namespace    https://greasyfork.org/
// @license      MIT
// @version      0.1
// @description  调整b站动态首页得展示
// @author       byhgz
// @match        *://t.bilibili.com/*
// @require      https://code.jquery.com/jquery-3.5.1.min.js
// @require      https://greasyfork.org/scripts/462234-message/code/Message.js?version=1170653
// @icon         https://static.hdslb.com/images/favicon.ico
// @grant        GM_registerMenuCommand
// @grant        GM_addStyle
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

const Util = {
    addGMMenu(text, func, shortcutKey = null) {
        return GM_registerMenuCommand(text, func, shortcutKey);
    },
    addStyle(cssStyleStr) {
        GM_addStyle(cssStyleStr);
    },
    setData(key, content) {
        GM_setValue(key, content);
    },
    getData(key, defaultValue) {
        return GM_getValue(key, defaultValue);
    },
}

const Layout={
    addMenu(){
        $("body").append(`<div style="position: fixed; left: 90%;top: 10%;z-index: 2024">
        <button id="isShowMainPanel">只显示主内容</button>
</div>`);
    }
}

const LocalData = {
    isTrendsItemsTwoColumn() {
        return Util.getData("trendsItemsTwoColumn", false);
    },
    setTrendsItemsTwoColumn(is) {
        Util.setData("trendsItemsTwoColumn", is === true);
    }
}

const Trends = {
    setitemsCss() {
        Util.addStyle(`
            .bili-dyn-up-list__content{
            display:flex;
            flex-flow:row wrap;
            }`);
    },
    setStyleRichTextarea() {
        const i1 = setInterval(() => {
            const richTextArea = document.querySelector(".bili-rich-textarea");
            if (richTextArea === null) return;
            clearInterval(i1);
            try {
                $(richTextArea).css("max-height", "");
                Qmsg.success("已解锁发动态编辑框的最大可视内容!");
            } catch (e) {
                console.error("修改编辑框最大可视内容时出错!", e);
            }
        }, 1000);
    },
    topCssDisply: {
        //针对于整体布局的细调整
        body() {
            const interval = setInterval(() => {
                const leftTopUserE = document.querySelector(".left .bili-dyn-my-info");
                if (leftTopUserE === null) return;
                clearInterval(interval);
                leftTopUserE.remove();
                document.querySelector(".bili-dyn-home--member").style.justifyContent = 'space-between';
                $('aside').hide();
                document.querySelector("main").style.width = "100%";
            });
            const interval02 = setInterval(() => {
                const e = document.querySelectorAll(".bili-dyn-sidebar>*:nth-child(-n+2)");
                if (e.length === 0) return;
                clearInterval(interval02);
                e.forEach((value, key) => {
                    value.remove();
                });
                console.log("已尝试移除个别多余的悬浮按钮");
            }, 500);
        }
    },
};

function extracted() {
    const i2 = setInterval(() => {
        const tempList = document.querySelectorAll(".bili-dyn-list__items>.bili-dyn-list__item");
        if (tempList.length === 0) return;
        clearInterval(i2);
        //调整动态列表的布局方式为类似网格
        Util.addStyle(`
            .bili-dyn-list__items{
           column-count: 2;
            }
            .bili-dyn-list__items>*{
            page-break-inside: avoid;
            }
            `);
    }, 500);
}

(function () {
    'use strict';
    const url = window.location.href;
    const title = document.title;
    Util.addGMMenu("动态首页动态展示双列显示开关", () => {
        const b = confirm("是否开启动态首页动态展示双列显示?\n当前状态:" + (LocalData.isTrendsItemsTwoColumn() === true ? "开" : "关"));
        LocalData.setTrendsItemsTwoColumn(b);
        alert(`已设置状态:${b ? "开" : "关"}`);
    });
    if (!(url.startsWith("https://t.bilibili.com/") && title.startsWith("动态首页-哔哩哔哩"))) {
        return;
    }
    console.log("=========动态首页=========");
    const i1 = setInterval(() => {
        const tab = document.querySelector(".bili-dyn-up-list__content");
        if (tab === null) return;
        clearInterval(i1);
        Trends.setitemsCss();
        Qmsg.success("已修改切换动态用护栏展示");
        $(tab).children(".bili-dyn-up-list__item").click(() => {
            extracted();
        });
    }, 1000);
    Trends.setStyleRichTextarea();
    Trends.topCssDisply.body();
    if (LocalData.isTrendsItemsTwoColumn()) {
        extracted();
    }
    Layout.addMenu();
    $("#isShowMainPanel").click((e) => {
        const target = e.target;
        const aside = $('aside');
        const bodyMain = document.querySelector("main");
        if (target.textContent === "只显示主内容") {
            target.textContent = "显示左右中内容";
            aside.show();
            bodyMain.style.width = "724px";
        } else {
            target.textContent = "只显示主内容";
            aside.hide();
            bodyMain.style.width = "100%";
        }
    });

})();