Manga OnlineViewer Fluid Mode + Lewd Extender

Extension for Manga OnlineViewer Fluid Mode + for 18+ sites, allowing double-page spread viewing for halved images. Sites: Fakku, HBrowse, doujin-moe, hentai2read, luscious, wondersluts,hentaimangaonline, exhentai/g.e-hentai, pururin, hentai4manga, doujinshihentai, hitomi, nhentai, hentaihere, 8muses, Tsumino etc.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name  Manga OnlineViewer Fluid Mode + Lewd Extender
// @description  Extension for Manga OnlineViewer Fluid Mode + for 18+ sites, allowing double-page spread viewing for halved images. Sites: Fakku, HBrowse, doujin-moe, hentai2read, luscious, wondersluts,hentaimangaonline, exhentai/g.e-hentai, pururin, hentai4manga, doujinshihentai, hitomi, nhentai, hentaihere, 8muses, Tsumino etc.
// @version 11.17b6
// @date 2015-11-15
// @author  Tago & sneezemonkey
// @namespace https://greasyfork.org/users/1849-tago
// @require http://code.jquery.com/jquery-2.1.1.min.js
// @require https://greasyfork.org/scripts/10000-manga-onlineviewer-fluid-mode/code/Manga%20OnlineViewer%20Fluid%20Mode%20+.user.js
// @grant  GM_getValue
// @grant  GM_setValue
// @include /https?://www.fakku.net/.+/.+/
// @include /http://www.hbrowse.com/.+/
// @include /http://www.doujin-moe.us/.+/
// @include /http://hentai2read.com/.+/.+//
// @include /http://luscious.net/c/.+/
// @include /http://www.wondersluts.com/.+/
// @include /http://hentaimangaonline.com/image/.+//
// @include /http://exhentai.org/s/.+/.+/
// @include /http://g.e-hentai.org/s/.+/.+/
// @include /http://pururin.com/view/.+/.+/.+/
// @include /http://hentai4manga.com/hentai_manga/.+/.+/
// @include /http://doujinshihentai.com/manga/index.php/.+/
// @include /http://hitomi.la/reader/.+/
// @include /http://nhentai.net/g/.+/.+/
// @include /http://www.8muses.com/picture/.+/.+/.+/.+/
// @include /http://hentaihere.com/m/.+/.+/.+/
// @include /http://tsumino.com/Home/Read/.+/
// @history 11.17 Initial Split with 11.17
// ==/UserScript==

//OnlineViewer
(function ($) {
    var m = [
// == Fakku =======================================================================================================================================
        {
            name: "Fakku",
            url: /fakku.net/,
            run: function () {
                return {
                    title: $(".chapter a:eq(1)").text().trim(),
                    series: $("a.a-series-title:first").attr("href"),
                    quant: $(".drop option:last").val(),
                    prev: "#",
                    next: "#",
                    data: $("#thumbs img, .current-page").attr("src").replace("thumbs", "images").replace(/[0-9]+(\.thumb)?\.jpg$/, ""),
                    page: function (i, addImg, addAltImg) {
						var str = '' + i;
						while (str.length < 3) str = '0' + str;
						addImg(i, this.data + str + ".jpg");
                    }
                };
            }
        },
        // == HBrowser ====================================================================================================================================
        {
            name: "HBrowser",
            url: /hbrowse/,
            run: function () {
                return {
                    title: $('.listTable td.listLong:first').text().trim(),
                    series: window.location.href.match(/.+\/[0-9]+\//),
                    quant: $('td.pageList a, td.pageList strong').length - 1,
                    prev: $("#chapters + table a.listLink").eq($("#chapters + table a.listLink").index($("#chapters + table a.listLink[href='" + window.location.href + "']")) - 1).attr("href"),
                    next: $("#chapters + table a.listLink").eq($("#chapters + table a.listLink").index($("#chapters + table a.listLink[href='" + window.location.href + "']")) + 1).attr("href"),
                    url: function (i) {
                        var str = '' + i;
                        while (str.length < 4) str = '0' + str;
                        return window.location.href + (window.location.href.slice(-1) == "/" ? "": "/") + str;
                    },
                    img: 'td.pageImage a img',
                    before: function () {
                        $('html > head').append($('<style>#main a:visited, #pageMain a:visited { color: darkred !important; }</style>'));
                    }
                };
            }
        },
        // == Doujin-Moe Non-members ========================================================================================================================
        {
            name: "DoujinMoeNM",
            url: /doujin-moe.us/,
            run: function () {
                return {
                    title: $(".title").text(),
                    series: $(".title a").eq(-2).attr("href"),
                    quant: $("#gallery > :not(.thumbs)").length,
                    prev: "#",
                    next: "#",
                    data: $("#gallery > djm:not(.thumbs)"),
                    page: function (i, addImg, addAltImg) {
                        addImg(i, this.data.eq(i - 1).attr("file"));
                    }
                };
            }
        },
        // == Luscious ========================================================================================================================
        {
            name: "Luscious",
            url: /(luscious|wondersluts)/,
            run: function () {
                return {
                    title: $("#main .center h1:first").text().split("|")[0].trim(),
                    series: "#",
                    quant: $(".image > a > img").length,
                    prev: "#",
                    next: $(".next").attr("href"),
                    data: $(".image > a > img"),
                    page: function (i, addImg, addAltImg) {
						addImg(i, this.data.eq(i - 1).attr('src').replace(".640x0", ""));
                    },
                    before: function () {
                        var url = window.location.href;
                        if (url.match("style=blog") && !url.match("position")) {
                            window.location = url.replace(/page\/[0-9]+.+/, "sorted/position/page/1/?style=blog");
                        } else if (url.match("/(pictures/album/.*)/id")) {
                            window.location = url.replace(/(id.*)/, "sorted/position/page/1/?style=blog");
                        } else {
                            $('a.cover').each(function () {
                                var href = $(this).attr('href');
                                if (href.match("/(pictures/album/.*)/id")) {
                                    $(this).attr('href', href.replace(/(id.*)/, "sorted/position/page/1/?style=blog"));
                                }
                            });
                        }
                    }
                };
            }
        },
        // == HentaiMangaOnline ========================================================================================================================
        {
            name: "HentaiMangaOnline",
            url: /hentaimangaonline/,
            run: function () {
                return {
                    title: $(".breadcrumb li:eq(2)").text().trim(),
                    series: $("ul.breadcrumb li a:eq(2)").attr("href"),
                    quant: $("select option").length,
                    prev: "#",
                    next: "#",
                    data: $("select").html(),
                    img: 'a img'
                };
            }
        },
        // == ExHentai ========================================================================================================================
        {
            name: "ExHentai",
            url: /(exhentai|e-hentai)/,
            run: function () {
                return {
                    title: $("#il h1").text().trim(),
                    series: $("div#i5 div.sb a").attr("href"),
                    quant: $(".sn div span:last").text(),
                    prev: "#",
                    next: "#",
                    url: window.location.href,
                    timer: 3000,
                    page: function (i, addImg, addAltImg) {
                        var self = this;
                        $.ajax({
                            type: "GET",
                            url: self.url,
                            dataType: "html",
                            async: false,
                            success: function (html) {				
                                var ref = $(html).find("div#i7 a, #img");
								var src = ref.attr(ref.is("img")?"src":"href");
                                addImg(i,src);
                                addAltImg(i, src+" ?nl=1");
                                self.url = $(html).find("#img").parent().attr("href");
                            }
                        });
                    }
                };
            }
        },
        // == Pururin ========================================================================================================================
        {
            name: "Pururin",
            url: /pururin/,
            run: function () {
                return {
                    title: $(".header-breadcrumbs a:eq(3)").text().trim(),
                    series: $(".header-breadcrumbs a:eq(3)").attr("href"),
                    quant: $(".image-pageSelect option").length,
                    prev: "#",
                    next: "#",
                    data: $(".image-pageSelect").html(),
                    img: "img.b"
                };
            }
        },
        // == hentai4manga ========================================================================================================================
        {
            name: "hentai4manga",
            url: /hentai4manga/,
            run: function () {
                return {
                    title: $(".category-label").text().trim(),
                    series: location.href.replace(/\/\d+\//, '/'),
                    quant: $('select#sl option').size(),
                    prev: "#",
                    next: "#",
                    url: function (i) {
                        return "../" + i + "/";
                    },
                    img: '#textboxContent img'
                };
            }
        },
        // == DoujinshiHentai ========================================================================================================================
        {
            name: "DoujinshiHentai",
            url: /doujinshihentai/,
            run: function () {
                return {
                    title: $(".category-label").text().trim(),
                    series: "http://doujinshihentai.com/series.html",
                    quant: $('#page_last').attr("href").match(/[0-9]+\./),
                    prev: "#",
                    next: "#",
                    data: location.href,
                    url: function (i) {
                        var str = '' + i;
                        while (str.length < 3) str = '0' + str;
                        return this.data.replace("001.",str+".");
                    },
                    img: '.weatimages_bigimage'
                };
            }
        },
		// == hitomi ========================================================================================================================
        {
            name: "hitomi",
            url: /hitomi.la/,
            run: function () {
                return {
                    title: $("title").text().replace("| Hitomi.la","").trim(),
                    series: $(".brand").attr("href"),
                    quant: $("#single-page-select option").length,
                    prev: "#",
                    next: "#",
					data:$(".img-url"),
					page: function (i,addImg, addAltImg) {
                            console.log("Page " + i);
                            addImg(i, this.data.eq(i - 1).text());

                    },
                };
            }
        },
        // == nHentai ========================================================================================================================
        {
            name: "nHentai",
            url: /nhentai/,
            run: function () {
                return {
                    title: $('title').text().split('- Page')[0].trim(),
                    series: $("div#page-container div a").attr("href"),
                    quant: $(".num-pages:first").html(),
                    prev: "#",
                    next: "#",
                    url: function (i) {
                        return "../" + i + "/";
                    },
                    img: '#page-container img'
                };
            }
        },
        // == 8muses ========================================================================================================================
        {
            name: "8muses",
            url: /8muses/,
            run: function () {
                return {
                    title: $('.breadcrumbs li:eq(2) span a').text().trim(),
                    series: $('.breadcrumbs li:eq(2) span a').attr("href"),
                    quant: $(".sel:first option").length,
                    prev: "#",
                    next: "#",
                    data: $(".sel:first option"),
                    img: '#image'
                };
            }
        },
        // == Tsumino ========================================================================================================================
        {
            name: "Tsumino",
            url: /tsumino/,
            run: function () {
                return {
                    title: $('title').text().split('/')[0].trim(),
                    series: $("a:contains('RETURN')").attr("href"),
                    quant: (parseInt($("h1").text().split("of")[1].trim())),
                    prev: "#",
                    next: "#",
                    url: function (i) {
                        var url = window.location.pathname.split('/');
                        return "/Image/Page/"+ url[3] + "/" + i;
                    },
                    page: function(i,addImg,addAltImg) {
                        var self = this;
                        addImg(i, self.url(i))
                    }
                };
            }
        },
        // == hentaihere ========================================================================================================================
        {
            name: "hentaihere",
            url: /hentaihere/,
            run: function () {
                return {
                    title: $('title').text().split('|')[1].trim(),
                    series: $('ul.nav-pills:first li:first a').attr("href"),
                    quant: $("#pageDropdown:first ul li").length,
                    prev: "#",
                    next: "#",
                    url: function(i) {
                        var pathname = window.location.pathname.split('/');
                        return "/" + pathname[1] + "/" + pathname[2] + "/" + pathname[3] + "/" + i + "/";
                    },
                    img: 'img#arf-reader-img'
                };
            }
        }
    ];

    
    if ($(".startbutton").length > 0) {
    $(".startbutton").on("click", function(){
                $.MangaOnlineViewer.start(m);
        $(".startbutton").remove();})
                         } else { 
                $.MangaOnlineViewer.start(m);}

})(jQuery);