(function() { /** * Check and set a global guard variable. * If this content script is injected into the same page again, * it will do nothing next time. */ if (window.hasRun) { console.log("already run"); return; } window.hasRun = true; function xhrdoc(url, type, cb) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'document'; xhr.overrideMimeType('text/' + type); xhr.onload = function () { if (xhr.readyState === xhr.DONE) { if (xhr.status === 200) { var resp = (type=="xml") ? xhr.responseXML : xhr.response; cb(resp); } } }; xhr.send(null); } function applyxsl(xmlin, xsl, node, doc=document) { var xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); var fragment = xsltProcessor.transformToFragment(xmlin, doc); node.appendChild(fragment); } function formatdescriptions() { // unescapes descriptions to html var tohtml = document.getElementsByClassName("feedEntryContent"); for (var i = 0; i 0) i = Math.floor( Math.log(size) / Math.log(1024) ); return ( size / Math.pow(1024, i) ).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]; }; var encsz = document.getElementsByClassName("enclosureSize"); for (var i = 0; iFeed URL'; } function detect() { var rootNode = document.getRootNode().documentElement; // for chrome var d = document.getElementById("webkit-xml-viewer-source-xml"); if (d && d.firstChild) rootNode = d.firstChild; const rootName = rootNode.nodeName.toLowerCase(); var isRSS1 = false; if (rootName == "rdf" || rootName == "rdf:rdf") { if (rootNode.attributes['xmlns']) { isRSS1 = (rootNode.attributes['xmlns'].nodeValue.search('rss') > 0) } } if ( rootName == "rss" || rootName == "channel" // rss2 || rootName == "feed" // atom || isRSS1 ) { return rootNode; } return null; } function extensionimages() { var extimgs = document.getElementsByClassName("extImg"); for (var i = 0; i