🏠 

Greasy Fork is available in English.

Followed Douban User Status Blocker

Blocking Followed Douban User's Status (including reposts)


安装此脚本?
// ==UserScript==
// @name         Followed Douban User Status Blocker
// @namespace    Zcc911
// @version      0.5
// @description  Blocking Followed Douban User's Status (including reposts)
// @author       Zcc911
// @match        *://www.douban.com/*
// @match        *://www.douban.com/people/*
// @copyright    Zcc911
// ==/UserScript==
var blocked_UID,
blocked_USR;
// get blocking list
function getBlocked(){
blocked_UID = JSON.parse(localStorage.getItem('douban_blocked_UID')) || [];
blocked_USR = JSON.parse(localStorage.getItem('douban_blocked_USR')) || [];
}
getBlocked();
if(window.location.pathname === "/"){   // masking user posts/reposts on douban homepage via blocking list
console.log("当前屏蔽的用户ID:", blocked_UID);
console.log("当前屏蔽的用户昵称:", blocked_USR);
var ids_blocked = new RegExp(blocked_UID.join('|'));
usr_blocked = new RegExp(blocked_USR.join('|'));
$(".status-wrapper").each(function(index){  // "this" directly points to DOM object in each method
if (!blocked_UID.length || !blocked_USR.length) { return false; }
var resharer = this.querySelector(".reshared_by > a"),
usrname = resharer.title ? resharer.title : "";
if (this.dataset.uid.match(ids_blocked) || usrname.match(usr_blocked)) {   // block the posts/reposts
this.style.display = "none";
}
});
}else{  // modify blocking list on user homepage
var blockStatus = $('.user-opt .user-group'),
listEle = $('.more-opt .user-group-list');
if (!listEle.length) { return false; }
var usrid = people_info.id,     // is this method stable?
usrname = people_info.name;
if (blocked_UID.filter(function (num, nickname) {
nickname = usrname;
return num == usrid;
}).length) {    // user already blocked
blockStatus.append('<span class="user-rs" class="red">已屏蔽</span>');
listEle.prepend('<li><a href="javascript:;" class="cancel-block">取消屏蔽</a></li>');
} else {
blockStatus.append('<span class="user-rs">未屏蔽</span>');
listEle.prepend($('<li><a href="javascript:;" class="block-status">屏蔽广播</a></li>'));
}
listEle.delegate('.cancel-block', 'click', function () {    // event delegation, listening on block canceling event
getBlocked();
blocked_UID = blocked_UID.filter(function (num) {
return usrid != num;
});
blocked_USR = blocked_USR.filter(function (nickname) {
return usrname != nickname;
});
localStorage.setItem('douban_blocked_UID', JSON.stringify(blocked_UID));
localStorage.setItem('douban_blocked_USR', JSON.stringify(blocked_USR));
$(this).removeClass('cancel-block').addClass('block-status').text('屏蔽广播');
blockStatus.children().last().removeAttr("style").html("未屏蔽");
console.log("当前屏蔽用户列表:", blocked_USR);
})
.delegate('.block-status', 'click', function () {           // event delegation, listening on block event
getBlocked();
blocked_UID.push(parseInt(usrid, 10));
blocked_USR.push(usrname);
localStorage.setItem('douban_blocked_UID', JSON.stringify(blocked_UID));
localStorage.setItem('douban_blocked_USR', JSON.stringify(blocked_USR));
$(this).removeClass('block-status').addClass('cancel-block').text('取消屏蔽');
blockStatus.children().last().css("color", "red").html("已屏蔽");
console.log("当前屏蔽用户列表:", blocked_USR);
});
}