UNPKG

jul11co-mangadl

Version:
262 lines (212 loc) 8.86 kB
var path = require('path'); var urlutil = require('url'); var utils = require('jul11co-wdt').Utils; module.exports = { name: 'Hentai24h', website: 'http://hentai24h.org', match: function(link, options) { return /hentai24h\.org/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.output_dir, 'Hentai24h'); saver.setMangaOutputDir(options.output_dir); } var downloadChapter = function(cb) { if ($('#chapter').length) { if (saver.isDone(page.url)) { return cb(); } var chapter_url = page.url; var chapter_title = $('#chapter h1').first().children('a').text().trim(); $('.chap-content img').each(function(){ var image_lazy_src = $(this).attr('data-lazy-src'); if (image_lazy_src && image_lazy_src != "") { $(this).attr('src', image_lazy_src); } }); var chapter_images = saver.getImages($, page, '.chap-content'); if (options.debug) console.log(chapter_images); var chapter_url_obj = urlutil.parse(chapter_url); var chapter_output_dir_name = path.basename(chapter_url_obj.pathname,'.html'); var chapter_output_dir = path.join(options.output_dir, chapter_output_dir_name); saver.downloadMangaChapter({ chapter_url: page.url, chapter_title: chapter_title, chapter_images: chapter_images, output_dir: chapter_output_dir }, options, cb); } else { cb(); } } if ($('#list-drop').length) { // multi-chapters manga options.manga_chapters = options.manga_chapters || []; if (options.manga_chapters.indexOf(page.url) != -1) { return downloadChapter(callback); } console.log('----'); console.log('Manga page: ' + page.url); var manga_title = $('#chapter h1').first().text().trim(); manga_title = utils.replaceAll(manga_title, '/', '-'); console.log('Manga title: ' + manga_title); if (options.auto_manga_dir && !options.manga_output_changed && !options.batch_download) { options.output_dir = path.join(options.output_dir, manga_title); saver.setMangaOutputDir(options.output_dir); options.manga_output_changed = true; } else if (/*options.auto_manga_dir && */options.batch_download) { var manga_output_dir = path.join(options.batch_output_dir, manga_title); saver.deleteStateData(page.url); saver.setMangaOutputDir(manga_output_dir, {save_old_state: true}); options.output_dir = manga_output_dir; } if (saver.isDone(page.url) && !options.refresh_info) { return callback(); } 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 = []; // saver.getLinks($, page, '.list-chapter'); $('#list-drop select').first().children().each(function() { var link = $(this).attr('value'); chapter_links.push(link); }); options.manga_chapters = chapter_links; saver.downloadMangaChapters(chapter_links, options, callback); } else if ($('#chapter').length) { // single-chapter manga console.log('----'); console.log('Manga page: ' + page.url); var manga_title = $('#chapter h1').first().text().trim(); manga_title = utils.replaceAll(manga_title, '/', '-'); console.log('Manga title: ' + manga_title); if (options.auto_manga_dir && !options.manga_output_changed && !options.batch_download) { options.output_dir = path.join(options.output_dir, manga_title); saver.setMangaOutputDir(options.output_dir); options.manga_output_changed = true; } else if (/*options.auto_manga_dir && */options.batch_download) { var manga_output_dir = path.join(options.batch_output_dir, manga_title); saver.deleteStateData(page.url); saver.setMangaOutputDir(manga_output_dir, {save_old_state: true}); options.output_dir = manga_output_dir; } if (saver.isDone(page.url) && !options.refresh_info) { return callback(); } 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); } return downloadChapter(callback); } else if ($('#comic ul.items').length) { options.paging_links = options.paging_links || {}; if (options.paging_links[page.url]) { return callback(); } options.paging_links[page.url] = 1; console.log('--'); console.log('Manga list: ' + page.url); options.batch_download = true; if (!options.batch_url) { options.batch_url = page.url; } if (!options.batch_output_dir) { options.batch_output_dir = options.output_dir; } if (options.batch_output_dir != options.output_dir) { saver.deleteStateData(page.url); saver.setMangaOutputDir(options.batch_output_dir, {save_old_state: true}); options.output_dir = options.batch_output_dir; } if (!saver.getStateData('url')) { saver.updateStateData('url', page.url); } var paging_links = saver.getLinks($, page, '.page_nav'); $('#comic ul.items .page').remove(); var manga_links = saver.getLinks($, page, '#comic ul.items'); saver.downloadMangaList(manga_links, options, function(err) { if (err) return callback(err); saver.setMangaOutputDir(options.batch_output_dir, {save_old_state: true}); options.output_dir = options.batch_output_dir; manga_links.forEach(function(link) { if (!saver.isVisited(link)) saver.setVisited(link); }); saver.setStateData('last_update', new Date()); if (options.all_pages && paging_links.length > 0) { if (options.refresh_info) { paging_links = paging_links.filter(function(link) { return !options.paging_links[link]; }); paging_links.forEach(function(link) { saver.updateStateData(link, {visited: 0}); }); } else { paging_links = paging_links.filter(function(link) { return !saver.isVisited(link); }); } saver.processPages(paging_links, options, callback); } else { callback(); } }); } else { callback(); } }, getMangaInfo: function($, page, options) { var manga_info = {}; if ($('#chapter').length) { manga_info.url = page.url; manga_info.name = $('#chapter h1 a').first().text().trim(); if ($('#list-drop').length) { manga_info.cover_image = $('.chap-content img').first().attr('src'); } var manga_tags = []; $('.chap-description a').each(function() { var link_url = $(this).attr('href'); if (link_url && link_url.indexOf('/tag/') != -1) { manga_tags.push({ name: $(this).text().trim(), url: link_url }) } }); if (manga_tags.length) manga_info.tags = manga_tags; var manga_chapters = []; if ($('#list-drop select').length) { $('#list-drop select').first().children().each(function() { var link = $(this).attr('value'); manga_chapters.push({ url: link, name: $(this).text().trim() }); }); } if (options.include_chapters || 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(' Tags:', manga_info.genres); // console.log(' Status:', manga_info.status); console.log(' Chapter count:', manga_info.chapter_count); } } return manga_info; } }