NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Empornium Inline Preview
// @namespace nowhere.man
// @include http://*.empornium.me/torrents.php*
// @include https://*.empornium.me/torrents.php*
// @include https://*.empornium.me/top10.php
// @version 1.1
// @grant none
// ==/UserScript==
var new_img =
"https://www.empornium.me/static/styles/empornium/images/sticky_unread.png"
function init() {
if (window.location.href.indexOf("?id=") === -1) {
if (!localStorage.lastId) {
localStorage.lastId = 1;
}
if (!localStorage.maxId) {
localStorage.maxId = 1;
}
identifyNewTorrents(localStorage.lastId);
if (window.location.href.indexOf("top10.php") === -1) {
addClearNewButton();
}
document.styleSheets[0].insertRule("div.tags{padding-left: 0px}", 0);
document.styleSheets[0].insertRule("#torrent_table tr {vertical-align: middle;}", 0);
document.styleSheets[0].insertRule(
".icon_new{background: url(" + new_img + ") no-repeat scroll center}",
0);
} else {
//always hide details
document.getElementById("details_top").setAttribute("style", "display: none");
document.getElementById("slide_button").innerHTML = "Show Info";
//move tags to top
var head = document.createElement("div");
head.setAttribute("class", "head");
var box = document.createElement("div");
box.setAttribute("class", "box");
var clear = document.createElement("div");
clear.setAttribute("style", "clear: both");
var linkbox = document.createElement("div");
linkbox.setAttribute("style", "height: auto; clear: both; padding-bottom: 32px");
head.innerHTML = "<strong>Tags</strong>";
var tags = document.getElementById("tag_container").cloneNode(true);
tags.setAttribute("style", "display: block");
tags.setAttribute("class", "tags2");
document.styleSheets[0].insertRule("div.tags2 li {width: auto; float: left;}", 0);
var toRemove = tags.getElementsByTagName("div")[0];
toRemove.parentNode.removeChild(toRemove);
toRemove = tags.getElementsByTagName("div")[1];
toRemove.parentNode.removeChild(toRemove);
box.appendChild(tags);
box.appendChild(clear);
linkbox.appendChild(head);
linkbox.appendChild(box);
var container = document.querySelector("#details_top");
container.parentNode.insertBefore(linkbox, container.nextSibling);
document.querySelector("#details_top #torrent_tags").setAttribute("id", "");
document.styleSheets[0].insertRule("div.s-useless-desc {display: none;}", 0);
}
}
function identifyNewTorrents(lastId) {
var rows = document.evaluate(
"//tr[@class='torrent rowa' or @class='torrent rowb' or @class='torrent redbar']",
document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);
var maxId = localStorage.maxId;
var id_re = new RegExp('id=(\\d+)');
for (var i = 0; i < rows.snapshotLength; i++) {
var row = rows.snapshotItem(i);
var torrentTitle = row.querySelector("td:nth-child(2) a");
var extraColumn = false;
if (torrentTitle === null) {
torrentTitle = row.querySelector("td:nth-child(3) a");
extraColumn = true;
}
var link = torrentTitle.getAttribute("href");
var regex = link.match(id_re);
if (regex) {
var id = parseInt(regex[1], 10);
if (id > maxId) {
maxId = id;
}
var overlay = window["overlay" + id];
addNewTorrentSign(row, id, lastId);
makeLargeMouseOver(row, overlay, id);
replaceCategoryWithTorrentImage(row, overlay, id);
moveTableCells(row, extraColumn);
}
}
if (maxId > localStorage.maxId) {
localStorage.maxId = maxId;
}
}
function addClearNewButton() {
var a = document.createElement('a');
a.setAttribute("href", "javascript:void(0)");
a.setAttribute("id", "clearNew");
a.setAttribute("style", "display: block; text-align: center");
var img = document.createElement("img");
img.setAttribute("style", "vertical-align: middle;");
img.src = new_img;
var span = document.createElement("span");
span.innerHTML = " Clear New";
a.appendChild(img);
a.appendChild(span);
a.addEventListener('click', function() {
localStorage.lastId = localStorage.maxId;
markAsOld(localStorage.maxId);
return false;
}, true);
var cont = document.querySelector("table.torrent_table td.cats_col");
cont.appendChild(a);
}
function moveTableCells(row, extraColumn) {
var goodTag = false;
var badTag = false;
if (row.querySelector("span.s-good")) {
goodTag = true;
}
if (row.querySelector("span.s-terrible")) {
badTag = true;
}
if (badTag) {
row.parentNode.removeChild(row);
return;
}
row.getElementsByTagName('td')[0].setAttribute("rowspan", "3");
if (extraColumn) {
row.getElementsByTagName('td')[1].setAttribute("rowspan", "3");
}
//move tags row
var newtr = document.createElement("tr");
newtr.setAttribute("class", row.getAttribute("class"));
var newtd = document.createElement("td");
newtd.setAttribute("colspan", "9");
var tags = row.getElementsByTagName("div")[1];
newtd.appendChild(tags);
newtr.appendChild(newtd);
row.parentNode.insertBefore(newtr, row.nextSibling);
//move title
newtr = document.createElement("tr");
newtr.setAttribute("class", row.getAttribute("class"));
newtd = document.createElement("td");
newtd.setAttribute("colspan", "9");
if (goodTag) {
newtd.setAttribute("style", "background: #a9df9c");
}
var anchor = row.querySelector("a[onmouseout]");
newtd.appendChild(anchor);
newtr.appendChild(newtd);
row.parentNode.insertBefore(newtr, row.nextSibling);
//formatting
row.getElementsByTagName("span")[0].setAttribute("style", "float:left");
}
function addNewTorrentSign(row, id, lastId) {
if (id > lastId) {
var img_element = document.createElement('span');
img_element.setAttribute("class", "icon icon_new");
img_element.setAttribute("tid", id);
img_element.setAttribute("title", "This torrent is new, click to mark as old");
img_element.setAttribute("style", "cursor: pointer;");
img_element.addEventListener("click", function handler(evt) {
markAsOld(this.getAttribute('tid'));
}, true);
row.getElementsByTagName("span")[0].appendChild(img_element);
}
}
function markAsOld(id) {
localStorage.lastId = parseInt(id, 10);
var imgs = document.evaluate(
"//span[@class='icon icon_new' and @tid <= " + id + "]",
document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);
for (var i = 0; i < imgs.snapshotLength; i++) {
imgs.snapshotItem(i).setAttribute("style", "display:none");
}
}
function makeLargeMouseOver(row, html, id) {
var holder = document.createElement("div");
holder.innerHTML = html;
var hoverImages = holder.getElementsByTagName('img');
if (hoverImages.length > 0) {
html = "<img src='" + hoverImages[0].src + "' style='box-shadow: 3px 3px 3px #7C7C7C; max-width: " +
(window.innerWidth / 2) + "px; max-height: " + (window.innerHeight / 2) + "px;'>;";
window["overlay" + id] = html;
}
row.getElementsByTagName("img")[0].setAttribute("onmouseout", "return nd();");
row.getElementsByTagName("img")[0].setAttribute("onmouseover", "return overlib(overlay" + id + ", FULLHTML);");
}
function replaceCategoryWithTorrentImage(row, html, id) {
var holder = document.createElement("div");
holder.innerHTML = html;
var hoverImages = holder.getElementsByTagName('img');
var rowImages = row.getElementsByTagName('img');
if (hoverImages.length > 0 && rowImages.length > 0) {
rowImages[0].src = hoverImages[0].src;
rowImages[0].setAttribute("style", "max-height: 150px; max-width: 150px; box-shadow: 3px 3px 3px #7C7C7C;");
var a = document.createElement('a');
var title = rowImages[0].parentNode.parentNode.getAttribute("title");
if (title === null) {
title = rowImages[0].parentNode.getAttribute("title");
}
a.innerHTML = "[" + title + "] ";
a.setAttribute("href", rowImages[0].parentNode.getAttribute("href"));
a.setAttribute("style", "padding-left: 10px;");
row.getElementsByTagName("span")[0].appendChild(a);
rowImages[0].parentNode.setAttribute("href", "/torrents.php?id=" + id);
}
}
setTimeout(function() {
init();
}, 250);