tieba page

显示手机版贴吧里被隐藏的楼层与翻页按钮

当前为 2020-02-20 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         tieba page
// @namespace    http://tampermonkey.net/
// @version      0.60
// @author       fthvgb1
// @match        https://tieba.baidu.com/*
// @grant        none
// @description 显示手机版贴吧里被隐藏的楼层与翻页按钮
// ==/UserScript==




(function () {
    'use strict';


    function gif3(v) {
        var imgs = v.querySelectorAll('img.BDE_Image');
        if (imgs.length > 0) {
            imgs.forEach(img => {
                var src = img.src;
                var s = /&src=(.*)/.exec(src);
                if (s != null) {
                    var x = s.length > 0 ? s[1] : src;
                    img.src = decodeURIComponent(x);
                }

            })
        }
    }

    function gif(v) {
        var imgs = v.querySelectorAll('div[data-class="BDE_Image"]');
        if (imgs.length > 0) {
            imgs.forEach(value => {
                var src = decodeURIComponent(value.getAttribute('data-url'));

                //console.log(src);
                var s = /&src=(.*)/.exec(src);
                if (s != null) {
                    var ss = s[1];
                    var img = document.createElement('img');
                    img.src = (ss);
                    img.className = 'BDE_Image';
                    value.outerHTML = img.outerHTML;
                }
            })
        }
        gif3(v)
    }

    function t() {
        lz();
        $("ul#pblist>li").forEach(function (e, iii) {
            f(e);
            if (iii === 0) {
                var oo = e.querySelectorAll('.pb_img_item');
                if (oo.length > 0) {
                    oo.forEach(value => {
                        if (value.getAttribute('data-url')) {
                            value.setAttribute('data-class', 'BDE_Image');
                            value.setAttribute('src', value.getAttribute('data-url'));
                        }
                    });
                    //oo[0].parentElement.outerHTML=`<span class="wrap pbimgwapper">${oo[0].parentElement.innerHTML}</span>`
                }
                var zz = e.querySelector('#diversBanner');
                if (zz) {
                    zz.parentNode.removeChild(zz);
                }

            }
            gif(e);

            var ee = $(e);
            var tid = ee.attr("tid");
            var content = ee.find(".list_item_top");
            var x = ee.find('.list_item_top a.j_report_btn');
            if (x && x.length > 0) {
                var kz = x[0].href.match(/tid=(\d+)&/);
                kz = kz[1];
            }

            var floor = e.getElementsByClassName('pb_floow_load');
            if (floor.length > 0) {
                var text = floor[0].textContent;
                var url = `https://tieba.baidu.com/t/p/${tid}`;
                var num = parseInt(text.match(/\d+/));
                content.append(`<div style="text-align:center;background-color: #eee;margin: 8px 0 0 42px;"><a style="padding:12px;display:block;" href="javascript:void(0)" data-url="${url}" class="reply">查看剩余` + num + `条回复</a></div>`);
                var res = content.find('a.reply');
                var orgnum = num;
                //console.log(content,res);
                if (res) {
                    res.forEach(function (v, i) {
                        var page = 2;
                        v.addEventListener('click', function () {
                            var that = this;

                            if (num === orgnum) {
                                var url = this.getAttribute('data-url');
                                $.get(url, function (rst) {
                                    var dom = (new DOMParser()).parseFromString(rst, 'text/html');
                                    var r = dom.querySelector('.j_floor_panel');
                                    var lii = r.querySelectorAll('li');
                                    lii.forEach(function (li, index) {
                                        if (index < 2) {
                                            return;
                                        }
                                        var username = li.querySelector('.left>div .user_name').outerHTML;
                                        username = username.replace('</a>', ':</a>');
                                        var s = li.querySelector('.content span');
                                        s.className = 'floor_content';
                                        var c = li.querySelector('.content').innerHTML;
                                        var div = `
        <div class="fmain j_floor_main">
            <div class="floor_footer_item">
            ${username}
            ${c}
            </div>
        </div>`;
                                        li.innerHTML = div;
                                        var ll = document.createElement('li');
                                        ll.classList.add('list_item_floor');
                                        ll.classList.add('j_list_item_floor');
                                        ll.innerHTML = div;
                                        //console.log(content.find('.flist'))
                                        content.find('.flist')[0].appendChild(ll)

                                    });
                                    if (num <= 8) {
                                        that.parentNode.removeChild(that);
                                    } else {
                                        num -= 8;
                                        that.innerText = `查看剩余${num}条回复`;
                                    }
                                });
                            } else {
                                var url = `https://tieba.baidu.com/mo/q//flr?fpn=${page}&kz=${kz}&pid=${tid}&is_ajax=1&has_url_param=0&template=lzl`;
                                $.get(url, function (res) {
                                    var ht = (new DOMParser()).parseFromString(res.data.floor_html, 'text/html');
                                    var lii = ht.querySelectorAll('li');
                                    lii.forEach(function (li, index) {
                                        var username = li.querySelector('.left>div .user_name').outerHTML;
                                        username = username.replace('</a>', ':</a>');
                                        var s = li.querySelector('.content span');
                                        s.className = 'floor_content';
                                        var c = li.querySelector('.content').innerHTML;
                                        var div = `
        <div class="fmain j_floor_main">
            <div class="floor_footer_item">
            ${username}
            ${c}
            </div>
        </div>`;
                                        li.innerHTML = div;
                                        var ll = document.createElement('li');
                                        ll.classList.add('list_item_floor');
                                        ll.classList.add('j_list_item_floor');
                                        ll.innerHTML = div;
                                        //console.log(content.find('.flist'))
                                        content.find('.flist')[0].appendChild(ll)

                                    });
                                    ++page;
                                    if (num > 10) {
                                        num -= 10;
                                        that.innerText = `查看剩余${num}条回复`;
                                    } else {
                                        that.parentNode.removeChild(that);
                                    }
                                })
                            }

                        })
                    })
                }
                floor[0].parentNode.removeChild(floor[0])
            }

        });
    }

    function lz() {
        var lz = document.querySelector('span.poster_only');
        if (lz) {
            lz.onclick = null;
            var h = location.href;
            var ff = 0;
            if (h.indexOf('see_lz=1') > -1) {
                lz.textContent = '取消只看楼主';
                h = h.replace('see_lz=1', 'see_lz=0');
                ff = 1;
            }
            lz.addEventListener('click', () => {

                if (ff === 0) {
                    h = h.indexOf('?') < 0 ? h + '?see_lz=1' : h + '&see_lz=1';
                }
                location.href = h;

            });
        }
    }

    function f(value) {
        var dt = JSON.parse(value.getAttribute('data-info'));
        if (dt) {
            var fl = dt.floor_num;
            var l = document.createElement('span');
            l.style.color = 'green';
            l.textContent = fl + '楼';
            if (fl === 1) {
                l.textContent = '楼主';
            } else if (fl === 2) {
                l.textContent = '沙发';
            } else if (fl === 3) {
                l.textContent = '板凳';
            }
            value.querySelector('.list_item_time').parentNode.appendChild(l);
        }
    }

    function check() {
        var userAgentInfo = navigator.userAgent;
        var Agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"];
        var flag = 0;
        for (var v = 0; v < Agents.length; v++) {
            if (userAgentInfo.indexOf(Agents[v]) > -1) {
                flag = 1;
                break;
            }
        }
        return flag;
    }

    function list() {
        [
            '.frs_daoliu_for_app', '.tl_shadow_for_app_modle', '.footer_logo', '.footer_link_highlight'
        ].forEach(value => {
            var x = document.querySelector(value);
            if (x) {
                x.parentNode.removeChild(x)
            }
        });
        var ads = document.querySelectorAll('li.tl_shadow_for_app');
        if (ads.length > 0) {
            var url = document.querySelector('.tl_shadow_for_app').parentNode.querySelector('a.j_common').href;
            ads.forEach(v => {
                //v.classList.remove('tl_shadow_for_app');
                var a = v.querySelector('a.j_enter_for_app');
                var tid = v.getAttribute('data-tid');
                a.href = url.replace(/\/(\d+)\?/.exec(url)[1], tid);
                a.classList.remove('tl_shadow_for_app');
            })
        }


    }

    function detail() {
        document.querySelectorAll('ul#pblist>li').forEach(value => {
            if (value.classList.contains('class_hide_flag')) {
                value.classList.remove('class_hide_flag');
            }

        });
        t();

        [
            '.img_desc', '.father-cut-recommend-normal-box', '.father-cut-daoliu-normal-box',
            '#diversBanner', '.footer_logo', '.j_footer_link', '.frs_daoliu_for_app'
        ].forEach(value => {
            var x = document.querySelector(value);
            if (x) {
                x.parentNode.removeChild(x)
            }
        });


        document.querySelector('.father-cut-pager-class-no-page').classList.remove('father-cut-pager-class-no-page');


        $("#list_pager>a").on("click", function () {
            setTimeout(t, 3000);
        });
        $('.j_pager_input').blur(() => {
            setTimeout(t, 3000);
        })
    }

    if (check()) {
        var url = location.href;

        if (/\/p\/\d+/.test(url) || /\/mo\/(.*)\/m\?kz=\d+/.test(url)) {
            detail();
        }
        if (/f\?kw=.+/.test(url) || /mo\/q\/m\?word=.+/.test(url) || /\/mo\/(.*)\/m\?kw=/.test(url)) {
            list();
        }
    }

})();