Manga Loader (unmaintained)

Support for over 70 sites! Loads manga chapter into one page in a long strip format, supports switching chapters, minimal script with no dependencies, easy to implement new sites, loads quickly and works on mobile devices through bookmarklet

旧版: v1.4.15 - 2015-01-18 - added mangawall and manag.animeA
新版: v1.4.16 - 2015-01-21 - added kissmanga and spectrum scans

  • --- /tmp/diffy20250427-3885317-g0ek1k 2025-04-27 21:18:14.199603700 +0000
  • +++ /tmp/diffy20250427-3885317-wowdc6 2025-04-27 21:18:14.199603700 +0000
  • @@ -1,7 +1,7 @@
  • // ==UserScript==
  • // @name Manga Loader
  • // @namespace http://www.fuzetsu.com/MangaLoader
  • -// @version 1.4.15
  • +// @version 1.4.16
  • // @description Loads manga chapter into one page in a long strip format, supports switching chapters and works for a variety of sites, minimal script with no dependencies, easy to implement new sites
  • // @copyright 2014+, fuzetsu
  • // @noframes
  • @@ -36,6 +36,8 @@
  • // @match http://www.onemanga.me/*/*
  • // @match http://mangawall.com/manga/*/*
  • // @match http://manga.animea.net/*
  • +// @match http://kissmanga.com/Manga/*/*
  • +// @match http://view.thespectrum.net/series/*
  • // ==/UserScript==
  • // don't bother running if in a frame
  • if (window.top !== window.self) return;
  • @@ -337,7 +339,7 @@
  • img: '#image > img',
  • next: '#image > img',
  • numpages: function() {
  • - return unsafeWindow.pages.length;
  • + return W.pages.length;
  • },
  • curpage: function() {
  • return parseInt(getEl('#image > div.pages-list > a.page.active').textContent);
  • @@ -345,7 +347,7 @@
  • nextchap: '#next_link',
  • prevchap: '#prev_link',
  • pages: function(url, num, cb, ex) {
  • - url = unsafeWindow.pages[num - 1].image;
  • + url = W.pages[num - 1].image;
  • cb(url, url);
  • }
  • }, { // OneManga
  • @@ -394,6 +396,40 @@
  • prevchap: function() {
  • return this.nextchap(true);
  • }
  • +}, { // Kissmanga
  • + match: "^http://kissmanga\\.com/Manga/[^/]*/.+",
  • + img: '#imgCurrent',
  • + next: '#imgCurrent',
  • + numpages: function() {
  • + return W.lstImages.length;
  • + },
  • + curpage: function() {
  • + return W.currImage + 1;
  • + },
  • + nextchap: '#selectChapter',
  • + prevchap: '#selectChapter',
  • + pages: function(url, num, cb, ex) {
  • + cb(W.lstImages[num - 1], num);
  • + }
  • +}, { // the spectrum scans
  • + match: "^http://view\\.thespectrum\\.net/series/[^\\.]+\\.html\\?ch=[^&]*&page=[0-9]+",
  • + img: '#mainimage',
  • + next: '#mainimage',
  • + numpages: '.selectpage',
  • + curpage: '.selectpage',
  • + nextchap: function(prev) {
  • + var next = extractInfo('.selectchapter', {type: 'value', val: prev ? -1 : 1});
  • + if(next) {
  • + return window.location.href.replace(/ch=.+/, 'ch=' + next + '&page=1');
  • + }
  • + },
  • + prevchap: function() {
  • + return this.nextchap(true);
  • + },
  • + pages: function(url, num, cb, ex) {
  • + url = url.replace(/[^\.\/]+\.([a-z]+)$/, ('00' + num).slice(-3) + '.$1');
  • + cb(url, url);
  • + }
  • }];
  • var log = function(msg, type) {
  • @@ -705,7 +741,7 @@
  • count += 1;
  • lastUrl = url;
  • if (imp.pages) {
  • - imp.pages(url, curPage, addAndLoad, ex);
  • + imp.pages(url, curPage, addAndLoad, ex, getPageInfo);
  • } else {
  • xhr.open('get', url);
  • xhr.onload = getPageInfo;
  • @@ -719,7 +755,7 @@
  • pagesLoaded = curPage - 1,
  • loadInterval = 10,
  • lastUrl, UI, resumeUrl;
  • +
  • if (!imgUrl || !nextUrl) {
  • log('failed to retrieve ' + (!imgUrl ? 'image url' : 'next page url'), 'exit');
  • }