Greasy Fork is available in English.

bilibili bangumi

在收藏夹左边增加当天已更新的新番提示,可显示隐藏新番

// ==UserScript==
// @name        bilibili bangumi
// @namespace   http://www.icycat.com
// @description 在收藏夹左边增加当天已更新的新番提示,可显示隐藏新番
// @include     http://www.bilibili.tv*
// @include     http://www.bilibili.com*
// @include     http://bilibili.kankanews.com*
// @version     1.2.1
// @grant       GM_xmlhttpRequest
// @run-at      document-start
// ==/UserScript==

var bili = {
	weekday: null,
	myBangumi: [],
	sp: [],
	isRun: false,
	btnDelay: null,
	listDelay: null
}

document.addEventListener('DOMContentLoaded', init, false);

function init() {
	console.log('顶部按钮初始化');
	createRemindBtn();
}

function createRemindBtn() {
	var parent = document.querySelector('.uns_box ul');
	var remindBtn = document.createElement('li');
	remindBtn.id = 'remindBtn';
	var a = document.createElement('a');
	a.href = "javascript: void(0);";
	a.onmouseover = function() {
		if (bili.isRun) {
			if (bili.btnDelay) {
				clearTimeout(bili.btnDelay);
			}
			document.getElementById('bangumiRmind').style.display = 'block';
		} else {
			getUpdateData();
		}
	};
	a.onmouseout = function() {
		bili.btnDelay = setTimeout(function() {
			document.getElementById('bangumiRmind').style.display = 'none';
		}, 500);
	}
	a.innerHTML = '新番';
	remindBtn.appendChild(a);
	parent.insertBefore(remindBtn, parent.firstChild);
}

function getUpdateData() {
	bili.isRun = true;
	var d = new Date();
	bili.weekday = d.getDay();
	GM_xmlhttpRequest({
		method: 'get',
		url: 'http://api.bilibili.com/bangumi?appkey=0a99fa1d87fdd38c&btype=2&weekday=' + bili.weekday,
		headers: {
			'User-Agent': 'bilibili bangumi remind/1.2 (cat@icycat.com)',
			'Cookie': document.cookies,
		},
		onload: function(r) {
			if (r.status == 200) {
				var data = JSON.parse(r.responseText);
				console.log('获取新番更新数据成功');
				parseData(data);
			}
		}
	});
}

function parseData(data) {
	console.log('今日所有新番数量:'+Object.keys(data.list).length);
	var count = Object.keys(data.list).length;
	for (var i = 0; i < count; i++) {
		if (data.list[i].new) {
			/*for (var j=0;j<bili.myBangumi.length;j++) {
				if (data.list[i].title==bili.myBangumi[j]) {
					bili.sp.push(bili.myBangumi[j]);
				}
			}*/
			bili.sp.push(data.list[i].title);
		}
	}
	console.log('已更新数量:'+bili.sp.length);
	addTip();
}

function addStyle(css) {
	var style = document.createElement('style');
	style.type = 'text/css';
	var node = document.createTextNode(css);
	style.appendChild(node);
	document.head.appendChild(style);
}

function getTip() {
	var tipList = '<div class="remindList">';
	for (var i = 0; i < bili.sp.length; i++) {
		tipList += '<div class="bangumiList"><a target="_blank" href="http://www.bilibili.com/sp/' + bili.sp[i] + '">' + bili.sp[i] + '</a></div>';
	}
	tipList += '</div>';
	return tipList;
}

function addTip() {
	var remindBtn = document.getElementById('remindBtn');
	var css = '#bangumiRmind{background: none repeat scroll 0 0 #F9F9F9;border-radius: 5px;padding: 10px;position: absolute;right: -61px;top: 30px;width: 180px;border: 1px solid #CCC;}';
	css += '#bangumiRmind a{width:100%;} .bangumiList a{width:100%;color: #505050;} .bangumiList a:hover{color:#F25D8E}'
	css += '#bangumiRmind .remindArrow{height: 8px;width: 16px;top: -7px;left: 50%;margin-left: -8px;background: url(http://static.hdslb.com/images/v2images/topicons.png) no-repeat 0 -404px;position: absolute;}';	
	var bangumiRmind = document.createElement('div');
	bangumiRmind.id = 'bangumiRmind';
	bangumiRmind.innerHTML = getTip();
	var remindArrow = document.createElement('div');
	remindArrow.className = 'remindArrow';
	bangumiRmind.appendChild(remindArrow);	
	bangumiRmind.onmouseover = function() {
		if (bili.btnDelay) {
			clearTimeout(bili.btnDelay);
		}
		document.getElementById('bangumiRmind').style.display = 'block';
	};
	bangumiRmind.onmouseout = function() {
		bili.btnDelay = setTimeout(function(){
			document.getElementById('bangumiRmind').style.display = 'none';
		},500);
	};
	remindBtn.appendChild(bangumiRmind);
	addStyle(css);
}