NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name TVmaze - Link Externals
// @namespace TVmaze
// @version 1.12
// @description Add a link to externals (format given for thetvdb & imdb)
// @author gazza911
// @match https://www.tvmaze.com/showexternal/view*
// @updateURL https://openuserjs.org/meta/gazza911/TVmaze_-_Link_Externals.meta.js
// @grant GM_getValue
// @grant GM_setValue
// @license MIT
// ==/UserScript==
$(`<style>
.permalinkEdit {
margin-left: 5px;
}
.permalinkEdit:hover {
color: #3C948B;
cursor: pointer;
}
</style>`).appendTo("head");
const thisVersion = "1.12";
var permalinks = GM_getValue("tvmaze_externalFormats", {}),
defaults = {
Thetvdb: "https://thetvdb.com/?tab=series&id={Thetvdb-id}",
Imdb: "http://www.imdb.com/title/{Imdb-id}/"
},
version = GM_getValue("tvmaze_externals_version", "");
if(Object.keys(permalinks).length === 0) {
permalinks = Object.assign({}, defaults);
}
if(version.length > 0 && version !== thisVersion) {
reset("TVmaze - Link Externals has been updated, would you like to reset the formats?");
}
GM_setValue("tvmaze_externals_version", thisVersion);
$(`<div class="row hide-for-print">
<div class="small-12-columns columns">
<button class="alert small button round permalinkReset">
<i class="fa fa-trash fa-lg" alt="Reset Permalinks"></i>
<span class="show-for-medium">Reset Permalinks</span>
</button>
</div>
</div>`).insertAfter('#site-header ~ div:first');
$("table.detail-view tr th").each(function(row) {
$(this).append('<i class="fas fa-edit permalinkEdit hide-for-print" alt="Edit" data-name="' + $(this).text().replace(" ", "_") + '"></i>');
});
setLinks();
$(".permalinkEdit").click(edit);
$(".permalinkReset").click(reset);
function setLinks() {
$("table.detail-view tr").each(function(row) {
var $type = $(this).children("th"),
name = $type.text().replace(" ", "_"),
permalink = permalinks[name];
if (permalink) {
var $element = $(this).children("td"),
text = $element.text();
if(text !== "(not set)") {
$element.html("<a href='" + permalink.replace("{" + name + "-id}", text) + "' target='_blank'>" + text + "</a>");
}
}
});
}
function edit() {
var type = $(this).data("name");
var permalink = permalinks[type];
var pattern = prompt("Please enter the format, use {" + type + "-id} as a placeholder for the ID", permalink);
if (pattern !== null) {
permalinks[type] = pattern;
GM_setValue("tvmaze_externalFormats", permalinks);
setLinks();
}
}
function reset(message) {
var perform = confirm(message.length > 0 ? message : "Are you sure that you want to reset the permalink formats? You will loose any custom formats");
if (perform) {
permalinks = Object.assign({}, defaults);
GM_setValue("tvmaze_externalFormats", permalinks);
setLinks();
}
}