declutters netzkino.de
目前為
// ==UserScript==
// @name Netzkino view
// @description declutters netzkino.de
// @namespace Violentmonkey Scripts
// @match https://www.netzkino.de/
// @match https://www.netzkino.de/category/*
// @grant none
// @version 0.0.1.20240527195107
// ==/UserScript==
// adjust this to your needs:
// 2-3: default, for smaller resolutions
// 4 and 5: 1920x1080/full screen
// 6: ...
var columns = 4;
//
document.getElementsByTagName("body")[0].style.display = "none";
document.getElementsByTagName("body")[0].style.visibility = "hidden";
window.addEventListener('DOMContentLoaded',
function() {
var imdbsvg = '<span><svg height="20" width="34" viewBox="0 5 64 16"><rect fill="#f5c518" height="32" rx="4" width="64"/><path d="m8 7v18h5v-18zm7 0v18h4.25v-11.875l1.78125 11.875h3.03125l1.6875-12.15625.03125 12.15625h4.21875v-18h-6.3125l-1.125 8.40625-.71875-4.5625c-.2015908-1.46493163-.3773656-2.75199879-.5625-3.84375zm17 0v18h7.8125c1.7671031 0 3.1875-1.43311 3.1875-3.1875v-11.625c0-1.75666009-1.4227064-3.1875-3.1875-3.1875zm13 0v17.78125h4.46875l.3125-1.125c.5884049.8053879 1.5578038 1.34375 2.65625 1.34375h.3125c1.7956636 0 3.25-1.3919253 3.25-3.125v-7.21875c0-1.73219176-1.4548082-3.15625-3.25-3.15625h-.3125c-1.0747565 0-2.0380781.51087183-2.65625 1.28125v-5.78125zm-8.3125 3.09375c.5518634 0 .957924.04905988 1.15625.15625.2026373.10719012.3189514.26973974.375.5s.09375.74864909.09375 1.5625v6.96875c0 1.1989413-.0818541 1.9487897-.25 2.21875-.1681459.2739303-.6463678.40625-1.375.40625zm13.84375 4.1875c.2639059 0 .6557478.1308602.75.34375.0942522.21288983.125.70151132.125 1.40625v4.25c0 .8038426-.0420582 1.3220307-.125 1.53125-.0829419.2092193-.4785537.3125-.75.3125-.2714464 0-.6595179-.1069512-.75-.3125v-1.40625-4.375-1.4375c.0791718-.18719623.4860938-.3125.75-.3125z"/></svg></span>',
imdbprefix = '<a href="https://www.imdb.com/find/?q=',
imdbsuffix = '" target="somenewwindow">' + imdbsvg + '</a> ';
document.getElementsByTagName("body")[0].onclick = function() {
var debug = 1;
var mediathek, mode = "";
if (debug != 1) {
console.log = function() {};
console.warn = function() {};
console.err = function() {};
}
var jsoncontainer = 0;
for (var i = 0, l = document.getElementsByTagName("script").length; i < l; ++i) {
if (document.getElementsByTagName("script")[i].type == "application/ld+json") {
jsoncontainer = i;
break;
}
}
var scriptEl = document.getElementsByTagName("script")[jsoncontainer];
var schemaObj = JSON.parse(scriptEl.innerHTML);
function writetable() {
var allrows = "";
for (var i = 0, l = prepared.length; i < l; ++i) {
var filmset = prepared[i].split("|");
var link = '<a href="' + filmset[1] + '">';
var directordisplay, durationdisplay = "";
var comma = "";
if (filmset[4] != "nix") {
if ((filmset[3] != 0) && (filmset[3] != "nix") ) {
comma = ", ";
}
directordisplay = filmset[4];
}
if ((filmset[3] == 0) || (filmset[3] == "nix") ) {
durationdisplay = "";
} else { durationdisplay = filmset[3]; }
var imdb = imdbprefix + filmset[0] + imdbsuffix;
allrows += '<div class="box">' + link + '<img src="' + filmset[2] + '" /></a><br />' + imdb + link + filmset[0] + "</a> <br />" + directordisplay + comma + durationdisplay + '<br /><br /></div>' + "\n";
}
return allrows;
}
var prepared = new Array();
if (debug != 0) {
var skip = 0;
}
for (var i = 0, l = schemaObj.itemListElement.length; i < l; ++i) {
var name = schemaObj.itemListElement[i].item.name;
var myregex = new RegExp(" – .*", "gi");
name = name.replace(myregex, "");
myregex = new RegExp(" - .*", "gi");
name = name.replace(myregex, "");
myregex = new RegExp(": .*", "gi");
name = name.replace(myregex, "");
myregex = new RegExp(" — .*", "gi");
name = name.replace(myregex, "");
var url = schemaObj.itemListElement[i].item.url;
var image = schemaObj.itemListElement[i].item.image;
var duration = schemaObj.itemListElement[i].item.duration;
if (duration != "null") {
duration = duration.replace("M", "");
if (duration.indexOf("H") == -1) {
duration = "1H" + duration;
}
var durationdisplay = duration.split("H");
var durationhrs, durationmin;
durationhrs = durationdisplay[0];
durationmin = durationdisplay[1];
duration = (parseInt(durationhrs) * 60) + parseInt(durationmin)
duration = duration + " Minuten";
} else { duration = "nix"; }
var director = schemaObj.itemListElement[i].item.director; // undefined oder N/A
director = director.replace("N/A", "nix").replace("undefined", "nix");
prepared[i] = name + "|" + url + "|" + image + "|" + duration + "|" + director;
}
if (location.hash == "#az") {
prepared = prepared.sort();
mode = ": a-z";
}
var screenwidth = window.innerWidth;
var imgsize = Math.floor(screenwidth / 3 - 250);
var cssimg = imgsize.toString();
var padcss = Math.floor(imgsize / 3).toString();
var marcss = Math.floor(imgsize).toString();
var mediathek, dvdx, colcount = "";
var dvdr = '<div class="box"></div>\n';
if (columns == 6) {
colcount = "16% 16% 16% 16% 16% 16";
dvdx = dvdr;
} else if (columns == 5) {
colcount = "19% 19% 19% 19% 19";
dvdx = dvdr;
} else if (columns == 4) {
colcount = "25% 25% 25% 25";
dvdx = dvdr;
} else {
colcount = "33% 33% 33";
}
var genres = 'Genres: ';
var categories = 'Kategorien: ';
var mdash = " • ";
var genresArr = new Array();
var categoriesArr = new Array();
for (var i = 0, l = document.getElementsByClassName("r-m611by").length; i < l; ++i) {
genresArr[i] = '<a href="' + document.getElementsByClassName("r-m611by")[i].href + '">' + document.getElementsByClassName("r-m611by")[i].getAttribute("aria-label").replace("kino","") + '</a> ';
}
for (var i = 0, l = document.getElementsByClassName("r-157gdtw").length; i < l; ++i) {
if (document.getElementsByClassName("r-157gdtw")[i].getElementsByTagName("a")[0].href.indexOf("netzkinoplus") == -1) {
categoriesArr[i] = '<a href="' + document.getElementsByClassName("r-157gdtw")[i].getElementsByTagName("a")[0].href + '">' + document.getElementsByClassName("r-157gdtw")[i].getElementsByTagName("h1")[0].innerText.replace("kino","") + '</a> ';
}
}
categoriesArr = categoriesArr.sort();
genresArr = genresArr.sort();
for (var i = 0, l = categoriesArr.length; i < l; ++i) {
categories += categoriesArr[i];
if (i != categoriesArr.length-1) {
categories += mdash;
}
}
for (var i = 0, l = genresArr.length; i < l; ++i) {
genres += genresArr[i];
if (i != genresArr.length-1) {
genres += mdash;
}
}
var newtitle = document.title;
myregex = new RegExp(" – .*", "gi");
newtitle = newtitle.replace(myregex, "");
myregex = new RegExp(" - .*", "gi");
newtitle = newtitle.replace(myregex, "");
newtitle = newtitle.replace("Netzkino","");
newtitle = newtitle.replace("kino","");
mediathek += '<html><head><title>Netzkino view ' + newtitle + mode + '</title><base href="https://www.netzkino.de/"><meta charset="utf-8">\n';
mediathek += '<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />\n';
mediathek += '<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />\n';
mediathek += '<style>body { margin: 10px; font-family: Arial; overflow-x: hidden; } img {width: ' + cssimg + 'px; text-decoration:none;border:none;}\n';
mediathek += 'rect.imdb, svg.imdb, img.imdb {width: auto; height: auto;} .wrapper { display: grid; grid-gap: 10px; grid-template-columns: ' + colcount + '%; background-color: #fff; color: #444; }\n';
mediathek += '.box { background-color: #444; color: #fff; border-radius: 5px; padding: 10px; font-size: 100%; }\n';
mediathek += '.bottom {margin-top: ' + marcss + 'px;margin-bottom: ' + padcss + 'px;} .top {margin-top: ' + padcss + 'px;} .links {line-height: 1.35em}</style>\n</head><body>\n';
mediathek += '<span class="links">Startseite: <a href="https://www.netzkino.de/">Netzkino</a> ' + mdash;
if (location.hash == "#az") {
mediathek += 'Sortierung: <a href="' + location.protocol+'//'+location.host+location.pathname + '#view" target="_new">standard</a> (öffnet im neuen Tab) | alphabetisch';
} else {
mediathek += 'Sortierung: standard | <a href="' + location.protocol+'//'+location.host+location.pathname + '#az" target="_new">alphabetisch</a> (öffnet im neuen Tab)';
}
mediathek += " " + mdash + " " + newtitle;
if (newtitle != "") {
mediathek += ": ";
}
mediathek += prepared.length + " Titel <br />" + genres;
if (categoriesArr.length > 1) {
mediathek += "<br />" + categories;
}
mediathek += "</span><br /><br /><br />";
mediathek += '<div class="wrapper">';
mediathek += writetable(prepared);
mediathek += '</div></body></html>';
document.write(mediathek.replace(/undefined/g, ""));
document.getElementsByTagName("body")[0].style.display = "block";
document.getElementsByTagName("body")[0].style.visibility = "visible";
document.getElementsByTagName("body")[0].onclick = function() {}
}
},
false);
setTimeout('document.getElementsByTagName("body")[0].click()', 10000);