NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name HTML5-Video für Golem.de // @namespace tfr // @description Wandelt den Golem.de-eigenen Flash-Player in einen HTML5-Player um. // @author tfr (https://github.com/t-fr/) // @license CC0; https://creativecommons.org/publicdomain/zero/1.0/ // @license MIT license; https://pastebin.com/raw.php?i=4TMeeUXC // @compatible firefox Funktioniert mit Firefox und Greasemonkey // @incompatible chrome Funktioniert nicht mit Chrome und Tampermonkey // @incompatible opera Funktioniert nicht mit Opera und Tampermonkey Beta oder Violent monkey // @oujs:author tfr // @include http://www.golem.de/* // @include https://www.golem.de/* // @include http://video.golem.de/* // @include https://video.golem.de/* // @version 7 // @grant GM_xmlhttpRequest // ==/UserScript== /* This script is dual-licensed under CC0 and the MIT license. * You can choose which one you want to use. * CC0 license: http://creativecommons.org/publicdomain/zero/1.0/deed.en * MIT license: https://pastebin.com/raw.php?i=4TMeeUXC * * Dieses Skript steht sowohl unter CC0 als auch unter der MIT-Lizenz. * Sie können sich aussuchen, welche Lizenz Sie nutzen. * CC0-Lizenz: http://creativecommons.org/publicdomain/zero/1.0/deed.de * MIT-Lizenz: https://pastebin.com/raw.php?i=4TMeeUXC */ /* Version 7: Update license information * Version 6: Probleme mit doppelten Playern und Verzögerungen lösen */ function HTML5VideoDisabled() { var retval = false; try { retval = window.sessionStorage.getItem("tfrNoHTML5Video") == "true"; window.sessionStorage.removeItem("tfrNoHTML5Video"); } catch(e) { retval = window.name.indexOf(";tfrNoHTML5Video") > -1; window.name = window.name.replace(/;tfrNoHTML5Video/g, ""); } return retval; } function ReplacePlayers() { if(!HTML5VideoDisabled()) { var found = false; for(var i = 0; i < window.document.getElementsByTagName("div").length; i++) { if(typeof window.document.getElementsByTagName("div")[i].id !== "undefined" && window.document.getElementsByTagName("div")[i].id.search(/^NVBPlayer[0-9]*$/) >= 0) { found = true; ReplacePlayer(window.document.getElementsByTagName("div")[i].id); } } if(!found) { window.setTimeout(ReplacePlayers, 500) } } } function ReplacePlayer(divId) { divId.match(/^NVBPlayer([0-9]*)$/); var videoId = RegExp.$1; GM_xmlhttpRequest({ method: "GET", url: "//video.golem.de/xml/" + videoId + ".xml", onload: function(response) { var responseXml = new DOMParser().parseFromString(response.responseText, "text/xml"); var videoId = responseXml.getElementsByTagName("id")[0].innerHTML; var sdVideoUrl = "//video.golem.de" + responseXml.getElementsByTagName("medium")[0].getElementsByTagName("url")[0].innerHTML; var sdVideoThumb = "//video.golem.de" + responseXml.getElementsByTagName("medium")[0].getElementsByTagName("teaser")[0].getElementsByTagName("url")[0].innerHTML; var hdVideoAvailable = false; var hdVideoUrl = ""; var hdVideoThumb = ""; if(responseXml.getElementsByTagName("high")[0]) { hdVideoAvailable = true; hdVideoUrl = "//video.golem.de" + responseXml.getElementsByTagName("high")[0].getElementsByTagName("url")[0].innerHTML; hdVideoThumb = "//video.golem.de" + responseXml.getElementsByTagName("high")[0].getElementsByTagName("teaser")[0].getElementsByTagName("url")[0].innerHTML; } var videoElem = window.document.createElement("video"); videoElem.setAttribute("id", "tfrHtml5Video" + videoId); videoElem.setAttribute("controls", "controls"); videoElem.setAttribute("width", "620"); videoElem.setAttribute("height", "349"); videoElem.setAttribute("poster", sdVideoThumb); videoElem.setAttribute("src", sdVideoUrl); videoElem.setAttribute("style", "background-color:black;"); 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);"); videoElem.setAttribute("onmouseout", "javascript:window.document.getElementById(\"tfrHtml5Options" + videoId + "\").style.display = \"none\";"); videoElem.setAttribute("onplay", "javascript:window.document.getElementById(\"tfrHtml5Related" + videoId + "\").style.display = \"none\";"); videoElem.setAttribute("onseeked", "javascript:window.document.getElementById(\"tfrHtml5Related" + videoId + "\").style.display = \"none\";"); videoElem.setAttribute("onended", "javascript:window.document.getElementById(\"tfrHtml5Related" + videoId + "\").style.display = \"block\";"); var videoOptionBox = window.document.createElement("div"); videoOptionBox.setAttribute("id", "tfrHtml5Options" + videoId); 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;"); videoOptionBox.setAttribute("onmouseover", "javascript:if(typeof tfrHtml5Timeout" + videoId + " !== \"undefined\") { window.clearTimeout(tfrHtml5Timeout" + videoId + "); }window.document.getElementById(\"tfrHtml5Options" + videoId + "\").style.display = \"block\";"); videoOptionBox.setAttribute("onmouseout", "javascript:window.document.getElementById(\"tfrHtml5Options" + videoId + "\").style.display = \"none\";"); var relatedVideoBox = window.document.createElement("div"); relatedVideoBox.setAttribute("id", "tfrHtml5Related" + videoId); 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;"); var relatedVideoTable = window.document.createElement("table"); relatedVideoTable.setAttribute("id", "tfrHtml5Related" + videoId + "Table"); var relatedVideoRow0 = window.document.createElement("tr"); var relatedVideoRow1 = window.document.createElement("tr"); var relatedVideoCell0 = window.document.createElement("td"); var relatedVideoCell1 = window.document.createElement("td"); var relatedVideoCell2 = window.document.createElement("td"); var relatedVideoCell3 = window.document.createElement("td"); var relatedVideoCell4 = window.document.createElement("td"); var relatedVideoCell5 = window.document.createElement("td"); var relatedVideoCell6 = window.document.createElement("td"); var relatedVideoCell7 = window.document.createElement("td"); var relatedVideoCell8 = window.document.createElement("td"); var relatedVideoCell9 = window.document.createElement("td"); relatedVideoCell0.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell1.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell2.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell3.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell4.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell5.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell6.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell7.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell8.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell9.setAttribute("class", "tfrRelatedVideo"); relatedVideoCell0.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell1.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell2.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell3.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell4.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell5.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell6.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell7.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell8.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); relatedVideoCell9.setAttribute("style", "border:none; text-align:center; margin:0px; padding:2px;"); if(responseXml.getElementsByTagName("relatedvideo")[0]) { relatedVideoCell0.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[0].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[1]) { relatedVideoCell1.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[1].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[2]) { relatedVideoCell2.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[2].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[3]) { relatedVideoCell3.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[3].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[4]) { relatedVideoCell4.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[4].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[5]) { relatedVideoCell5.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[5].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[6]) { relatedVideoCell6.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[6].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[7]) { relatedVideoCell7.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[7].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[8]) { relatedVideoCell8.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[8].getElementsByTagName("id")[0].innerHTML); } if(responseXml.getElementsByTagName("relatedvideo")[9]) { relatedVideoCell9.setAttribute("id", "tfrRelatedVideo" + videoId + "_" + responseXml.getElementsByTagName("relatedvideo")[9].getElementsByTagName("id")[0].innerHTML); } relatedVideoRow0.appendChild(relatedVideoCell0); relatedVideoRow0.appendChild(relatedVideoCell1); relatedVideoRow0.appendChild(relatedVideoCell2); relatedVideoRow0.appendChild(relatedVideoCell3); relatedVideoRow0.appendChild(relatedVideoCell4); relatedVideoRow1.appendChild(relatedVideoCell5); relatedVideoRow1.appendChild(relatedVideoCell6); relatedVideoRow1.appendChild(relatedVideoCell7); relatedVideoRow1.appendChild(relatedVideoCell8); relatedVideoRow1.appendChild(relatedVideoCell9); relatedVideoTable.appendChild(relatedVideoRow0); relatedVideoTable.appendChild(relatedVideoRow1); relatedVideoBox.appendChild(relatedVideoTable); if(hdVideoAvailable) { var hdOnLink = window.document.createElement("a"); hdOnLink.setAttribute("id", "tfrHtml5Option" + videoId + "HdOn"); 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;"); hdOnLink.setAttribute("style", "color:white;"); hdOnLink.appendChild(window.document.createTextNode("HD ein")); videoOptionBox.appendChild(hdOnLink); var hdOffLink = window.document.createElement("a"); hdOffLink.setAttribute("id", "tfrHtml5Option" + videoId + "HdOff"); 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;"); hdOffLink.setAttribute("style", "color:white; display:none;"); hdOffLink.appendChild(window.document.createTextNode("HD aus")); videoOptionBox.appendChild(hdOffLink); videoOptionBox.appendChild(window.document.createTextNode(" \u00B7 ")); } var noHtml5Link = window.document.createElement("a"); noHtml5Link.setAttribute("id", "tfrHtml5Option" + videoId + "NoHTML5"); noHtml5Link.setAttribute("onclick", "javascript:try {window.sessionStorage.setItem(\"tfrNoHTML5Video\", \"true\");} catch(e) {window.name += \";tfrNoHTML5Video\";} window.location.reload(); return false;"); noHtml5Link.setAttribute("style", "color:white;"); noHtml5Link.appendChild(window.document.createTextNode("Kein HTML5")); videoOptionBox.appendChild(noHtml5Link); if(window.document.getElementById("NVBPlayer" + videoId + "video")) { window.document.getElementById("NVBPlayer" + videoId + "video").parentNode.removeChild(window.document.getElementById("NVBPlayer" + videoId + "video")); } if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppdisplay")[0]) { window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppdisplay")[0]); } if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppbuffering")[0]) { window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppbuffering")[0]); } if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppstart")[0]) { window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppstart")[0]); } if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pplogo")[0]) { window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pplogo")[0]); } if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppcontrols")[0]) { window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("ppcontrols")[0]); } if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pprelated")[0]) { window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pprelated")[0]); } if(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pppostertitle")[0]) { window.document.getElementById("NVBPlayer" + videoId).removeChild(window.document.getElementById("NVBPlayer" + videoId).getElementsByClassName("pppostertitle")[0]); } window.document.getElementById("NVBPlayer" + videoId).appendChild(videoElem); window.document.getElementById("NVBPlayer" + videoId).appendChild(videoOptionBox); window.document.getElementById("NVBPlayer" + videoId).appendChild(relatedVideoBox); FillRelatedVideos(); } }); } function FillRelatedVideos() { for(var i = 0; i < window.document.getElementsByClassName("tfrRelatedVideo").length; i++) { if(typeof window.document.getElementsByClassName("tfrRelatedVideo")[i].id !== "undefined" && window.document.getElementsByClassName("tfrRelatedVideo")[i].id.search(/^tfrRelatedVideo[0-9]*_[0-9]*$/) >= 0) { var elemId = window.document.getElementsByClassName("tfrRelatedVideo")[i].id elemId.match(/^tfrRelatedVideo([0-9]*)_([0-9]*)$/); parentId = RegExp.$1; var videoId = RegExp.$2; GM_xmlhttpRequest({ method: "GET", url: "//video.golem.de/xml/" + videoId + ".xml", onload: function(response) { var responseXml = new DOMParser().parseFromString(response.responseText, "text/xml"); var videoId = responseXml.getElementsByTagName("id")[0].innerHTML; var videoTitle = responseXml.getElementsByTagName("title")[0].innerHTML; var videoPage = responseXml.getElementsByTagName("detailsurl")[0].innerHTML; var sdVideoThumb = "//video.golem.de" + responseXml.getElementsByTagName("medium")[0].getElementsByTagName("teaser")[0].getElementsByTagName("url")[0].innerHTML; var videoLink = window.document.createElement("a"); videoLink.setAttribute("href", "//video.golem.de" + videoPage); videoLink.setAttribute("title", videoTitle); var videoImage = window.document.createElement("img"); videoImage.setAttribute("src", sdVideoThumb); videoImage.setAttribute("width", "120"); videoImage.setAttribute("alt", videoTitle); videoLink.appendChild(videoImage); videoLink.appendChild(window.document.createTextNode(videoTitle)); window.document.getElementById("tfrRelatedVideo" + parentId + "_" + videoId).appendChild(videoLink); } }); } } } ReplacePlayers();