Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if (typeof jQuery === "undefined" || parseFloat(jQuery.fn.jquery,10) < 1.8){
- throw new Error("jQuery v1.8+ must be loaded in the page for the script to work.")
- }
- var once = function(fn, context){
- var i=0;
- return function(){
- if (i === 0){
- i++;
- return fn.apply(context, arguments);
- }
- throw new Error("Callback has been already called!");
- };
- };
- var slice = [].slice;
- var forever = function(fn, callback, args, context) {
- if (typeof args === "undefined" || args === null){
- args = [];
- }
- if (typeof args !== "object" || args.constructor !== Array){
- args = [args];
- }
- var i=0;
- var next = function(error){
- i++;
- if (error !== null || error !== undefined && error){
- return callback.apply(context, arguments)
- }
- var others = slice.call(arguments,1); // args to next function.
- return fn.apply(context, [once(next), i].concat(others))
- };
- return fn.apply(context, [once(next), i].concat(args))
- };
- var CHAPTERURL_REGEX = /(http:\/\/|http:\/\/www\.)(mangahere.co\/manga\/[^\/]+\/[^\/]+\/[^\/]+)(?:\/\d+\.html|\/)?$/;
- var MangaHereURLParser = (function() {
- MangaHereURLParser.name = 'MangaHereURLParser';
- function MangaHereURLParser(baseURL) {
- this.template = null;
- this.template = this.getTemplate(baseURL);
- this.startPage = this.parse(baseURL);
- }
- MangaHereURLParser.prototype.parse = function(str) {
- var match;
- if (!CHAPTERURL_REGEX.test(str)) {
- throw new Error("ChapterURL doesn't match the format.");
- }
- match = CHAPTERURL_REGEX.exec(str);
- if (match[3] === void 0) match[3] = "1";
- return {
- href: "http://www." + match[2] + "/" + match[3] + ".html",
- index: parseInt(match[3], 10) - 1
- };
- };
- MangaHereURLParser.prototype.getTemplate = function(str) {
- var match;
- if (!CHAPTERURL_REGEX.test(str)) {
- throw new Error("ChapterURL doesn't match the format.");
- }
- match = CHAPTERURL_REGEX.exec(str);
- return "http://www." + match[2] + "/#{@}.html";
- };
- MangaHereURLParser.prototype.getPage = function(n) {
- return {
- index: n,
- href: this.template.replace(/#\{@\}/g, n + 1)
- };
- };
- return MangaHereURLParser;
- })();
- var urlParser = new MangaHereURLParser("http://www.mangahere.co/manga/ge_good_ending/v13/c136/"); // change url here.
- var chapter = {name: null, length: null};
- var pages = [];
- forever(function(next, i, page) {
- $.get(page.href, function(body, status, xhr){
- var jQ = $.parseHTML(body, true);
- if (i===0){
- chapter.length = $(jQ).find("select[onchange='change_page(this)']").eq(0).children("option").length;
- console.log("Chapter length added.");
- chapter.name = $(jQ).find("#top_chapter_list>option:selected").text();
- console.log("Chapter name added.");
- }
- pages.push($(jQ).find("img#image").attr("src"));
- console.log("Page - " +( page.index + 1)+ " added.");
- if (page.index >= (chapter.length-1)){
- var error = new Error("End");
- error.code = 214;
- return next(error);
- }
- pages.push($(jQ).find("script+img").attr("src"));
- console.log("Page - " +( page.index + 2)+ " added.");
- if (page.index >= (chapter.length-2)){
- var error = new Error("End");
- error.code = 214;
- return next(error);
- }
- return next(null, urlParser.getPage(page.index+2));
- });
- }, function(error){
- if (error.code === 214){
- return console.log("Finished gathering pages.");
- }
- return console.error(error);
- } , urlParser.startPage)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement