HTML5-Video für Golem.de

Wandelt den Golem.de-eigenen Flash-Player in einen HTML5-Player um.

  1. // ==UserScript==
  2. // @name HTML5-Video für Golem.de
  3. // @namespace tfr
  4. // @description Wandelt den Golem.de-eigenen Flash-Player in einen HTML5-Player um.
  5. // @author tfr (https://github.com/t-fr/)
  6. // @license CC0; https://creativecommons.org/publicdomain/zero/1.0/
  7. // @license MIT license; https://pastebin.com/raw.php?i=4TMeeUXC
  8. // @compatible firefox Funktioniert mit Firefox und Greasemonkey
  9. // @incompatible chrome Funktioniert nicht mit Chrome und Tampermonkey
  10. // @incompatible opera Funktioniert nicht mit Opera und Tampermonkey Beta oder Violent monkey
  11. // @oujs:author tfr
  12. // @include http://www.golem.de/*
  13. // @include https://www.golem.de/*
  14. // @include http://video.golem.de/*
  15. // @include https://video.golem.de/*
  16. // @version 7
  17. // @grant GM_xmlhttpRequest
  18. // ==/UserScript==
  19.  
  20. /* This script is dual-licensed under CC0 and the MIT license.
  21. * You can choose which one you want to use.
  22. * CC0 license: http://creativecommons.org/publicdomain/zero/1.0/deed.en
  23. * MIT license: https://pastebin.com/raw.php?i=4TMeeUXC
  24. *
  25. * Dieses Skript steht sowohl unter CC0 als auch unter der MIT-Lizenz.
  26. * Sie können sich aussuchen, welche Lizenz Sie nutzen.
  27. * CC0-Lizenz: http://creativecommons.org/publicdomain/zero/1.0/deed.de
  28. * MIT-Lizenz: https://pastebin.com/raw.php?i=4TMeeUXC
  29. */
  30.  
  31. /* Version 7: Update license information
  32. * Version 6: Probleme mit doppelten Playern und Verzögerungen lösen
  33. */
  34.  
  35. function HTML5VideoDisabled() {
  36. var retval = false;
  37. try {
  38. retval = window.sessionStorage.getItem("tfrNoHTML5Video") == "true";
  39. window.sessionStorage.removeItem("tfrNoHTML5Video");
  40. } catch(e) {
  41. retval = window.name.indexOf(";tfrNoHTML5Video") > -1;
  42. window.name = window.name.replace(/;tfrNoHTML5Video/g, "");
  43. }
  44. return retval;
  45. }
  46.  
  47. function ReplacePlayers() {
  48. if(!HTML5VideoDisabled()) {
  49. var found = false;
  50. for(var i = 0; i < window.document.getElementsByTagName("div").length; i++) {
  51. if(typeof window.document.getElementsByTagName("div")[i].id !== "undefined" && window.document.getElementsByTagName("div")[i].id.search(/^NVBPlayer[0-9]*$/) >= 0) {
  52. found = true;
  53. ReplacePlayer(window.document.getElementsByTagName("div")[i].id);
  54. }
  55. }
  56. if(!found)
  57. {
  58. window.setTimeout(ReplacePlayers, 500)
  59. }
  60. }
  61. }
  62. function ReplacePlayer(divId) {
  63. divId.match(/^NVBPlayer([0-9]*)$/);
  64. var videoId = RegExp.$1;
  65. GM_xmlhttpRequest({
  66. method: "GET",
  67. url: "//video.golem.de/xml/" + videoId + ".xml",
  68. onload: function(response) {
  69. var responseXml = new DOMParser().parseFromString(response.responseText, "text/xml");
  70. var videoId = responseXml.getElementsByTagName("id")[0].innerHTML;
  71. var sdVideoUrl = "//video.golem.de" + responseXml.getElementsByTagName("medium")[0].getElementsByTagName("url")[0].innerHTML;
  72. var sdVideoThumb = "//video.golem.de" + responseXml.getElementsByTagName("medium")[0].getElementsByTagName("teaser")[0].getElementsByTagName("url")[0].innerHTML;
  73. var hdVideoAvailable = false;
  74. var hdVideoUrl = "";
  75. var hdVideoThumb = "";
  76. if(responseXml.getElementsByTagName("high")[0]) {
  77. hdVideoAvailable = true;
  78. hdVideoUrl = "//video.golem.de" + responseXml.getElementsByTagName("high")[0].getElementsByTagName("url")[0].innerHTML;
  79. hdVideoThumb = "//video.golem.de" + responseXml.getElementsByTagName("high")[0].getElementsByTagName("teaser")[0].getElementsByTagName("url")[0].innerHTML;
  80. }
  81. var videoElem = window.document.createElement("video");
  82. videoElem.setAttribute("id", "tfrHtml5Video" + videoId);
  83. videoElem.setAttribute("controls", "controls");
  84. videoElem.setAttribute("width", "620");
  85. videoElem.setAttribute("height", "349");
  86. videoElem.setAttribute("poster", sdVideoThumb);
  87. videoElem.setAttribute("src", sdVideoUrl);
  88. videoElem.setAttribute("style", "background-color:black;");
  89. videoElem.setAttribute("onmousemove", "javascript:if(typeof tfrHtml5Timeout" + videoId + " !== \"undefined\") { window.clearTimeout(tfrHtml5Timeout" + videoId + "); }window.document.getElementById(\"tfrHtml5Options" + videoId + "\").style.display = \"block\"; tfrHtml5Timeout" + videoId + " = window.setTimeout(\"window.document.getElementById(\\\"tfrHtml5Options" + videoId + "\\\").style.display = \\\"none\\\";\", 2000);");
  90. videoElem.setAttribute("onmouseout", "javascript:window.document.getElementById(\"tfrHtml5Options" + videoId + "\").style.display = \"none\";");
  91. videoElem.setAttribute("onplay", "javascript:window.document.getElementById(\"tfrHtml5Related" + videoId + "\").style.display = \"none\";");
  92. videoElem.setAttribute("onseeked", "javascript:window.document.getElementById(\"tfrHtml5Related" + videoId + "\").style.display = \"none\";");
  93. videoElem.setAttribute("onended", "javascript:window.document.getElementById(\"tfrHtml5Related" + videoId + "\").style.display = \"block\";");
  94. var videoOptionBox = window.document.createElement("div");
  95. videoOptionBox.setAttribute("id", "tfrHtml5Options" + videoId);
  96. videoOptionBox.setAttribute("style", "position:absolute; top:0px; right:0px; z-index:1; background-color:black; color:white; opacity:0.4; cursor:default; font-family:\"Segoe UI\", Tahoma, sans-serif; display:none;");
  97. videoOptionBox.setAttribute("onmouseover", "javascript:if(typeof tfrHtml5Timeout" + videoId + " !== \"undefined\") { window.clearTimeout(tfrHtml5Timeout" + videoId + "); }window.document.getElementById(\"tfrHtml5Options" + videoId + "\").style.display = \"block\";");
  98. videoOptionBox.setAttribute("onmouseout", "javascript:window.document.getElementById(\"tfrHtml5Options" + videoId + "\").style.display = \"none\";");
  99. var relatedVideoBox = window.document.createElement("div");
  100. relatedVideoBox.setAttribute("id", "tfrHtml5Related" + videoId);
  101. relatedVideoBox.setAttribute("style", "position:absolute; top:0px; left:0px; width:620px; height:315px; z-index:2; background-color:black; color:white; opacity:0.8; cursor:default; font-family:\"Segoe UI\", Tahoma, sans-serif; display:none; font-size:8pt;");
  102. var relatedVideoTable = window.document.createElement("table");
  103. relatedVideoTable.setAttribute("id", "tfrHtml5Related" + videoId + "Table");
  104. var relatedVideoRow0 = window.document.createElement("tr");
  105. var relatedVideoRow1 = window.document.createElement("tr");
  106. var relatedVideoCell0 = window.document.createElement("td");
  107. var relatedVideoCell1 = window.document.createElement("td");
  108. var relatedVideoCell2 = window.document.createElement("td");
  109. var relatedVideoCell3 = window.document.createElement("td");
  110. var relatedVideoCell4 = window.document.createElement("td");
  111. var relatedVideoCell5 = window.document.createElement("td");
  112. var relatedVideoCell6 = window.document.createElement("td");
  113. var relatedVideoCell7 = window.document.createElement("td");
  114. var relatedVideoCell8 = window.document.createElement("td");
  115. var relatedVideoCell9 = window.document.createElement("td");
  116. relatedVideoCell0.setAttribute("class", "tfrRelatedVideo");
  117. relatedVideoCell1.setAttribute("class", "tfrRelatedVideo");
  118. relatedVideoCell2.setAttribute("class", "tfrRelatedVideo");
  119. relatedVideoCell3.setAttribute("class", "tfrRelatedVideo");
  120. relatedVideoCell4.setAttribute("class", "tfrRelatedVideo");
  121. relatedVideoCell5.setAttribute("class", "tfrRelatedVideo");
  122. relatedVideoCell6.setAttribute("class", "tfrRelatedVideo");
  123. relatedVideoCell7.setAttribute("class", "tfrRelatedVideo");
  124. relatedVideoCell8.setAttribute("class", "tfrRelatedVideo");
  125. relatedVideoCell9.setAttribute("class", "tfrRelatedVideo");
  126. relatedVideoCell0.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  127. relatedVideoCell1.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  128. relatedVideoCell2.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  129. relatedVideoCell3.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  130. relatedVideoCell4.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  131. relatedVideoCell5.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  132. relatedVideoCell6.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  133. relatedVideoCell7.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  134. relatedVideoCell8.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  135. relatedVideoCell9.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;");
  136. if(responseXml.getElementsByTagName("relatedvideo")[0]) {
  137. relatedVideoCell0.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[0].getElementsByTagName("id")[0].innerHTML);
  138. }
  139. if(responseXml.getElementsByTagName("relatedvideo")[1]) {
  140. relatedVideoCell1.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[1].getElementsByTagName("id")[0].innerHTML);
  141. }
  142. if(responseXml.getElementsByTagName("relatedvideo")[2]) {
  143. relatedVideoCell2.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[2].getElementsByTagName("id")[0].innerHTML);
  144. }
  145. if(responseXml.getElementsByTagName("relatedvideo")[3]) {
  146. relatedVideoCell3.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[3].getElementsByTagName("id")[0].innerHTML);
  147. }
  148. if(responseXml.getElementsByTagName("relatedvideo")[4]) {
  149. relatedVideoCell4.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[4].getElementsByTagName("id")[0].innerHTML);
  150. }
  151. if(responseXml.getElementsByTagName("relatedvideo")[5]) {
  152. relatedVideoCell5.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[5].getElementsByTagName("id")[0].innerHTML);
  153. }
  154. if(responseXml.getElementsByTagName("relatedvideo")[6]) {
  155. relatedVideoCell6.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[6].getElementsByTagName("id")[0].innerHTML);
  156. }
  157. if(responseXml.getElementsByTagName("relatedvideo")[7]) {
  158. relatedVideoCell7.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[7].getElementsByTagName("id")[0].innerHTML);
  159. }
  160. if(responseXml.getElementsByTagName("relatedvideo")[8]) {
  161. relatedVideoCell8.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[8].getElementsByTagName("id")[0].innerHTML);
  162. }
  163. if(responseXml.getElementsByTagName("relatedvideo")[9]) {
  164. relatedVideoCell9.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[9].getElementsByTagName("id")[0].innerHTML);
  165. }
  166. relatedVideoRow0.appendChild(relatedVideoCell0);
  167. relatedVideoRow0.appendChild(relatedVideoCell1);
  168. relatedVideoRow0.appendChild(relatedVideoCell2);
  169. relatedVideoRow0.appendChild(relatedVideoCell3);
  170. relatedVideoRow0.appendChild(relatedVideoCell4);
  171. relatedVideoRow1.appendChild(relatedVideoCell5);
  172. relatedVideoRow1.appendChild(relatedVideoCell6);
  173. relatedVideoRow1.appendChild(relatedVideoCell7);
  174. relatedVideoRow1.appendChild(relatedVideoCell8);
  175. relatedVideoRow1.appendChild(relatedVideoCell9);
  176. relatedVideoTable.appendChild(relatedVideoRow0);
  177. relatedVideoTable.appendChild(relatedVideoRow1);
  178. relatedVideoBox.appendChild(relatedVideoTable);
  179. if(hdVideoAvailable) {
  180. var hdOnLink = window.document.createElement("a");
  181. hdOnLink.setAttribute("id", "tfrHtml5Option" + videoId + "HdOn");
  182. hdOnLink.setAttribute("onclick", "javascript:window.document.getElementById(\"tfrHtml5Option" + videoId + "HdOn\").style.display = \"none\"; window.document.getElementById(\"tfrHtml5Option" + videoId + "HdOff\").style.display = \"inline\"; var pos = window.document.getElementById(\"tfrHtml5Video" + videoId + "\").currentTime; var vidpau = window.document.getElementById(\"tfrHtml5Video" + videoId + "\").paused; window.document.getElementById(\"tfrHtml5Video" + videoId + "\").setAttribute(\"src\", \"" + hdVideoUrl + "\"); window.document.getElementById(\"tfrHtml5Video" + videoId + "\").load(); window.document.getElementById(\"tfrHtml5Video" + videoId + "\").setAttribute(\"onloadedmetadata\", \"if(!\" + vidpau + \") { window.document.getElementById(\\\"tfrHtml5Video" + videoId + "\\\").play(); } window.document.getElementById(\\\"tfrHtml5Video" + videoId + "\\\").currentTime = \" + pos + \";\"); return false;");
  183. hdOnLink.setAttribute("style", "color:white;");
  184. hdOnLink.appendChild(window.document.createTextNode("HD ein"));
  185. videoOptionBox.appendChild(hdOnLink);
  186. var hdOffLink = window.document.createElement("a");
  187. hdOffLink.setAttribute("id", "tfrHtml5Option" + videoId + "HdOff");
  188. hdOffLink.setAttribute("onclick", "javascript:window.document.getElementById(\"tfrHtml5Option" + videoId + "HdOff\").style.display = \"none\"; window.document.getElementById(\"tfrHtml5Option" + videoId + "HdOn\").style.display = \"inline\"; var pos = window.document.getElementById(\"tfrHtml5Video" + videoId + "\").currentTime; var vidpau = window.document.getElementById(\"tfrHtml5Video" + videoId + "\").paused; window.document.getElementById(\"tfrHtml5Video" + videoId + "\").setAttribute(\"src\", \"" + sdVideoUrl + "\"); window.document.getElementById(\"tfrHtml5Video" + videoId + "\").load(); window.document.getElementById(\"tfrHtml5Video" + videoId + "\").setAttribute(\"onloadedmetadata\", \"if(!\" + vidpau + \") { window.document.getElementById(\\\"tfrHtml5Video" + videoId + "\\\").play(); } window.document.getElementById(\\\"tfrHtml5Video" + videoId + "\\\").currentTime = \" + pos + \";\"); return false;");
  189. hdOffLink.setAttribute("style", "color:white; display:none;");
  190. hdOffLink.appendChild(window.document.createTextNode("HD aus"));
  191. videoOptionBox.appendChild(hdOffLink);
  192. videoOptionBox.appendChild(window.document.createTextNode(" \u00B7 "));
  193. }
  194. var noHtml5Link = window.document.createElement("a");
  195. noHtml5Link.setAttribute("id", "tfrHtml5Option" + videoId + "NoHTML5");
  196. noHtml5Link.setAttribute("onclick", "javascript:try {window.sessionStorage.setItem(\"tfrNoHTML5Video\", \"true\");} catch(e) {window.name += \";tfrNoHTML5Video\";} window.location.reload(); return false;");
  197. noHtml5Link.setAttribute("style", "color:white;");
  198. noHtml5Link.appendChild(window.document.createTextNode("Kein HTML5"));
  199. videoOptionBox.appendChild(noHtml5Link);
  200. if(window.document.getElementById("NVBPlayer" + videoId + "video")) {
  201. window.document.getElementById("NVBPlayer" + videoId + "video").parentNode.removeChild(window.document.getElementById("NVBPlayer" + videoId + "video"));
  202. }
  203. if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppdisplay")[0])
  204. {
  205. window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppdisplay")[0]);
  206. }
  207. if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppbuffering")[0])
  208. {
  209. window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppbuffering")[0]);
  210. }
  211. if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppstart")[0])
  212. {
  213. window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppstart")[0]);
  214. }
  215. if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pplogo")[0])
  216. {
  217. window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pplogo")[0]);
  218. }
  219. if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppcontrols")[0])
  220. {
  221. window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppcontrols")[0]);
  222. }
  223. if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pprelated")[0])
  224. {
  225. window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pprelated")[0]);
  226. }
  227. if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pppostertitle")[0])
  228. {
  229. window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pppostertitle")[0]);
  230. }
  231. window.document.getElementById("NVBPlayer" + videoId).appendChild(videoElem);
  232. window.document.getElementById("NVBPlayer" + videoId).appendChild(videoOptionBox);
  233. window.document.getElementById("NVBPlayer" + videoId).appendChild(relatedVideoBox);
  234. FillRelatedVideos();
  235. }
  236. });
  237. }
  238. function FillRelatedVideos() {
  239. for(var i = 0; i < window.document.getElementsByClassName("tfrRelatedVideo").length; i++) {
  240. if(typeof window.document.getElementsByClassName("tfrRelatedVideo")[i].id !== "undefined" && window.document.getElementsByClassName("tfrRelatedVideo")[i].id.search(/^tfrRelatedVideo[0-9]*_[0-9]*$/) >= 0) {
  241. var elemId = window.document.getElementsByClassName("tfrRelatedVideo")[i].id
  242. elemId.match(/^tfrRelatedVideo([0-9]*)_([0-9]*)$/);
  243. parentId = RegExp.$1;
  244. var videoId = RegExp.$2;
  245. GM_xmlhttpRequest({
  246. method: "GET",
  247. url: "//video.golem.de/xml/" + videoId + ".xml",
  248. onload: function(response) {
  249. var responseXml = new DOMParser().parseFromString(response.responseText, "text/xml");
  250. var videoId = responseXml.getElementsByTagName("id")[0].innerHTML;
  251. var videoTitle = responseXml.getElementsByTagName("title")[0].innerHTML;
  252. var videoPage = responseXml.getElementsByTagName("detailsurl")[0].innerHTML;
  253. var sdVideoThumb = "//video.golem.de" + responseXml.getElementsByTagName("medium")[0].getElementsByTagName("teaser")[0].getElementsByTagName("url")[0].innerHTML;
  254. var videoLink = window.document.createElement("a");
  255. videoLink.setAttribute("href", "//video.golem.de" + videoPage);
  256. videoLink.setAttribute("title", videoTitle);
  257. var videoImage = window.document.createElement("img");
  258. videoImage.setAttribute("src", sdVideoThumb);
  259. videoImage.setAttribute("width", "120");
  260. videoImage.setAttribute("alt", videoTitle);
  261. videoLink.appendChild(videoImage);
  262. videoLink.appendChild(window.document.createTextNode(videoTitle));
  263. window.document.getElementById("tfrRelatedVideo" + parentId + "_" + videoId).appendChild(videoLink);
  264. }
  265. });
  266. }
  267. }
  268. }
  269. ReplacePlayers();

QingJ © 2025

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