tele5 mediathek view

makes the page usable again

目前为 2022-10-07 提交的版本。查看 最新版本

// ==UserScript==
// @name tele5 mediathek view
// @namespace Violentmonkey Scripts
// @match https://tele5.de/mediathek/
// @description makes the page usable again
// @version 0.0.1.20221007152832
// ==/UserScript==

// adjust this to your needs:
// 3: default, for smaller resolutions
// 4: 1920x1080/full screen
var columns = 3;
// 
//

var debug = 0;
if (debug == 0) {
  console.log = function() {};
  console.warn = function() {};
  console.err = function() {};
}

if (pages)(function() {

  document.getElementsByTagName("body")[0].style.display = "none";

  Date.prototype.addDays = function(days) {
    var date = new Date(this.valueOf());
    date.setDate(date.getDate() + days);
    return date;
  }
  
  function addMonths(date, months) {
      var d = date.getDate();
      date.setMonth(date.getMonth() + +months);
      if (date.getDate() != d) {
        date.setDate(0);
      }
      return date;
  }

  function unique(a) {
    var r = new Array();
    o: for (var i = 0, n = a.length; i < n; i++) {
      for (var x = i + 1; x < n; x++) {
        if (a[x] == a[i]) continue o;
      }
      r[r.length] = a[i];
    }
    return r;
  }

  function makedate(str) {

    str = str.replace(/.*Online:? /g, "");
    str = str.replace(fullyear, "");
    str = str.replace(fullyear - 1, "");
    str = str.replace(fullyear + 1, "");
    str = str.replace(/ /g, "");
    str = str.replace(/\.$/g, "");
    str = str.replace(/\.-/g, "-");
    str = str.replace(/-0([0-9+])/g, "-");
    str = str.replace(/^0([0-9+])/g, "");
    str = str.replace(/\.0([0-9+])/g, "\.");
    str = str.replace(/[^0-9.-]/gim, "");

    if ((str.split(".").length - 1) != 2) {
      console.log(str + " MIGHT NOT BE A DATE");
      var fixing = "";
      if ((str.split(".").length - 1) < 2) {
        var subtfix = "1." + (d.getFullMonth() - 1).toString();
        if (str.indexOf("-") == -1) {
          var fixing = ", FIXED START DATE MISSING"; // bis 29.11
          if (fullday => 15) {
            str = "1." + d.getFullMonth().toString() + "-" + str;
          } else {
            str = subtfix + "-" + str;
          } 
        } else {
          var fixing = ", FIXED START MONTH MISSING"; // 4-11.10
          if ((str.split("-").length - 1) > 1) {
            str = str.replace(/.*\-/g, subtfix+"-");
          }
          var subtfix = str.split("-");
          var montfix = subtfix[1].split(".");
          str = subtfix[0].toString() + "." + montfix[1].toString() + "-" + subtfix[1];
        }
      } else if ((str.split(".").length - 1) > 2) {
        var fixing = ", FIXED DOT"; // JS encoding problem resulting in converting dash to dot
        var subtfix = str.split(".");
        str = subtfix[0] + "." + subtfix[1] + "-" + subtfix[2] + "." + subtfix[3];
      }
      console.log("ALERT! MALFORMED DATE" + fixing + " " + str);
    } 
    return str.trim();
  }

  function formatdate(datestring, formtil) {
    var mydate = datestring.split(".");
    var myday = mydate[0];
    var mymonth = mydate[1];
    var myyear = fullyear;

    if (myday < 10) {
      myday = "0" + myday
    }
    if (mymonth < 10) {
      mymonth = "0" + mymonth
    }
    // december fix
    if  ((mymonth == 12) && (formtil == true) ) {
      myyear = myyear + 1
    }
    return myyear + "-" + mymonth + "-" + myday;
  }

  function writetable(which, how) {
    var allrows = "";
    for (var i = 0, l = which.length - 1; i < l; ++i) {
      if ((which[i] != undefined) && (which[i] != "undefined"))
        var filmset = which[i].split("|");
      if (how == 0) {
        var ab = filmset[1];
        var wann = filmset[0];
      } else {
        var ab = filmset[0];
        var wann = filmset[1];
      }
      var was = filmset[2];
      var wo = filmset[3];
      var wie = filmset[4];
      var regexpd = new RegExp(" - .*", "gi");
      was = was.replace(regexpd, "");
      var regexpe = new RegExp(": .*", "gi");
      was = was.replace(regexpe, "");
      var x = "";
      if (how == 0) {
        x = "jetzt";
      } else {
        x = "bald";
      }
      var link = '<a href="' + wo + '">';
      var tablerow = '<div class="box">' + link + '<img class="' + x + '" src="' + wie + '" /></a><br />' + link + was + '</a><br />' + ab + ' - <br />' + wann + '</div>' + "\n";
      if (how == 0) {
        if (!(new Date(wann) - d <= 0)) {
          allrows += tablerow;
        } // else (console.log(link+" "+wann))
      } else {
        allrows += tablerow;
      }
    }
    return allrows;
  }

  var d = new Date();
  var fullyear = d.getFullYear();
  var fullday = d.getDate();

  Date.prototype.getFullMonth = function() {
    const month = this.getMonth() + 1
    return month
    // return month < 10 ? '0' + month : month
  }

  var fullmonth = d.getFullMonth();

  var filmsa = new Array();
  var filmsb = new Array();
  
  if (debug != 0) {  var skip = 0; }
  
  for (var i = 0, l = pages.length; i < l; ++i) {
    var filmtitle = pages[i].title;
    if ((filmtitle != undefined) && (filmtitle != "undefined") && (filmtitle != "") && (pages[i].subtitle.indexOf(" Online") != -1)) {
      
      /////////////////////////////////////////////////////////////////////////////////////////////

      var splitdate = makedate(pages[i].subtitle).split("-");

      /////////////////////////////////////////////////////////////////////////////////////////////
      var onlinefrof, onlinetilf = "";
      onlinefrof = formatdate(splitdate[0]);
      onlinetilf = formatdate(splitdate[1], true);
      if (new Date(onlinetilf) < new Date(onlinefrof)) {
        console.log(onlinefrof+" - "+onlinetilf+": end date is before start date, adding a month");
        onlinefrof = addMonths(new Date(onlinefrof),-1).toISOString().split('T')[0];
      }
      
      var linesuf = "|" + filmtitle + "|" + pages[i].url + "|" + pages[i].image;
      if (!(new Date(onlinefrof) - d >= 0)) {
        // jetzt
        filmsa[i] = onlinetilf + "|" + onlinefrof + linesuf;
      } else if (new Date(onlinefrof) - d >= 0) {
        // bald
        // add one day
        // var date = new Date(onlinefrof);
        // onlinefrof = date.addDays(1).toISOString().split('T')[0];
        filmsb[i] = onlinefrof + "|" + onlinetilf + linesuf;
      }
    } else if ((filmtitle != undefined) && (filmtitle != "undefined") && (filmtitle != "")) {
      if (debug != 0) {
        console.log("skipping "+filmtitle);
        ++skip;
      }
      
    }
  }
  
  if (debug != 0) {console.log("skipped: "+skip)}

  filmsa = unique(filmsa).sort();
  // filmsa = filmsa.sort();
  filmsb = unique(filmsb).sort();
  // filmsb = filmsb.sort();

  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 == 4) {
    colcount = "25% 25% 25% 25";
    dvdx = dvdr;
  } else {
    colcount = "33% 33% 33";
  }

  mediathek += '<html><head><title>tele5 mediathek view</title><base href="https://tele5.de/mediathek/"><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: 40px; font-family: Arial; overflow-x: hidden; display: none; } img {width: ' + cssimg + 'px; text-decoration:none;border:none;}\n';
  mediathek += '.wrapper { display: grid; grid-gap: 15px; grid-template-columns: ' + colcount + '%; background-color: #fff; color: #444; }\n';
  mediathek += '.box { background-color: #444; color: #fff; border-radius: 5px; padding: 20px; font-size: 100%; }\n';
  mediathek += '.bottom {margin-top: ' + marcss + 'px;margin-bottom: ' + padcss + 'px;}  .top {margin-top: ' + padcss + 'px;} </style>\n</head><body>\n';
  mediathek += '<div class="wrapper top"><div class="box"><a name="jetzt"></a></div>' + dvdr + dvdr + dvdx;
  mediathek += '<div class="box">jetzt:</div><div class="box"><a href="#bald">bald</a></div>' + dvdr + dvdx + '\n';
  mediathek += writetable(filmsa, 0);
  mediathek += '</div><div class="wrapper bottom"><div class="box"><a name="bald"></a></div>' + dvdr + dvdr + dvdx;
  mediathek += '<div class="box"><a href="#jetzt">jetzt</a></div><div class="box">bald:</div>' + dvdr + dvdx + '\n';
  mediathek += writetable(filmsb, 1);
  mediathek += '</div>';

  // fix for some weird throw of undefined in the generated markup
  document.write(mediathek.replace(/undefined/g, ""));

  setTimeout("document.getElementsByTagName('body')[0].style.display = 'block'", 500);
  setTimeout("window.location.hash = '#jetzt'", 510);

})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址