tele5 mediathek view

makes the page usable again

目前为 2022-09-25 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name tele5 mediathek view
  3. // @namespace Violentmonkey Scripts
  4. // @match https://tele5.de/mediathek/
  5. // @description makes the page usable again
  6. // @version 0.0.1.20220925141553
  7. // ==/UserScript==
  8.  
  9. // adjust this to your needs:
  10. // 3: default, for smaller resolutions
  11. // 4: 1920x1080/full screen
  12. var columns = 3;
  13. //
  14.  
  15. var debug = 0;
  16. if (debug == 0) {
  17. console.log = function() {};
  18. console.warn = function() {};
  19. console.err = function() {};
  20. }
  21.  
  22. if (pages)(function() {
  23.  
  24. document.getElementsByTagName("body")[0].style.display = "none";
  25.  
  26. Date.prototype.addDays = function(days) {
  27. var date = new Date(this.valueOf());
  28. date.setDate(date.getDate() + days);
  29. return date;
  30. }
  31. function addMonths(date, months) {
  32. var d = date.getDate();
  33. date.setMonth(date.getMonth() + +months);
  34. if (date.getDate() != d) {
  35. date.setDate(0);
  36. }
  37. return date;
  38. }
  39.  
  40. function unique(a) {
  41. var r = new Array();
  42. o: for (var i = 0, n = a.length; i < n; i++) {
  43. for (var x = i + 1; x < n; x++) {
  44. if (a[x] == a[i]) continue o;
  45. }
  46. r[r.length] = a[i];
  47. }
  48. return r;
  49. }
  50.  
  51. function makedate(str) {
  52.  
  53. str = str.replace(/.*Online:? /g, "");
  54. str = str.replace(fullyear, "");
  55. str = str.replace(fullyear - 1, "");
  56. str = str.replace(fullyear + 1, "");
  57. str = str.replace(/ /g, "");
  58. str = str.replace(/\.$/g, "");
  59. str = str.replace(/\.-/g, "-");
  60. str = str.replace(/-0([0-9+])/g, "-");
  61. str = str.replace(/^0([0-9+])/g, "");
  62. str = str.replace(/\.0([0-9+])/g, "\.");
  63. str = str.replace(/[^0-9.-]/gim, "");
  64.  
  65. if ((str.split(".").length - 1) != 2) {
  66. console.log(str + " MIGHT NOT BE A DATE");
  67. var fixing = "";
  68. if ((str.split(".").length - 1) < 2) {
  69. var subtfix = "1." + (d.getFullMonth() - 1).toString();
  70. if (str.indexOf("-") == -1) {
  71. var fixing = ", FIXED START DATE MISSING"; // bis 29.11
  72. if (fullday => 15) {
  73. str = "1." + d.getFullMonth().toString() + "-" + str;
  74. } else {
  75. str = subtfix + "-" + str;
  76. }
  77. } else {
  78. var fixing = ", FIXED START MONTH MISSING"; // 4-11.10
  79. var subtfix = str.split("-");
  80. var montfix = subtfix[1].split(".");
  81. str = subtfix[0].toString() + "." + montfix[1].toString() + "-" + subtfix[1];
  82. }
  83. } else if ((str.split(".").length - 1) > 2) {
  84. var fixing = ", FIXED DOT"; // JS encoding problem resulting in converting dash to dot
  85. var subtfix = str.split(".");
  86. str = subtfix[0] + "." + subtfix[1] + "-" + subtfix[2] + "." + subtfix[3];
  87. }
  88. console.log("ALERT! MALFORMED DATE" + fixing + " " + str);
  89. }
  90. return str.trim();
  91. }
  92.  
  93. function formatdate(datestring, formtil) {
  94. var mydate = datestring.split(".");
  95. var myday = mydate[0];
  96. var mymonth = mydate[1];
  97. var myyear = fullyear;
  98.  
  99. if (myday < 10) {
  100. myday = "0" + myday
  101. }
  102. if (mymonth < 10) {
  103. mymonth = "0" + mymonth
  104. }
  105. // december fix
  106. if ((mymonth == 12) && (formtil == true) ) {
  107. myyear = myyear + 1
  108. }
  109. return myyear + "-" + mymonth + "-" + myday;
  110. }
  111.  
  112. function writetable(which, how) {
  113. var allrows = "";
  114. for (var i = 0, l = which.length - 1; i < l; ++i) {
  115. if ((which[i] != undefined) && (which[i] != "undefined"))
  116. var filmset = which[i].split("|");
  117. if (how == 0) {
  118. var ab = filmset[1];
  119. var wann = filmset[0];
  120. } else {
  121. var ab = filmset[0];
  122. var wann = filmset[1];
  123. }
  124. var was = filmset[2];
  125. var wo = filmset[3];
  126. var wie = filmset[4];
  127. var regexpd = new RegExp(" - .*", "gi");
  128. was = was.replace(regexpd, "");
  129. var regexpe = new RegExp(": .*", "gi");
  130. was = was.replace(regexpe, "");
  131. var x = "";
  132. if (how == 0) {
  133. x = "jetzt";
  134. } else {
  135. x = "bald";
  136. }
  137. var link = '<a href="' + wo + '">';
  138. var tablerow = '<div class="box">' + link + '<img class="' + x + '" src="' + wie + '" /></a><br />' + link + was + '</a><br />' + ab + ' - <br />' + wann + '</div>' + "\n";
  139. if (how == 0) {
  140. if (!(new Date(wann) - d <= 0)) {
  141. allrows += tablerow;
  142. } // else (console.log(link+" "+wann))
  143. } else {
  144. allrows += tablerow;
  145. }
  146. }
  147. return allrows;
  148. }
  149.  
  150. var d = new Date();
  151. var fullyear = d.getFullYear();
  152. var fullday = d.getDate();
  153.  
  154. Date.prototype.getFullMonth = function() {
  155. const month = this.getMonth() + 1
  156. return month
  157. // return month < 10 ? '0' + month : month
  158. }
  159.  
  160. var fullmonth = d.getFullMonth();
  161.  
  162. var filmsa = new Array();
  163. var filmsb = new Array();
  164. if (debug != 0) { var skip = 0; }
  165. for (var i = 0, l = pages.length; i < l; ++i) {
  166. var filmtitle = pages[i].title;
  167. if ((filmtitle != undefined) && (filmtitle != "undefined") && (filmtitle != "") && (pages[i].subtitle.indexOf(" Online") != -1)) {
  168. /////////////////////////////////////////////////////////////////////////////////////////////
  169.  
  170. var splitdate = makedate(pages[i].subtitle).split("-");
  171.  
  172. /////////////////////////////////////////////////////////////////////////////////////////////
  173. var onlinefrof, onlinetilf = "";
  174. onlinefrof = formatdate(splitdate[0]);
  175. onlinetilf = formatdate(splitdate[1], true);
  176. if (new Date(onlinetilf) < new Date(onlinefrof)) {
  177. console.log(onlinefrof+" - "+onlinetilf+": start date is after end date...");
  178. console.log("adding a month");
  179. onlinetilf = addMonths(new Date(onlinetilf.replace(/-/g,",")),1).toISOString().split('T')[0];
  180. }
  181. var linesuf = "|" + filmtitle + "|" + pages[i].url + "|" + pages[i].image;
  182. if (!(new Date(onlinefrof) - d >= 0)) {
  183. // jetzt
  184. filmsa[i] = onlinetilf + "|" + onlinefrof + linesuf;
  185. } else if (new Date(onlinefrof) - d >= 0) {
  186. // bald
  187. // add one day
  188. // var date = new Date(onlinefrof);
  189. // onlinefrof = date.addDays(1).toISOString().split('T')[0];
  190. filmsb[i] = onlinefrof + "|" + onlinetilf + linesuf;
  191. }
  192. } else if ((filmtitle != undefined) && (filmtitle != "undefined") && (filmtitle != "")) {
  193. if (debug != 0) {
  194. console.log("skipping "+filmtitle);
  195. ++skip;
  196. }
  197. }
  198. }
  199. if (debug != 0) {console.log("skipped: "+skip)}
  200.  
  201. filmsa = unique(filmsa).sort();
  202. // filmsa = filmsa.sort();
  203. filmsb = unique(filmsb).sort();
  204. // filmsb = filmsb.sort();
  205.  
  206. var screenwidth = window.innerWidth;
  207. var imgsize = Math.floor(screenwidth / 3 - 250);
  208. var cssimg = imgsize.toString();
  209. var padcss = Math.floor(imgsize / 3).toString();
  210. var marcss = Math.floor(imgsize).toString();
  211. var mediathek, dvdx, colcount = "";
  212. var dvdr = '<div class="box"></div>\n';
  213. if (columns == 4) {
  214. colcount = "25% 25% 25% 25";
  215. dvdx = dvdr;
  216. } else {
  217. colcount = "33% 33% 33";
  218. }
  219.  
  220. mediathek += '<html><head><title>tele5 mediathek view</title><base href="https://tele5.de/mediathek/"><meta charset="utf-8">\n';
  221. mediathek += '<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />\n';
  222. mediathek += '<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />\n';
  223. mediathek += '<style>body { margin: 40px; font-family: Arial; overflow-x: hidden; display: none; } img {width: ' + cssimg + 'px; text-decoration:none;border:none;}\n';
  224. mediathek += '.wrapper { display: grid; grid-gap: 15px; grid-template-columns: ' + colcount + '%; background-color: #fff; color: #444; }\n';
  225. mediathek += '.box { background-color: #444; color: #fff; border-radius: 5px; padding: 20px; font-size: 100%; }\n';
  226. mediathek += '.bottom {margin-top: ' + marcss + 'px;margin-bottom: ' + padcss + 'px;} .top {margin-top: ' + padcss + 'px;} </style>\n</head><body>\n';
  227. mediathek += '<div class="wrapper top"><div class="box"><a name="jetzt"></a></div>' + dvdr + dvdr + dvdx;
  228. mediathek += '<div class="box">jetzt:</div><div class="box"><a href="#bald">bald</a></div>' + dvdr + dvdx + '\n';
  229. mediathek += writetable(filmsa, 0);
  230. mediathek += '</div><div class="wrapper bottom"><div class="box"><a name="bald"></a></div>' + dvdr + dvdr + dvdx;
  231. mediathek += '<div class="box"><a href="#jetzt">jetzt</a></div><div class="box">bald:</div>' + dvdr + dvdx + '\n';
  232. mediathek += writetable(filmsb, 1);
  233. mediathek += '</div>';
  234.  
  235. // fix for some weird throw of undefined in the generated markup
  236. document.write(mediathek.replace(/undefined/g, ""));
  237.  
  238. setTimeout("document.getElementsByTagName('body')[0].style.display = 'block'", 500);
  239. setTimeout("window.location.hash = '#jetzt'", 510);
  240.  
  241. })();

QingJ © 2025

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