jul11co-mangadl
Version:
Jul11co Web Manga Downloader
177 lines (144 loc) • 6 kB
JavaScript
var path = require('path');
var urlutil = require('url');
var utils = require('jul11co-wdt').Utils;
module.exports = {
name: 'PervEden',
website: 'http://www.perveden.com',
match: function(link, options) {
return /perveden\.com/g.test(link);
},
dispatch: function(saver, $, page, options, callback) {
if (options.group_by_site && !options.orig_output_dir) {
options.orig_output_dir = options.output_dir;
options.output_dir = path.join(options.orig_output_dir, 'PervEden');
saver.setMangaOutputDir(options.output_dir);
}
var state = saver.getStateData(page.url);
if (state && state.done && !options.refresh_info) {
if (options.cbz && state.chapter_images) {
return saver.createComicFile(page.output_dir, state.chapter_images, callback);
} else {
return callback();
}
}
if ($('#pageSelect').length && $('#imageBox').length) {
// saver.saveHtmlSync(path.join(options.output_dir, 'index-debug.html'), $.html());
var chapter_script = '';
$('script').each(function() {
chapter_script += $(this).text();
});
if (!chapter_script) {
console.log('No chapter script available');
return callback();
}
var tmp_images_code = utils.extractSubstring(chapter_script, 'var pages = [{', '}]');
// if (options.debug) console.log(tmp_images_code);
tmp_images_code = '[{' + tmp_images_code + '}]';
var tmp_images = eval(tmp_images_code);
// if (options.debug) console.log(tmp_images);
var chapter_images = [];
tmp_images.forEach(function(tmp_image) {
if (tmp_image.fs) {
var image_src = tmp_image.fs;
if (image_src.indexOf('//') == 0) image_src = 'http:' + image_src;
chapter_images.push({
src: image_src
});
}
});
var chapter_title = $('.top-title .hideM0 a').text().trim();
var link_obj = urlutil.parse(page.url);
// http://www.perveden.com/en/en-manga/c93-kuragamo-...-r-02-english-team-koinaka/1/1/
// --> /en/en-manga/c93-kuragamo-...-r-02-english-team-koinaka/1/1/
// --> /en/en-manga/c93-kuragamo-...-r-02-english-team-koinaka/1/
var chapter_url = link_obj.protocol + '//' + link_obj.hostname + path.dirname(link_obj.pathname);
var output_dir_name = path.basename(path.dirname(link_obj.pathname));
var output_dir = path.join((options.output_dir || '.'), output_dir_name);
saver.downloadMangaChapter({
chapter_url: chapter_url,
chapter_title: chapter_title,
chapter_images: chapter_images,
output_dir: output_dir
}, options, callback);
} else if ($('#mangaPage').length) {
console.log('----');
console.log('Manga page:', page.url);
var manga_title = $('#mangaPage .manga-title').text().trim();
console.log('Manga title:', manga_title);
if (options.auto_manga_dir) {
if (!options.orig_output_dir) options.orig_output_dir = options.output_dir;
var manga_output_dir_name = utils.replaceAll(manga_title, '/', '-');
options.output_dir = path.join(options.output_dir, manga_output_dir_name);
saver.setMangaOutputDir(options.output_dir);
}
saver.fixLinks($, page, '#mangaPage table');
saver.setStateData('url', page.url);
if (options.save_index_html) {
saver.saveHtmlSync(path.join(options.output_dir, 'index.html'), $.html());
}
var manga_info = this.getMangaInfo($, page, options);
if (manga_info && manga_info.url) {
saver.saveJsonSync(path.join(options.output_dir, 'manga.json'), manga_info);
}
var chapter_links = [];
$('#mangaPage table a.chapterLink').each(function() {
chapter_links.push($(this).attr('href'));
});
saver.downloadMangaChapters(chapter_links, options, callback);
} else {
callback();
}
},
getMangaInfo: function($, page, options) {
var manga_info = {};
if ($('#mangaPage').length) {
manga_info = {};
manga_info.url = page.url;
manga_info.name = $('#mangaPage .manga-title').text().trim();
manga_info.cover_image = $('.mangaImage2 img').first().attr('src');
if (manga_info.cover_image && manga_info.cover_image.indexOf('//') == 0) {
manga_info.cover_image = 'http:' + manga_info.cover_image;
}
manga_info.description = $('#mangaDescription').text().trim();
$('#rightContent .rightBox a').each(function() {
var tag_url = $(this).attr('href');
var tag_name = $(this).text().trim();
if (tag_url.indexOf('?categoriesInc') != -1) {
manga_info.genres = manga_info.genres || [];
manga_info.genres.push({
name: tag_name,
url: tag_url
});
} else if (tag_url.indexOf('?artist=') != -1) {
manga_info.artists = manga_info.artists || [];
manga_info.artists.push({
name: tag_name,
url: tag_url
});
}
});
var manga_chapters = [];
$('#mangaPage table a.chapterLink').each(function() {
manga_chapters.push({
url: $(this).attr('href'),
title: $(this).text().trim()
});
});
if (options.with_chapters) {
manga_info.chapters = manga_chapters;
}
manga_info.chapter_count = manga_chapters.length;
if (options.verbose) {
console.log('Manga:');
console.log(' Name:', manga_info.name);
console.log(' Cover image:', manga_info.cover_image);
// console.log(' Description:', manga_info.description);
// console.log(' Authors:', manga_info.authors);
// console.log(' Genres:', manga_info.genres);
// console.log(' Status:', manga_info.status);
console.log(' Chapter count:', manga_info.chapter_count);
}
}
return manga_info;
}
}