// ==UserScript==
// @name TVmaze Downloader 2019
// @description Adds download links to TVmaze website
// @include https://www.tvmaze.com/*
// @version 1.01
// @Author bnor
// @license http://creativecommons.org/licenses/by-nc-sa/3.0/us/
// @grant none
// @namespace https://greasyfork.org/users/173683
// @downloadURL https://update.greasyfork.icu/scripts/375329/TVmaze%20Downloader%202019.user.js
// @updateURL https://update.greasyfork.icu/scripts/375329/TVmaze%20Downloader%202019.meta.js
// ==/UserScript==
(function() {
function Tracker(shortname, icon, logic) {
this.shortname = shortname;
this.icon = icon;
this.logic = logic;
this.getHTML = function (query, episodeName,episodeNumber) {
var tShortname = this.shortname;
var tIcon = this.icon;
var html = "";
if (tIcon !== "") {
html += "
";
} else {
html += tShortname;
}
html += "";
return html;
};
}
function addDownloadWatchList(downloadURL) {
// iterate through all series tables
$("article.episode-row").each(function() {
// Create Download column
var linksDiv = $(this).find("div.tributton-watch").last();
// get current episode number
var lastEpisodeNumber=$(this).parent().parent().find("div.watched-eps").first().text().trim().split("/")[0];
var episodeNumber=Number(lastEpisodeNumber)+$(this).index();
// Get series title
var showTitle = $(this).parent().parent().prev().children("a").text();
showTitle = showTitle.replace(".","").replace("'","").replace("!","");
// Get episode name
var episodeName = $(this).find("div.small-6.medium-7.cell.center").first().text();
episodeName = episodeName.split(":")[0].trim();
var htmlString="";
// Add download link to each episode
for(var i=0;i" + htmlString + "");
});
}
// --------------- downloadURL ---------------
// FORMAT: Tracker(shortName, iconURL, searchURL, useNumbers)
// shortName - Alt display name for link
// iconURL - icon displayed for link created
// searchURL - URL that search string is appended to
// useNumbers - if true adds the episode number to the search URL
var trackEztv = new Tracker("EZTV", "http://eztv.io/favicon.ico", (name,episodeName,episodeNumber)=>{
//1x02 > S01E02
var season=Number(episodeName.split("x")[0]);
var number=Number(episodeName.split("x")[1]);
if(season<10){
season="0"+season;
}
if(number<10){
number="0"+number;
}
episodeName= "S"+season+"E"+number;
return "https://eztv.io/search/"+name+" "+episodeName;
});
var trackHs = new Tracker("HS", "", (name,episodeName,episodeNumber)=>{
var map=[];
map["That Time I Got Reincarnated as a Slime"]="tensei-shitara-slime-datta-ken";
map["Ms vampire who lives in my neighborhood."]="tonari-no-kyuuketsuki-san";
map["So Many Colors in the Future What a Wonderful World"]="Irozuku Sekai no Ashita kara";
if(map[name] !== undefined){
name=map[name];
}
if(episodeNumber<10){
episodeNumber="0"+episodeNumber;
}
return "https://horriblesubs.info/shows/"+name+"/#"+episodeNumber;
});
//downloadURL = new Tracker("Kickass", "https://kastatic.com/images/favicon.ico", "https://kickass.to/usearch/?field=time_add&sorder=desc&q=ettv -720p -1080p ", false);
// --------------- END OF downloadURL ---------------
if($("title").text().indexOf("Watch List")===0){
addDownloadWatchList([trackEztv,trackHs]);
}
})();