NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name BravoTV/Oxygen - Open Largest Images
// @namespace TVMaze
// @version 1.08
// @updateURL https://openuserjs.org/meta/gazza911/BravoTVOxygen_-_Open_Largest_Images.meta.js
// @downloadURL https://openuserjs.org/install/gazza911/BravoTVOxygen_-_Open_Largest_Images.user.js
// @description Get the largest BravoTV/Oxygen images of each type
// @author gazza911
// @match https://www.oxygen.com/*
// @match https://www.bravotv.com/*
// @icon https://www.google.com/s2/favicons?domain=bravotv.com
// @grant GM_openInTab
// @grant GM_registerMenuCommand
// @require https://code.jquery.com/jquery-3.7.1.min.js
// @license MIT
// ==/UserScript==
(function() {
$("body").on("mousedown", '.player__inner-wrapper,.video-card__thumbnail,picture,figure', async function(e) {
var $container = $(this).attr("class") === "player__inner-wrapper" ? $(this).find("picture") : $(this);
if (e.which === 3) {
var img = await getLargestImageByElements($container.children("source,img"));
if (img) {
GM.openInTab(img);
}
}
});
})();
async function getLargestImageByElements(elements) {
var highest = 0;
var image;
var onlyThumbnails = true;
if (elements.length > 0) {
elements.each(function(i) {
var width = parseInt($(this).attr("width") || $(this).width());
var src = $(this).attr("srcset") || $(this).attr("src");
if (src.indexOf(" ") > 0) {
src = src.split(" ")[0];
}
if (src.indexOf("thumbnail") === -1) {
onlyThumbnails = false;
}
if (width > highest) {
image = src;
highest = width;
}
});
if (image.indexOf("bravo-video.nbcuni.com") > 0) {
image = "https://bravo-video.nbcuni.com" + image.split("bravo-video.nbcuni.com")[1];
}
else if (onlyThumbnails) {
var match = image.match(/(.*)(_\d+x\d+.*)(\.jpg|\.png).*/);
var original = image;
// Route SD pictures through NBC instead
if (image.indexOf("proxy_SD") > 0) {
var slashes = image.split("/");
var path = slashes[slashes.length - 1];
var matches = /.*(proxy_SD_.*)_\d+x\d+_\d+/g.exec(path);
if (!matches) {
image = "https://img.nbc.com/files/" + path;
}
else if (matches.length === 2) {
image = "https://img.nbc.com/files/" + path.split("proxy_SD_")[0] + matches[1] + ".jpg";
}
else {
image = "https://img.nbc.com/files/" + matches[0] + ".jpg";
}
} else {
var res = await fetch(image.replace("watch_thumbnail__tablet","episode_detail__tablet__1_5x"), { method: "HEAD" });
if (res.ok) {
image = image.replace("watch_thumbnail__tablet","episode_detail__tablet__1_5x");
} else if (match) {
image = match[1].replace("watch_thumbnail__tablet","episode_detail__tablet__1_5x") + match[3] + "?id=" + match[2];
}
}
}
if (image.indexOf("http") !== 0) {
image = "https://" + window.location.host + image;
}
var final = await fetch(image, { method: "HEAD" });
if (!final.ok) {
if (original.indexOf("http") !== 0) {
image = "https://" + window.location.host + original;
} else {
image = original;
}
alert('Larger image could not be found, try going to the episode page');
}
}
return image;
}