tiebaMyLike

我喜欢的贴吧一览

Tendrás que instalar una extensión para tu navegador como Tampermonkey, Greasemonkey o Violentmonkey si quieres utilizar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Violentmonkey para instalar este script.

Necesitarás instalar una extensión como Tampermonkey o Userscripts para instalar este script.

Necesitará instalar una extensión como Tampermonkey para instalar este script.

Necesitarás instalar una extensión para administrar scripts de usuario si quieres instalar este script.

(Ya tengo un administrador de scripts de usuario, déjame instalarlo)

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión como Stylus para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

Necesitará instalar una extensión del gestor de estilos de usuario para instalar este estilo.

(Ya tengo un administrador de estilos de usuario, déjame instalarlo)

// ==UserScript==
// @name           tiebaMyLike
// @description    我喜欢的贴吧一览
// @include        http://tieba.baidu.com/f?kw=*
// @include        http://tieba.baidu.com/f?ie=gbk&kw=*
// @include        http://tieba.baidu.com/f?ie=utf-8&kw=*
// @include        http://tieba.baidu.com/p/*
// @include        http://tieba.baidu.com/f?ct=*
// @include        http://tieba.baidu.com/f?kz=*
// @include        http://tieba.baidu.com/f?tp=0&kw=*
// @include        http://tieba.baidu.com/f/good?kw=*
// @icon           http://tb.himg.baidu.com/sys/portraitn/item/4e2ed7f8bbb3d4f2c2d2bb21
// @author         congxz6688
// @version        2013.4.3.0
// @namespace https://greatest.deepsurf.us/scripts/161
// ==/UserScript==


//此处供用户额外添加自己喜欢的吧,前10个有效
//一般说来,此处添加的吧应该是那种经验排名在20以后,无法出现在正常列表中的吧
//贴吧名称不要带后面的“吧”字,就象下面的例子一样,用小写的双引号括起来,再用小写的逗号相互隔开
var addByUser = ["贴吧例一", "贴吧例二"];

/**********************以下部分不要随意修改**********************/

var userSetNum = 20;
var signCSS = "";
signCSS += "#mylikeDiv{margin:-10px 0px -16px 0px!important;} .fonColor{color:#1D53BF} .useColor{color:#8B0000;}";
signCSS += "#mylikeDiv td{padding: 3px !important;} #likeTitle,#resetMylike{display:inline-block; cursor:pointer; width:50%; padding:9px 0px; border-bottom:2px solid #246DDA;}";
signCSS += ".likeTd{padding:0px 8px;} .userAdd{height:24px; padding:0px 12px 0px 8px;}#replaceUl{font-size:12px; margin:10px}";
signCSS += "#floatLikeDiv{border:1px solid grey; z-index:999; padding:8px 10px 10px 10px;background-color:white;}";
GM_addStyle(signCSS);
if (document.getElementById("frs_old_version")) {
	GM_addStyle("#mylikeDiv{display:none;}")
}
var yuy = new Date();
re = yuy.getTime() + 28800000;
yuy.setTime(re);
var fulltime = yuy.getUTCFullYear() + "/" + (yuy.getUTCMonth() + 1) + "/" + yuy.getUTCDate();
var userSignName = unsafeWindow.PageData.user.name;
var itieba_id = unsafeWindow.PageData.user.itieba_id;
if (userSignName != GM_getValue('currentUser', '')) {
	GM_setValue('currentUser', userSignName);
	getMylikeTiebas;
}
//函数 绝对定位
function getElementTop(element) {
	var actualTop = element.offsetTop;
	var current = element.offsetParent;
	while (current !== null) {
		actualTop += current.offsetTop;
		current = current.offsetParent;
	}
	return actualTop;
}
function getElementRight(element) {
	var actualRight =document.body.offsetWidth - element.offsetLeft - 180; //此处可微调悬浮列表框的左右位置
	return actualRight;
}
//创建列表显示区
var mylikeDiv = document.createElement("div");
mylikeDiv.setAttribute("class", "region_3");
mylikeDiv.id = "mylikeDiv";

var likeTitle = document.createElement("div");
likeTitle.setAttribute("class", "region_title");
likeTitle.id = "likeTitle";
likeTitle.innerHTML = "我喜欢的贴吧";
likeTitle.addEventListener("click", function () {
	window.open("http://tieba.baidu.com/i/" + itieba_id + "/forum");
}, false);
mylikeDiv.appendChild(likeTitle);

var resetMylike = document.createElement("div");
resetMylike.setAttribute("class", "region_title");
resetMylike.id = "resetMylike";
resetMylike.innerHTML = "重置";
resetMylike.addEventListener("click", getMylikeTiebas, false)
mylikeDiv.appendChild(resetMylike);

var likeListDiv = document.createElement("div");
likeListDiv.setAttribute("class", "region_cnt");
mylikeDiv.appendChild(likeListDiv);

var Tds1 = [];
var Tds2 = [];
//建表函数
function creaseTable(UrlLength, cons) {
	Tds1 = [];
	Tds2 = [];
	var tablepp = document.createElement("table");
	tablepp.setAttribute("class", "likeTable");
	tablepp.setAttribute("width", "100%");
	var trs = [];
	for (ly = 0; ly < Math.ceil(UrlLength / cons); ly++) {
		var tr = document.createElement("tr");
		mmd = trs.push(tr);
		tablepp.appendChild(tr);
	}
	for (ls = 0; ls < UrlLength; ls++) {
		var td = document.createElement("td")
			if (cons == 1) {
				td.setAttribute("class", "userAdd");
				wq = Tds2.push(td);
			} else {
				td.setAttribute("class", "likeTd");
				wq = Tds1.push(td);
			}
			trs[Math.floor(ls / cons)].appendChild(td);
	}
	return tablepp
}

//右上角“我爱逛的贴吧”相关替换函数
function openMylikeList(e) {
	if (!document.getElementById("floatLikeDiv")) {
		de = e.target;
		var thisTop = getElementTop(document.getElementsByClassName("nav_right")[0]) + 28;
		var thisRight = getElementRight(de);
		GM_addStyle("#floatLikeDiv{position:absolute; right:" + thisRight + "px; top:" + thisTop + "px}");
		var floatLikeDiv = document.createElement("div");
		floatLikeDiv.id = "floatLikeDiv";
		var fTable = document.createElement("table");
		floatLikeDiv.appendChild(fTable);
		var fTr = document.createElement("tr");
		fTable.appendChild(fTr);
		var fTd1 = document.createElement("td");
		var fTd2 = document.createElement("td");
		fTr.appendChild(fTd1);
		fTr.appendChild(fTd2);
		var likeTableFloat = document.getElementsByClassName("likeTable")[0].cloneNode(true);
		fTd2.appendChild(likeTableFloat);
		var allb = JSON.parse(GM_getValue('todayMylike', "{}"));
		var allbas = allb[userSignName] ? allb[userSignName] : [];
		var huuw = addByUser.deleteThe("贴吧例一").deleteThe("贴吧例二").deleteRepeatWith(allbas);
		if (huuw.length > 0) {
			var duur = huuw.length <= 10 ? huuw.length : 10;
			var floatLg = Math.max(duur, Math.ceil(allbas.length / 2));
			var userAddFt = creaseTable(floatLg, 1);
			for (vv = 0; vv < duur; vv++) {
				var anch = document.createElement("a");
				anch.href = "http://tieba.baidu.com/f?kw=" + huuw[vv];
				anch.title = huuw[vv];
				anch.target = "_blank";
				anch.innerHTML = '<fon class="useColor">' + huuw[vv].reComLength() + '</fon>';
				Tds2[vv].appendChild(anch);
			}
			fTd1.appendChild(userAddFt);
		}
		floatLikeDiv.addEventListener("mouseleave", closeMylikeList, false)
		document.querySelector(".nav_right").appendChild(floatLikeDiv);
	}
}
function closeMylikeList() {
	document.getElementById("floatLikeDiv").parentNode.removeChild(document.getElementById("floatLikeDiv"));
}
function addFloatMylike() {
	var replaceUl = document.createElement("li");
	replaceUl.id = "replaceUl";
	replaceUl.innerHTML = "<font color='white'>我爱逛的贴吧</font>";
	replaceUl.addEventListener("click", function () {
		window.open("http://tieba.baidu.com/i/" + itieba_id + "/forum");
	}, false);
	replaceUl.addEventListener("mouseover", openMylikeList, true);
	var tempNode = document.querySelector(".li_often_forum");
	document.querySelector(".nav_right").insertBefore(replaceUl, tempNode);
	tempNode.parentNode.removeChild(tempNode);
}
//右侧栏相关添加部分
function addAsideDiv() {
	if (document.getElementById("aside")) {
		var parentDiv = document.getElementById("aside");
	} else if (document.getElementById("j_aside")) {
		var parentDiv = document.getElementById("j_aside");
	} else if (document.querySelector(".right_section")) {
		var parentDiv = document.querySelector(".right_section");
	}
	parentDiv.insertBefore(mylikeDiv, document.getElementById("balv_mod").nextSibling);
	loadLiketieba();
}
//吧名长度计算
String.prototype.reComLength = function () {
	var yn = 0;
	var kuu = "";
	for (w in this) {
		if (w < this.length) {
			if (/[a-zA-Z0-9]/.exec(this[w])) {
				yn += 1;
			} else {
				yn += 2;
			}
			if (yn < 13) {
				kuu += this[w];
			}
		}
	}
	var uui = yn > 15 ? kuu + "..." : this;
	return uui;
}
//数组中删除特定元素
Array.prototype.deleteThe = function (v) {
	var ra = [];
	for (w = 0; w < this.length; w++) {
		if (this[w] != v) {
			foo = ra.push(this[w]);
		}
	}
	return ra;
}
//数组中删除与另一数组重复的元素
Array.prototype.deleteRepeatWith = function (v) {
	var ra = [];
	for (w = 0; w < this.length; w++) {
		if (v.indexOf(this[w]) == -1){
			foo = ra.push(this[w]);
		}
	}
	return ra;
}
//载入贴吧列表进表格
function loadLiketieba() {
	var allb = JSON.parse(GM_getValue('todayMylike', "{}"));
	if (allb[userSignName]) {
		allbaa = allb[userSignName];
		newTable = creaseTable(allbaa.length, 2);
		likeListDiv.appendChild(newTable);
		for (s = 0; s < allbaa.length; s++) {
			var anch = document.createElement("a");
			anch.href = "http://tieba.baidu.com/f?kw=" + allbaa[s];
			anch.title = allbaa[s];
			anch.target = "_blank";
			anch.innerHTML = '<fon class="fonColor">' + allbaa[s].reComLength() + '</fon>';
			Tds1[s].appendChild(anch);
		}
	}
}
//获取顺序列表
function getMylikeTiebas() {
	GM_setValue('todayMylike', '{}');
	likeListDiv.innerHTML = "";
	GM_xmlhttpRequest({
		method : 'GET',
		synchronous : true,
		url : "http://tieba.baidu.com/f/like/mylike",
		onload : function (reDetails) {
			var wholeObject = {};
			var tempArrey = [];
			var simTxt = reDetails.responseText;
			var auDoc = document.implementation.createDocument("", "", null);
			var auElem = document.createElement('div');
			auElem.innerHTML = simTxt;
			auDoc.appendChild(auElem);
			var bass = auDoc.querySelectorAll("tr>td:first-child>a");
			if (userSetNum > 20 || userSetNum < 10) {
				userSetNum = 10;
			}
			ListLength = (bass.length >= userSetNum) ? userSetNum : bass.length;
			for (x = 0; x < ListLength; x++) {
				var tempA = tempArrey.push(bass[x].innerHTML);
			}
			wholeObject.date = fulltime;
			wholeObject[userSignName] = tempArrey;
			GM_setValue('todayMylike', JSON.stringify(wholeObject));
			loadLiketieba();
		}
	})
}

var allba = JSON.parse(GM_getValue('todayMylike', "{}"));
if (!allba[userSignName] || allba.date != fulltime || allba[userSignName].length != userSetNum) {
	getMylikeTiebas();
}
addAsideDiv();
if (document.querySelector(".li_often_forum")) {
	addFloatMylike();
}