Greasy Fork

Greasy Fork is available in English.

b站动态设置

调整b站动态首页得展示

当前为 2024-03-11 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         b站动态设置
// @namespace    http://greasyfork.icu/
// @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      http://greasyfork.icu/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%";
        }
    });

})();