tv-links.eu/tvmuse.eu Link Finder

script to compile a nice list of links from the comments on episode pages

// ==UserScript==
// @name			tv-links.eu/tvmuse.eu Link Finder
// @namespace		http://tvmuse.eu/
// @version			0.1.2
// @description		script to compile a nice list of links from the comments on episode pages
// @include			*.tvmuse.*/*
// @require			http://code.jquery.com/jquery.min.js
// @copyright		2014+, Techplex Engineer
// ==/UserScript==

$(document).ready(function() {
	
	
	//remove the crap links
	$("ul.tabs.outer").remove();
	$(".tabs.outer.cfix.mb_05").remove();
	$("ul#table_search").remove();
	$("div.bg_imp mb_2").remove();
	$("li.cfix>button.btn_all_results").remove();


	//find all the links in the comments
	var links = [];
	$("ul.table_comments>li").each(function(){
		var txt = $("div.data>div.content>p.big",this).html();
		if (typeof txt != 'undefined' && txt.toLowerCase().indexOf("removed") == -1 && (txt.toLowerCase().indexOf("http://") >= 0 || txt.toLowerCase().indexOf("<i>") >= 0))
		{
			//this will open the comments marked "This comment is hidden because it's likely to be inappropriate or spam"
			if (txt.toLowerCase().indexOf("<i>") >= 0)
			{
				return; //continue
			}
			var stripped = txt.replace(/<(?:.|\n)*?>/gm, ' '); //strip html
			var single = stripped.replace(/\s+/g, ' '); //collapse whitespace
			var arr = single.split(' ');
			links = links.concat(arr);
			
		}
	});    
	//Priority setting
	var priority = 
	{
		"allmyvideos.net":1
		,"putlocker.com":2
		,"sockshare.com":2
		,"played.to":3
		,"donevideo.com":4
        ,"filenuke.com":5
		
	};
    //remove any empty links
    links = $.grep(links, function(el, idx){
		return el != ""; 
    });
    
	//remove any duplicate links
	links = $.unique(links);
	
	//sort the links by the priority above
	links.sort(function(a,b){
		var hostnameA = priority[$('<a>').prop('href', a).prop('hostname').replace(/^www\./,'')]||999;
		var hostnameB = priority[$('<a>').prop('href', b).prop('hostname').replace(/^www\./,'')]||999;
		//console.log(hostnameA,hostnameB);
		//a comes first -1
		//b comes first 1
		//same 0
		return hostnameA-hostnameB;
	});
	
	//add the links to the page
	$("div.cfix.mb_2").after(function(){
		
		var out = "<h1>Links</h1>";
		out += "<ol>";
		for (var i=0;i<links.length;i++)
		{	
			out += "<li>";
			out += "<a href=\""+links[i]+"\" target=\"_blank\">"+links[i]+"</a>";
			out += "</li>";
		}
		out += "</ol>";
        
        var parts = window.location.pathname.match(/\/tv-shows\/([^_]+)[^\/]+\/season_(\d+)\/episode_(\d+)/);
        var name = parts[1].toLowerCase().replace('-','_');
        var season = parts[2];
        var episode = parts[3];
        
        var url = "http://www.free-tv-video-online.me/internet/"+name+"/season_"+season+".html#e"+episode;
        out += "See the related page on the <a href=\""+url+"\" target=\"_blank\">Project Free TV Site</a>";
        out += "<br>";
		return out;
	});

	
});

//once the page has loaded:
$(window).load(function(){
	//this seems to only work here
	$("div.bg_imp.mb_2").remove();

});