Netzkino view

declutters netzkino.de

נכון ליום 27-05-2024. ראה הגרסה האחרונה.

// ==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 = " &bull; ";
      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> (&ouml;ffnet im neuen Tab) | alphabetisch';
      } else {
        mediathek += 'Sortierung: standard | <a href="' + location.protocol+'//'+location.host+location.pathname + '#az" target="_new">alphabetisch</a> (&ouml;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);