NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name BLU update Blu-ray.com link
// @description Add link to Blu-ray.com when possible
// @version 1.2.1
// @author MiM
// @copyright 2024
// @license MIT
// @match https://blutopia.cc/torrents/similar/*
// @match https://blutopia.cc/torrents/*
// @match https://blutopia.cc/requests/*
// @grant GM_xmlhttpRequest
// @icon https://blutopia.cc/favicon.ico
// @updateURL https://openuserjs.org/meta/MiM/BLU_update_Blu-ray.com_link.meta.js
// @downloadURL https://openuserjs.org/src/scripts/MiM/BLU_update_Blu-ray.com_link.user.js
// @connect blu-ray.com
// ==/UserScript==
const CACHE_TIME = 1000 * 60 * 60 * 24;
async function search_bluray_com(url) {
const headers = {
"Content-Type": "application/html"
};
let resolver;
let rejecter;
const p = new Promise((resolveFn, rejectFn) => {
resolver = resolveFn;
rejecter = rejectFn;
});
const final = GM_xmlhttpRequest({
method: "GET",
url: url,
headers: headers,
onload: (response) => resolver(response),
onerror: (response) => rejecter(response),
ontimeout: (response) => rejecter(response)
});
return p;
}
function get_imdb_id() {
let imdb_id = ''
try {
let imdb_url = document.getElementsByClassName("meta__imdb")[0].getElementsByTagName("a")[0].href;
let url_regex = /^(.*)(tt\d+)([^\d]*)$/;
imdb_id = imdb_url.match(url_regex)[2];
}
catch {}
return imdb_id;
}
function remove_bd_meta() {
try {
window.localStorage.removeItem(`bluray_com-${imdb_id}`);
}
catch {}
document.getElementsByClassName("meta__bluray")[0].remove();
console.log("Failed to find Blu-ray.com link for this page.");
}
(async function () {
'use strict';
let bluray_com_meta = document.getElementsByClassName("meta__bluray")[0];
let bluray_com_search_url_tag = bluray_com_meta.getElementsByTagName("a")[0];
let bluray_com_search_url = bluray_com_search_url_tag.href;
let imdb_id = get_imdb_id();
var bluray_com_link = '';
try {
let updateCache = true;
try {
let oldTime = JSON.parse(window.localStorage.getItem(`bluray_com-${imdb_id}`)).time
let difference = (new Date).getTime() - oldTime;
updateCache = difference > CACHE_TIME
}
catch {}
if (updateCache) {
try {
window.localStorage.removeItem(`bluray_com-${imdb_id}`);
}
catch {}
let bluray_com_search = await search_bluray_com(bluray_com_search_url);
if (bluray_com_search.status == 200) {
let bluray_com_search_html = document.createElement('html');
bluray_com_search_html.innerHTML = bluray_com_search.response;
try {
bluray_com_link = bluray_com_search_html.getElementsByClassName("alphaborder hoverlink")[0].href;
}
catch {
bluray_com_link = ''
}
}
else {
try {
window.localStorage.removeItem(`bluray_com-${imdb_id}`);
}
catch {}
}
}
else {
bluray_com_link = JSON.parse(window.localStorage.getItem(`bluray_com-${imdb_id}`)).Bluray_com_link
}
if (bluray_com_link != '') {
document.getElementsByClassName("meta__bluray")[0].getElementsByTagName("a")[0].href = bluray_com_link;
}
else {
remove_bd_meta();
}
window.localStorage.setItem(`bluray_com-${imdb_id}`, JSON.stringify({
'time': (new Date).getTime(),
'Bluray_com_link': bluray_com_link
}));
}
catch {
remove_bd_meta();
}
})();