Greasy Fork is available in English.

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.8.3 - 2015/09/25 - moved all settings into settings menu, no more greasymonkey menu; you can now choose exactly how many pages to load at a time
新: v1.8.4 - 2015/09/28 - added mangachapter.me, kawaii.ca/reader, http://manga.famatg.com, http://www.demonicscans.com/FoOlSlide/directory, http://kobato.hologfx.com/reader, http://reader.cafeconirst.com, http://reader.evilflowers.com, http://manga.inpowerz.com, http://necron99scans.com/reader, http://onetimescans.com/foolslide/directory, http://reader.psscans.info

  • --- /tmp/diffy20250218-594295-ambqbm 2025-02-18 20:03:18.930285354 +0000
  • +++ /tmp/diffy20250218-594295-8ulesn 2025-02-18 20:03:18.931285380 +0000
  • @@ -1,7 +1,7 @@
  • // ==UserScript==
  • // @name Manga Loader
  • // @namespace http://www.fuzetsu.com/MangaLoader
  • -// @version 1.8.3
  • +// @version 1.8.4
  • // @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, loads quickly and works on mobile devices through bookmarklet
  • // @copyright 2014+, fuzetsu
  • // @noframes
  • @@ -46,6 +46,9 @@
  • // @match http://www.mangainn.me/manga/chapter/*
  • // @match http://*.kukudm.com/comiclist/*/*
  • // @match http://www.mangamap.com/*/*
  • +// @match http://www.mangachapter.me/*/*/*.html
  • +// @match http://kawaii.ca/reader/*
  • +// @match http://lonemanga.com/manga/*/*
  • // -- FOOLSLIDE START
  • // @match http://manga.redhawkscans.com/reader/read/*
  • // @match http://reader.s2smanga.com/read/*
  • @@ -61,6 +64,15 @@
  • // @match http://mangaichiscans.mokkori.fr/fs/read/*
  • // @match http://reader.shoujosense.com/read/*
  • // @match http://www.friendshipscans.com/slide/read/*
  • +// @match http://manga.famatg.com/read/*
  • +// @match http://www.demonicscans.com/FoOlSlide/read/*
  • +// @match http://reader.psscans.info/read/*
  • +// @match http://onetimescans.com/foolslide/read/*
  • +// @match http://necron99scans.com/reader/read/*
  • +// @match http://manga.inpowerz.com/read/*
  • +// @match http://reader.evilflowers.com/read/*
  • +// @match http://reader.cafeconirst.com/read/*
  • +// @match http://kobato.hologfx.com/reader/read/*
  • // -- FOOLSLIDE END
  • // ==/UserScript==
  • @@ -88,7 +100,7 @@
  • , curpage: '#page_select' // css selector to get the current page. usually the same as numPages if it's a select element
  • , nextchap: '#next_chap' // css selector to get the link to the next chapter
  • , prevchap: '#prev_chap' // same as above except for previous
  • - , wait: 3000 // how many ms to wait before auto loading (to wait for elements to load)
  • + , wait: 3000 // how many ms to wait before auto loading (to wait for elements to load), or a css selector to keep trying until it returns an elem
  • , pages: function(next_url, current_page_number, callback, extract_function) {
  • // gets called requesting a certain page number (current_page_number)
  • // to continue loading execute callback with img to append as first parameter and next url as second parameter
  • @@ -286,7 +298,7 @@
  • xhr.send();
  • }
  • }, {
  • - name: 'senmanga',
  • + name: 'senmanga-raw',
  • match: "^http://raw\\.senmanga\\.com/[^/]*/[^/]*/[0-9]*",
  • img: function() {
  • return W.new_image;
  • @@ -556,7 +568,7 @@
  • invchap: true
  • }, {
  • name: 'foolslide',
  • - match: "^(http://manga.redhawkscans.com/reader/read/.+|http://reader.s2smanga.com/read/.+|http://casanovascans.com/read/.+|http://reader.vortex-scans.com/read/.+|http://reader.japanzai.com/read/.+|http://reader.roseliascans.com/read/.+|http://mangatopia.net/slide/read/.+|http://www.twistedhelscans.com/read/.+|http://reader.sensescans.com/reader/read/.+|http://reader.kireicake.com/reader/read/.+|http://substitutescans.com/reader/read/.+|http://mangaichiscans.mokkori.fr/fs/read/.+|http://reader.shoujosense.com/read/.+|http://www.friendshipscans.com/slide/read/.+)",
  • + match: "^(http://manga.redhawkscans.com/reader/read/.+|http://reader.s2smanga.com/read/.+|http://casanovascans.com/read/.+|http://reader.vortex-scans.com/read/.+|http://reader.japanzai.com/read/.+|http://reader.roseliascans.com/read/.+|http://mangatopia.net/slide/read/.+|http://www.twistedhelscans.com/read/.+|http://reader.sensescans.com/reader/read/.+|http://reader.kireicake.com/reader/read/.+|http://substitutescans.com/reader/read/.+|http://mangaichiscans.mokkori.fr/fs/read/.+|http://reader.shoujosense.com/read/.+|http://www.friendshipscans.com/slide/read/.+|http://manga.famatg.com/read/.+|http://www.demonicscans.com/FoOlSlide/read/.+|http://necron99scans.com/reader/read/.+|http://www.demonicscans.com/FoOlSlide/read/.+|http://reader.psscans.info/read/.+|http://onetimescans.com/foolslide/read/.+|http://necron99scans.com/reader/read/.+|http://manga.inpowerz.com/read/.+|http://reader.evilflowers.com/read/.+|http://reader.cafeconirst.com/read/.+|http://kobato.hologfx.com/reader/read/.+)",
  • img: function() {
  • return W.pages[W.current_page].url;
  • },
  • @@ -652,6 +664,45 @@
  • curpage: function() {
  • return parseInt(document.body.textContent.match(/第([0-9]+)页/)[1]);
  • }
  • +}, {
  • + name: 'mangachapter',
  • + match: "http://www\\.mangachapter\\.me/[^/]+/[^/]+/[^/]+.html",
  • + img: '#mangaImg, #viewer > table > tbody > tr > td:nth-child(1) > a:nth-child(2) > img',
  • + next: '.page-select + a.button-page',
  • + numpages: '.page-select select',
  • + curpage: '.page-select select',
  • + invchap: true,
  • + nextchap: '#top_chapter_list',
  • + prevchap: '#top_chapter_list',
  • + wait: '#top_chapter_list'
  • +}, {
  • + name: 'kawaii',
  • + match: "http://kawaii.ca/reader/.+",
  • + img: '.picture',
  • + next: 'select[name=page] + a',
  • + numpages: 'select[name=page]',
  • + curpage: 'select[name=page]',
  • + nextchap: function(prev) {
  • + var next = extractInfo('select[name=chapter]', {type:'value', val: (prev ? -1 : 1)});
  • + if(next) return location.href.replace(/\/reader\/([^/]+)(\/.+)?$/, '/reader/$1/' + next);
  • + },
  • + prevchap: function() {
  • + return this.nextchap(true);
  • + }
  • +}, {
  • + name: 'lonemanga',
  • + match: "http://lonemanga.com/manga/[^/]+/[^/]+",
  • + img: '#imageWrapper img',
  • + next: '#imageWrapper a',
  • + numpages: '.viewerPage',
  • + curpage: '.viewerPage',
  • + nextchap: function(prev) {
  • + var next = extractInfo('.viewerChapter', {type:'value', val: (prev ? 1 : -1)});
  • + if(next) return location.href.replace(/\/manga\/([^/]+)\/.+$/, '/manga/$1/' + next);
  • + },
  • + prevchap: function() {
  • + return this.nextchap(true);
  • + }
  • }];
  • var log = function(msg, type) {
  • @@ -1236,6 +1287,15 @@
  • log('Condition fulfilled, loading');
  • clearInterval(intervalId);
  • loadManga(imp);
  • + }
  • + }, 200);
  • + } else if(typeof imp.wait === 'string') {
  • + log('Waiting for load condition to be fulfilled');
  • + intervalId = setInterval(function() {
  • + if (getEl(imp.wait)) {
  • + log('Condition fulfilled, loading');
  • + clearInterval(intervalId);
  • + loadManga(imp);
  • }
  • }, 200);
  • } else {