s1black

S1 blacklist ext.

// ==UserScript==
// @name         s1black
// @namespace    http://www.xu81.com/
// @version      0.1
// @description  S1 blacklist ext.
// @author       viperasi
// @match        https://bbs.saraba1st.com/2b/*
// @match        https://bbs.stage1.cc/*
// @require      http://cdn.staticfile.org/jquery/2.1.1/jquery.min.js
// @require      https://cdn.staticfile.org/remoteStorage/0.14.0/remotestorage.min.js
// @grant        GM_listValues
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand

// ==/UserScript==
'use strict';

var BLACKLIST = 's1blacklist';
var BLACKPRE = 's1black';
var BLACKINPUT = 's1blackname';
(function () {
    var href = window.location.href;
    if(href.indexOf('forum.php?mod=post') != -1){
        return;
    }else{
        viewlist();
        blackthread();
        blackcomment();
    }
})();

// 黑名单展示
function viewlist() {
    var navbar_ul = $("#toptb>.wp>.z");
    var view_li;
    if(navbar_ul.length>0){
        view_li = $('<a href="javascript:void(0);">S1黑名单</a>');
    }else{
        navbar_ul = $('#nv>ul');
        view_li = $('<li>').attr('id', 's1black_bl_view').append('<a href="javascript:void(0);">S1黑名单</a>');
    }
    
    var view_panel = $('<div>').css({
        'border': 'solid 2px',
        'border-radius': '4px',
        'padding': '5px',
        'width': '500px',
        'height': '500px',
        'background': '#f6f7eb',
        'position': 'fixed',
        'z-index': '999',
        'overflow': 'hidden',
        'left': '200px',
        'top': '200px'
    });
    var view_panel_tab = $('<ul>').addClass('tb').addClass('cl');
    var view_panel_li_user = $('<li>').attr('id', BLACKPRE + '_panel_li_user').addClass('a').css('cursor', 'pointer').append('<a>用户黑名单</a>').click(function(){
        $(this).addClass('a');
        $('#' + BLACKPRE + '_panel_li_thread').removeClass('a');
        $('#' + BLACKPRE + '_panel_thread').hide();
        $('#' + BLACKPRE + '_panel_user').show();
    });
    var view_panel_li_thread = $('<li>').attr('id', BLACKPRE + '_panel_li_thread').append('<a>帖子黑名单</a>').css('cursor', 'pointer').click(function(){
        $(this).addClass('a');
        $('#' + BLACKPRE + '_panel_li_user').removeClass('a');
        $('#' + BLACKPRE + '_panel_user').hide();
        $('#' + BLACKPRE + '_panel_thread').show();
    });
    view_panel_tab.append(view_panel_li_user).append(view_panel_li_thread).appendTo(view_panel);
    var panel_user = initUser();
    var panel_thread = initThread();
    var view_panel_close = $('<span>').css({
        'float': 'right',
        'margin-top': '-30px'
    }).addClass('flbc').append('关闭').click(function () {
        view_panel.hide();
    }).appendTo(view_panel);
    panel_user.appendTo(view_panel);
    panel_thread.appendTo(view_panel).hide();
    view_panel.appendTo('body#nv_forum').hide();
    view_li.on('click', function () {
        view_panel.show();
    });
    navbar_ul.append(view_li);

    var authi = $('.authi>a.xw1');
    $.each(authi, function(i, item){
        var btn = $('<button>').append('+').click(function(){
            add($(item).text(), 'user');
            location.reload();
        });
        $(item).parent().append(btn);
    });

    var threadTitle = $("h1.ts");
    var href = $(threadTitle.next('span.xg1')).find('a').attr('href');
    var threadBlock = $("<a>").css({
                'color': 'red',
                'cursor': 'pointer'
            }).append('[屏蔽主题]').click(function(){
                var threadId = href.substring(7, href.length - 9);
                add(threadId, 'thread');
            });
    threadTitle.after(threadBlock);

    var tlist = $('tbody[id^="normalthread"]');
    $.each(tlist, function (index, thread) {
        var tt = $(thread).find('a.s.xst');
        $.each(tt, function(index, title){
            var href = tt.attr('href');
            var threadId = href.substring(7, href.length - 9);
            var tb = $("<a>").css({
                'float': 'right',
                'cursor': 'pointer'
            }).append('[屏蔽主题]').click(function(){
                add(threadId, 'thread');
                location.reload();
            });
            tt.after(tb);
        });
    });
}

// 初始化用户面板
function initUser(){
    var list = get('user');
    var panel_user = $('<div>').attr('id', BLACKPRE + '_panel_user');   
    var view_panel_bar = $('<h3>').css('margin', '5px').append('黑名单用户:');
    var view_panel_add = $('<input>').css('width', '140px').attr({
        'id': BLACKINPUT,
        'placeholder': '用户ID'
    }).appendTo(view_panel_bar);
    var view_panel_add_btn = $('<button>').append('添加').click(function () {
        var theValue = $('#' + BLACKINPUT).val().trim();
        if (theValue != '') {
            add(theValue, 'user');
            $('#' + BLACKINPUT).val('');
            var btn = $('<a>').click(function () {
                if(window.confirm('确定要删除该ID吗?')){
                    del(theValue, 'user');
                }
            }).append(theValue);
            var item = $('<li>').attr('id', BLACKPRE + theValue).append(btn);
            view_panel_ul.append(item);
        }
    }).appendTo(view_panel_bar);
    panel_user.append(view_panel_bar);
    var view_panel_help = $('<div>').addClass('pbt').addClass('cl').append(
        $('<span>').addClass('z').append('添加、删除后请刷新页面.点击名字删除.')
    ).appendTo(panel_user);
    var view_panel_list = $('<div>').css('overflow', 'auto');
    var view_panel_ul = $('<ul>').addClass('ttp bm cl');
    $.each(list, function (i, name) {
        var btn = $('<a>').click(function () {
            if(window.confirm('确定要删除该ID吗?')){
                del(name, 'user');
            }
        }).append(name);
        var item = $('<li>').attr('id', BLACKPRE + name).append(btn);
        view_panel_ul.append(item);
    });
    panel_user.append(view_panel_ul);
    return panel_user;
}


//初始化帖子面板
function initThread(){
    var list = get('thread');
    var panel_thread = $('<div>').attr('id', BLACKPRE + '_panel_thread');
    var view_panel_bar = $('<h3>').css('margin', '5px').append('黑名单帖子:');
    var view_panel_add = $('<input>').css('width', '140px').attr({
        'id': BLACKINPUT + '_thread',
        'placeholder': '帖子ID'
    }).appendTo(view_panel_bar);
    var view_panel_add_btn = $('<button>').append('添加').click(function () {
        var theValue = $('#' + BLACKINPUT + '_thread').val().trim();
        if (theValue != '') {
            add(theValue, 'thread');
            $('#' + BLACKINPUT + '_thread').val('');
            var btn = $('<a>').click(function () {
                if(window.confirm('确定要删除该帖子吗?')){
                    del(theValue, 'thread');
                }
            }).append(theValue);
            var item = $('<li>').attr('id', BLACKPRE + '_thread_' + theValue).append(btn);
            view_panel_ul.append(item);
        }
    }).appendTo(view_panel_bar);
    panel_thread.append(view_panel_bar);
    var view_panel_help = $('<div>').addClass('pbt').addClass('cl').append(
        $('<span>').addClass('z').append('添加、删除后请刷新页面.点击ID删除.')
    ).appendTo(panel_thread);
    var view_panel_list = $('<div>').css('overflow', 'auto');
    var view_panel_ul = $('<ul>').addClass('ttp bm cl');
    $.each(list, function (i, name) {
        var btn = $('<a>').click(function () {
            if(window.confirm('确定要删除该帖子吗?')){
                del(name, 'thread');
            }
        }).append(name);
        var item = $('<li>').attr('id', BLACKPRE + '_thread_' + name).append(btn);
        view_panel_ul.append(item);
    });
    panel_thread.append(view_panel_ul);
    return panel_thread;
}

// 添加黑名单
function add(theValue, type) {
    var list = get(type);
    for (var i = 0; i < list.length; i++) {
        var name = list[i];
        if (name == theValue) {
            return;
        }
    }
    list.push(theValue);
    save(list, type);
}

// 删除黑名单
function del(theValue, type) {
    var list = get(type);
    var newlist = [];
    $.each(list, function (index, name) {
        if (theValue != name) {
            newlist.push(name);
        }
    });
    save(newlist, type);
    if(type == 'user')
        $('#' + BLACKPRE + theValue).remove();
    else
        $('#' + BLACKPRE + '_' + type + '_' + theValue).remove();
}

// 保存黑名单
function save(list, type) {
    if(type == 'user')
        GM_setValue(BLACKLIST, list);
    else
        GM_setValue(BLACKLIST + '_' + type, list);
}

// 获取黑名单列表
function get(type) {
    if(type == 'user')
        return GM_getValue(BLACKLIST, []);
    else
        return GM_getValue(BLACKLIST + '_' + type, []);
}

// 屏蔽帖子
function blackthread() {
    var list = get('user');
    var list_thread = get('thread');
    var tlist = $('tbody[id^="normalthread"]');
    $.each(tlist, function (index, thread) {
        var tname = $($(thread).find('cite>a')[0]).text();
        var tid = $(thread).attr('id');
        $.each(list, function (i, name) {
            if (tname === name) {
                $(thread).hide();
            }
        });
        $.each(list_thread, function(i, name){
            if(tid == 'normalthread_' + name){
                $(thread).hide();
            }
        });
    });
}

// 屏蔽回帖
function blackcomment() {
    var list = get('user');
    var tlist = $('a.xw1');
    $.each(tlist, function (index, thread) {
        var tname = $(thread).text();
        $.each(list, function (i, name) {
            if (tname === name) {
                var div_parent = $(thread).parents('div[id^="post_"]');
                div_parent.children().hide();
                var span = $('<span>').css({
                    'display': 'block',
                    'height': '20px',
                    'text-align': 'center',
                    'border': 'solid 1px'
                }).append('黑名单已隐藏, 这是你不想看到的人的言论, 你就点下去吧.').click(function () {
                    span.hide();
                    div_parent.children('table').show();
                });
                div_parent.append(span);
            }
        });
    });
}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址