贴吧移除楼层广告和非本吧视频贴

贴吧移除楼层广告和非本吧视频贴。

As of 2016-08-26. See the latest version.

// ==UserScript==
// @name 贴吧移除楼层广告和非本吧视频贴
// @description 贴吧移除楼层广告和非本吧视频贴。
// @namespace AD@tieba.com
// @include http://tieba.baidu.com/p/*
// @include http://tieba.baidu.com/f?*
// @include http://tieba.baidu.com/f/*
// @version 1.0
// @grant none
// @run-at document-start
// ==/UserScript==

addEventListener('DOMContentLoaded', function(){
	document.head.appendChild(document.createElement('style')).textContent = "\
		@keyframes removeTiebaAd {from{opacity:.9;}to{opacity:1;}}\
		.j_thread_list [data-forumid], .l_post{animation:removeTiebaAd 1ms;}\
	";
	var rmad = function(element){
		var json = null;
		try{
			json = JSON.parse(element.dataset.field);
		}catch(ex){
			return;
		}

		json.author.user_id == json.content.post_id 
			&& (console.log('移除了一广告楼层。'), element.remove());
	};

	var forumId = PageData.forum.id;
	var rmvd = function(element){
		if(!forumId || element.dataset.forumid == forumId) return;
		var tli = null;
		while(element){
			if(element.classList.contains('j_thread_list')){
				tli = element;
				break;
			}else{
				element = element.parentNode;
			}
		}
		if(tli){
			let a = tli.querySelector('a.j_th_tit');
			a && console.log('移除非本吧视频贴:【' + a.textContent.trim() + '】\n链接为:' + a.href);
			tli.remove();
		}
	};

	document.addEventListener('animationstart', function(e){
		if(e.animationName !== 'removeTiebaAd') return;
		var t = e.target;
		t.localName == 'a' ? rmvd(t) : rmad(t);
	});
});