哔哩哔哩(B站)评论区显示楼层

bilibili哔哩哔哩网页端视频、番剧、动态显示评论区楼层与楼中楼楼层,理论兼容Bilibill Evolved(2022/05可用)

Устаревшая версия за 14.05.2022. Перейдите к последней версии.

// ==UserScript==
// @name         哔哩哔哩(B站)评论区显示楼层
// @description  bilibili哔哩哔哩网页端视频、番剧、动态显示评论区楼层与楼中楼楼层,理论兼容Bilibill Evolved(2022/05可用)
// @author       lchzh3473 , Modify by Tinhone
// @namespace    Original by lchzh3473 , Modify by Tinhone
// @license      GPL-3.0
// @version      1.0
// @icon         https://app.bilibili.com/favicon.ico
// @grant        none
// @compatible   firefox V70+
// @compatible   edge V70+
// @compatible   chrome V70+
// @match        *://www.bilibili.com/video/*
// @match        *://www.bilibili.com/read/cv*
// @match        *://www.bilibili.com/bangumi/play/*
// @match        *://t.bilibili.com/*
// @match        *://space.bilibili.com/*/dynamic
// @exclude      *://t.bilibili.com/
// @run-at       document-end
// ==/UserScript==

(function() {
    'use strict';

    setInterval(() => {

        const qwqwqwq1=document.querySelectorAll(".reply.btn-hover:not(.b)") //排除已被 qw class包含的元素
        const qwqwqwq2=document.querySelectorAll(".list-item.reply-wrap:not(.a)")//寻找相应属性的div

        if(document.querySelector(".reply.btn-hover:not(.b)")){
            for(const i1 of qwqwqwq1){ //设置 回复 按钮样式
                i1.setAttribute("style","height:16px !important;padding-top:2px !important;padding-bottom:2px !important");
                i1.classList.add("b");
            }
        }

        if (document.querySelector(".list-item.reply-wrap:not(.a)")) {
            for (const i2 of qwqwqwq2){ //显示 显示楼中楼 按钮,以及对应功能
                var i2_1=i2.querySelector(".operation.more-operation .opera-list ul:not(.b)")

                var li=document.createElement("li");
                li.setAttribute("class","floor-in-floor")

                li.addEventListener("click",(()=>{ //点击事件
                    i2.classList.add("c")
                }))

                li.innerHTML="楼中楼楼层"

                i2_1.appendChild(li)
                i2_1.classList.add("b")
            }

            for (const i3 of qwqwqwq2) { //显示楼层
                i3.classList.add("a");
                const qwq = i3.querySelector(".info");

                const xhr = new XMLHttpRequest();
                //xhr.open("get", `//api.bilibili.com/x/v2/reply/detail?type=12&oid=1&root=${i.attributes["data-id"].value}`); //另一个api接口,可用
                xhr.open("get", `//api.bilibili.com/x/v2/reply/info?type=12&oid=1&rpid=${i3.attributes["data-id"].value}`);
                xhr.responseType = "json";
                xhr.withCredentials = true;
                xhr.send();

                xhr.onload = () => {
                    const data = xhr.response.data;
                    const qwqwq = document.createElement("span");
                    qwqwq.setAttribute("style","height:16px;margin-right:14px");
                    qwqwq.innerHTML = `#${data.floor}`;
                    qwq.appendChild(qwqwq); //加在div info最后
                }
            }
        }

        if (document.querySelector(".list-item.reply-wrap.c .con .reply-box .reply-item.reply-wrap")){
            for (const i4 of document.querySelectorAll(".list-item.reply-wrap.c")){
                const i4_2=i4.querySelectorAll(".con .reply-box .reply-item.reply-wrap:not(.d)")

                for (const i4_2_1 of i4_2){ //显示楼中楼楼层
                    const i4_2_1_1=i4_2_1.querySelector(".info")
                    i4_2_1.classList.add("d")

                    const xhr=new XMLHttpRequest()
                    xhr.open("get",`//api.bilibili.com/x/v2/reply/info?type=12&oid=1&rpid=${i4_2_1.attributes["data-id"].value}`)
                    xhr.responseType="json"
                    xhr.withCredentials=true
                    xhr.send()

                    xhr.onload=()=>{
                        const data=xhr.response.data
                        const span=document.createElement("span")
                        span.setAttribute("style","height:16px;margin-right:14px")
                        span.innerHTML=`#${data.floor}`
                        i4_2_1_1.appendChild(span)
                    }
                }
            }
        }

    }, 1000);
})();