Airdates.tv show past weeks

Control how many past weeks you want to see

当前为 2017-05-06 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name        Airdates.tv show past weeks
// @namespace   V@no
// @description Control how many past weeks you want to see
// @include     http://www.airdates.tv/*
// @include     https://www.airdates.tv/*
// @version     1.5.3
// @noframes
// @grant       none
// ==/UserScript==

//tab = 2 spaces

// hide all past days
var	d = new Date(),
		today = $("div.day[data-date='" + d.getFullYear() + ("00" + (d.getMonth() + 1)).slice (-2) + ("00" + d.getDate()).slice (-2) + "']"),
		stop = false;

$("div.days").children().each(function(i, o)
{
	if ($(this).is(today))
	{
		$(this).attr("today", "true");
		stop = true;
	}
	if (!stop)
	{
		$(this).addClass("past");
	}
});
let week = ["mon", "tue", "wed", "thu", "fri", "sat", "sun"],
		daysNum = week.indexOf($(today).find(".date").text().toLowerCase().match(/([^,]{3})/)[1]);

//there is no identication of which week a day belong to, so we must make sure that previous days of current week don't count as previous week.
if (daysNum > 0)
{
	for(var i = 0, prev = today.prev(); i < daysNum  && prev; i++)
	{
		prev.removeClass("past");
		prev = prev.prev();
	}
}

var	daysPast = $('div.past'),
		weeks = parseInt(readCookieRaw("w")),
		weeksMax = Math.round((daysPast.length) / 7);//how many past weeks do we have available?

if (isNaN(weeks))
	weeks = readCookieRaw("p") == "1" ? weeksMax : 0;


if (weeks > weeksMax)
	weeks = weeksMax;

//main function that shows/hides past days
function showWeeks()
{
	//get week numbers from dropdown
	var weeks = parseInt($("#pastWeeks").val());

	//just some sanity check
	if (weeks * 7 > daysPast.length)
		weeks = weeksMax;

	if (weeks < 1)
		weeks = 0;

	for(var i = weeksMax; i > 0; i--)
		$( "div.calendar" ).toggleClass("showPast" + i, (weeks >= i)); 

	createCookie("w", weeks);
}

//add new class pastNN to each past day, where NN is a week number.
daysPast.each(function(i)
{
	$(this).addClass("past" +  (Math.ceil((daysPast.length - i) / 7 % (weeksMax + 1))));
});

//create dropdown menu with number of available past weeks
var dropdown = document.createElement("select");
dropdown.id = "pastWeeks";

for(var i = 0; i <= weeksMax; i++)
{
	var option = document.createElement("option");
	option.value = i;
	option.text = i;
	option.selected = (weeks == i);
	dropdown.appendChild(option);
}

//add event listener to dropdown
$(dropdown).change(showWeeks);

//insert our dropdown and new text into document
$(".calendar").prepend(dropdown);
$(".calendar").prepend(document.createTextNode("Show past weeks: "));

//hide "Show/Hide past month" links
$("#past-showing").toggle(true);
togglePast();//make sure we disable "Show past month"
$("#past-showing").toggle(false);
$("#past-hidden").toggle(false);

showWeeks();


//create stylesheet. A little trick to have multiline text
var	style = document.createElement("style"),
		css = function(){/*
div.showPast1 div.past1,
div.showPast2 div.past2,
div.showPast3 div.past3,
div.showPast4 div.past4,
div.showPast5 div.past5,
div.showPast6 div.past6,
div.showPast7 div.past7,
div.showPast8 div.past8,
div.showPast9 div.past9
{
	display: block;
}

/* color picker icon that works on dark background *//*
.picker
{
	background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAABc0lEQVQoz23PPYsUQRDG8aeqenZemGFwDvRb+F0EMxEDRTNT4xMMTC45DEzE0ODA0NTPYGqs0W7vbE+vq7tdXSa9yXEN/+z3QDWZ2QigBtCeM7NOVUdVvZdSut/3/RUAeO/fkZldFNiV2pzzeDqdHjRN8xm3HgOoSisAKzNrc87DXfg8cGXgzGyVc25Vtb8Lr9frGwYgAMTMqpxzo6p90zSfYoyXtwdE9IsLdqpap5T6uq6/7Pf710T0Z1mWt2fsvb8SkZ8u5+xUtVHVvm3brzHGV+XMwzAM70MIbwAcAczM/NupapVS6rqu+xZCeG5mAuDU9/2HGONLAAdm3jHzVkRml1Jquq77Ps/zi5zziojyOI4fQwjPCp6dc1sRWZj54FS1AgBVrYmIp2m63u12TwBEIgoFR2b+C+BIAMx7/3iappvyuafM7J1z26qqZufcnpn/ATgBSG5ZlofDMPzYbDaPAGQiiiKyFZEgIgdmPgJIJf0PRxTB4Z5WMoAAAAAASUVORK5CYII=');
}

/* today column border *//*
div.today
{
  border-color: orange;
}

/* higlighted title under cursor *//*
div.title:hover
{
  background-color: #ffffd5;
}
*/};
style.innerHTML = css.toString().slice(14, -3).replace(/\*\/\/\*/g, "*/");
$("head").append(style);

(function(s)
{
	if (s.val())
		s.addClass('x');
	else
		s.removeClass('x');
})($("#searchBecauseNoOneChecks"));

//fixed inability remove a show when "Important stuff only" is active
// assigns a color. use permanent=true to save to db/cookies
unsafeWindow.assignColor = function( seriesId, color, permanent ){
	//$( "div.entry[data-" + attr + "='" + value + "']" )entries( "series-id", seriesId ).css( "background-color", color?color:"" );
	
	$("#css_"+seriesId).remove();
	var curShow = $(".activeOnly").find(".entry[data-series-id='" + seriesId + "']").removeAttr("style");
	var origColor = color;
	color = color||"#FFF";
	var col = new Colors().setColor(color);
	var hover = typeof(permanent) == "undefined";
	if (hover)
	{
		$(".entry[data-series-id='" + seriesId + "']").find(".details[style='display: block;']").parent().attr("id", "temp" + seriesId);
	}
	if( col.HEX != "FFFFFF" || hover){
		var textCol = col.rgbaMixBlack.luminance>0.22?"black":"white";
		var style = 
			"<style id='css_I'>\
				.entry[data-series-id='I'], li[data-series-id='I'] .color{background-color:C; color:T}\
				.activeOnly .entry[data-series-id='I']{ display: block !important; }\
			</style>"
			.replace( /I/g, seriesId )
			.replace( /C/g, color )
			.replace( /T/g, textCol )
			;
		$(style).appendTo("body");
		if (col.HEX == "FFFFFF" && hover)
		{
			curShow.each(function(i, o)
			{
				if (!$(this).find(".details").each(function(i, d)
						{
							if (d.style.display == "none")
								d.style.visibility = "hidden";
						}).length)
				{
					o.style.visibility = "hidden";
				}
			});
		}
		
	}
	if( permanent ){
		DB.setColor( seriesId, origColor ); 
	}
}