// ==UserScript== // @name MangaReader Easy Viewing // @namespace NoxTox // @description Formats MangaReader to view your manga easier // @include http://www.mangareader.net/*/* // ==/UserScript== if (document.evaluate('//select[@id="pageMenu"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.selectedIndex == 0) { var chapters = document.evaluate('//select[@id="chapterMenu"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; var firstIndex = unsafeWindow.document.chapterno; var currentIndex = firstIndex; var numPages = document.evaluate('//select[@id="pageMenu"]/option', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null).snapshotLength; var isrc = document.evaluate('//img[@id="img"]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.src; var series = document.evaluate('//h1/a', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; var numLoaded = 0; var blockLoad = true; var loadAll = false; if (isrc.substring(isrc.lastIndexOf("/")+1).indexOf("_") > -1) { var isrc1 = isrc.substring(0, isrc.lastIndexOf("/")+1); var isrc2 = isrc.substring(isrc.lastIndexOf("/")+1, isrc.lastIndexOf("_")); var isrc3 = isrc.substring(isrc.lastIndexOf("_")); } else { var isrc1 = isrc.substring(0, isrc.lastIndexOf("-")+1); var isrc2 = isrc.substring(isrc.lastIndexOf("-")+1, isrc.lastIndexOf(".")); var isrc3 = isrc.substring(isrc.lastIndexOf(".")); } document.getElementsByTagName("head")[0].innerHTML = ""; document.body.innerHTML = ""; document.title = series.innerHTML.replace("Manga", "") + "@ Mangareader Easy Viewing"; addStyle('body {margin: 0px; text-align:center; background-color:black;} #content {width:'+ (window.innerWidth - 247) +'px; margin-left:230px; color:#AAAAAA;} #menudiv {position:fixed; left:0px; top:0px; height:98%; padding:5px; overflow:hidden; text-align:left;} a {color:red; font-size: 14px} #menudiv a:hover {background-color:red; color:black;} p {color:red; font-weight:bold; margin:0px};'); chapters.style.cssFloat = "none"; chapters.style.width = "230px"; chapters.style.backgroundColor = "black"; chapters.style.color = "red"; d = document.createElement("div"); d.id = "menudiv"; var a1 = document.createElement("a"); a1.href = "/"; a1.innerHTML = "Homepage"; d.appendChild(a1); d.appendChild(document.createElement("br")); var a2 = document.createElement("a"); a2.href = series.href; a2.innerHTML = series.innerHTML + " Series Page"; d.appendChild(a2); d.appendChild(document.createElement("br")); d.appendChild(chapters); d.appendChild(document.createElement("br")); document.body.appendChild(d); var contents = document.createElement("div"); contents.id="content"; document.body.appendChild(contents); unsafeWindow.document.onkeydown = null; document.addEventListener("keydown", function(e) { if (e.keyCode == 32 || e.keyCode == 40) //spacebar, "down" { var scroller = setInterval("scrollBy(0,25)", 3); setTimeout("clearInterval("+scroller+")", 125); e.preventDefault(); } else if (e.keyCode == 38) //"up" { var scroller = setInterval("scrollBy(0,-25)", 3); setTimeout("clearInterval("+scroller+")", 125); e.preventDefault(); } else if (e.keyCode == 76) loadAll = !loadAll; }, false); var sI = setInterval(function() { if (chapters && chapters.childNodes.length > Math.max(currentIndex-2, 0)) { preloadChapter(); if (currentIndex < chapters.length) setInterval(function () { if (!blockLoad && (document.body.clientHeight-window.pageYOffset-window.innerHeight < 15000 || loadAll || currentIndex == firstIndex) && currentIndex < chapters.length) { blockLoad = true; loadNextChapter(currentIndex++); } }, 3000); clearInterval(sI); } }, 250); } //Functions var rxp1 = /<select id="pageMenu" .+?>((?:\s*<option .+?>[^<]+<\/option>)+\s*)<\/select>/; var rxp2 = /<img .+? src="(.+?)" .+? \/>/; function preloadChapter() { var aa= document.createElement("a"); aa.name = currentIndex; contents.appendChild(aa); var ar = document.createElement("a"); ar.href = "#" + currentIndex; ar.innerHTML = "Chapter " + currentIndex; d.appendChild(ar); d.appendChild(document.createElement("br")); loadPage(0); } function loadPage(iter) { var imgNode = document.createElement("img"); imgNode.src = isrc1 + isrc2 + isrc3; imgNode.name = isrc2; imgNode.addEventListener("error", ierr, false); imgNode.addEventListener("load", iload, false); var imgPage = document.createElement("p"); imgPage.innerHTML = "Chapter " + currentIndex; imgPage.className = "unpaginated"; contents.appendChild(imgPage); contents.appendChild(imgNode); contents.appendChild(document.createElement("hr")); isrc2++; if (numLoaded < numPages && iter < numPages*2 + 10) setTimeout(function () {loadPage(++iter);}, 100); else { if (numLoaded < numPages) GM_log("Note: Stopped preloading images based on preset limit. # pages loaded: " + numLoaded + ", # pages expected: " + numPages + ", preset limit: " + iter); unBlock(); } } function loadNextChapter(chapterIndex) { GM_xmlhttpRequest({ method: 'GET', url: chapters.childNodes[chapterIndex].value, onload: function(responseDetails) { if (responseDetails.status == 200) { numPages = responseDetails.responseText.match(rxp1)[1].split("<option").length-1; isrc = responseDetails.responseText.match(rxp2)[1]; if (isrc.substring(isrc.lastIndexOf("/")+1).indexOf("_") > -1) { isrc1 = isrc.substring(0, isrc.lastIndexOf("/")+1); isrc2 = isrc.substring(isrc.lastIndexOf("/")+1, isrc.lastIndexOf("_")); isrc3 = isrc.substring(isrc.lastIndexOf("_")); } else { isrc1 = isrc.substring(0, isrc.lastIndexOf("-")+1); isrc2 = isrc.substring(isrc.lastIndexOf("-")+1, isrc.lastIndexOf(".")); isrc3 = isrc.substring(isrc.lastIndexOf(".")); } preloadChapter(); } else { GM_log("xmlHttpRequest Loaded, Failed: " + responseDetails.statusText); currentIndex--; } }, onerror: function(responseDetails) { GM_log("xmlHttpRequest Error, Failed: " + responseDetails.statusText); currentIndex--; blockLoad = false; } }); } function ierr() { this.removeEventListener("error", ierr, false); this.removeEventListener("load", iload, false); this.parentNode.removeChild(this.nextSibling); this.parentNode.removeChild(this.previousSibling); this.parentNode.removeChild(this); }; function iload() { numLoaded++; this.removeEventListener("error", ierr, false); this.removeEventListener("load", iload, false); } function unBlock() { var unpaginated = document.evaluate('//p[@class="unpaginated"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); if (unpaginated.snapshotLength > numPages) setTimeout(unBlock, 1000); else { if (numLoaded != numPages) GM_log("Warning: Number of pages loaded (" + numLoaded + ") does not equal number of pages expected (" + numPages + ") for chapter " + currentIndex + "."); for (var i=0; i<unpaginated.snapshotLength; i++) { unpaginated.snapshotItem(i).innerHTML = "Chapter " + currentIndex + " Page " + (i+1) + "/" + numPages; unpaginated.snapshotItem(i).className = ""; } if (currentIndex == chapters.length) contents.appendChild(document.createTextNode("~End of Series~")); else { numLoaded = 0; blockLoad = false; } } } function addStyle(css) { var head = document.evaluate('//head', document, null, XPathResult.ANY_UNORDERED_NODE_TYPE, null).singleNodeValue; if (!head) return; var style = document.createElement('style'); style.type = 'text/css'; style.innerHTML = css; head.appendChild(style); } var SUC_script_num = 84045; try{function updateCheck(forced){if ((forced) || (parseInt(GM_getValue('SUC_last_update', '0')) + 432000000 <= (new Date().getTime()))){try{GM_xmlhttpRequest({method: 'GET',url: 'http://userscripts.org/scripts/source/'+SUC_script_num+'.meta.js?'+new Date().getTime(),headers: {'Cache-Control': 'no-cache'},onload: function(resp){var local_version, remote_version, rt, script_name;rt=resp.responseText;GM_setValue('SUC_last_update', new Date().getTime()+'');remote_version=parseInt(/@uso:version\s*(.*?)\s*$/m.exec(rt)[1]);local_version=parseInt(GM_getValue('SUC_current_version', '-1'));if(local_version!=-1){script_name = (/@name\s*(.*?)\s*$/m.exec(rt))[1];GM_setValue('SUC_target_script_name', script_name);if (remote_version > local_version){if(confirm('There is an update available for the Greasemonkey script "'+script_name+'."\nWould you like to go to the install page now?')){GM_openInTab('http://userscripts.org/scripts/show/'+SUC_script_num);GM_setValue('SUC_current_version', remote_version);}}else if (forced)alert('No update is available for "'+script_name+'."');}else GM_setValue('SUC_current_version', remote_version+'');}});}catch (err){if (forced)alert('An error occurred while checking for updates:\n'+err);}}}GM_registerMenuCommand(GM_getValue('SUC_target_script_name', '???') + ' - Manual Update Check', function(){updateCheck(true);});updateCheck(false);}catch(err){};
Mozilla add on,User script,Grease Monkey Script, greasemonkey userscripts, updater userscripts mafia wars userscripts mafia wars autoplayer userscripts mafia wars wall userscripts scripts userscripts travian greasemonkey greasemonkey download greasemonkey facebook greasemonkey tutorial greasemonkey youtube greasemonkey travian greasemonkey chrome greasemonkey mafia wars greasemonkey mafia wars autoplayer
Saturday, January 22, 2011
Automatically loads entire SERIES (not just one chapter!) on ONE page. Scroll down to automatically load new chapters! Works on Firefox and Chrome.
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment