UNPKG

jul11co-mangadl

Version:
156 lines (123 loc) 5.29 kB
var path = require('path'); var urlutil = require('url'); module.exports = { name: '8Muses', website: 'https://www.8muses.com', match: function(link, options) { return /www\.8muses\.com\/comix/g.test(link) || /www\.8muses\.com\/comics/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, '8Muses'); saver.setMangaOutputDir(options.output_dir); } var paginationLinks = function(cb) { if ($('.pagination .page a').length) { var pagination_links = saver.getLinks($, page, '.pagination .page', { filters: ['/comix/album/','/comics/album/'] }); if (options.debug) console.log(pagination_links); var pagination_links = pagination_links.filter(function(link) { return !saver.isDone(link); }); saver.processPages(pagination_links, options, cb); } else { return cb(); } } if (page.url.indexOf('/picture/') != -1 && $('#content .p-picture .photo').length) { console.log('Picture page:', page.url); if ($('#content .p-picture #imageName').length) { var imageName = $('#content .p-picture #imageName').attr('value'); var imageHost = $('#content .p-picture #imageHost').attr('value'); imageHost = imageHost || '//www.8muses.com'; var image_src = 'https:' + imageHost + '/image/fm/' + imageName; saver.updateStateData(page.url, { images: [{ src: image_src }], done: true, last_update: new Date() }); } else if ($('#content .p-picture .photo a img.image').length) { var image_src = $('#content .p-picture .photo a img.image').first().attr('src'); if (image_src && image_src.indexOf('//') == 0) { image_src = 'https:' + image_src; } saver.updateStateData(page.url, { images: [{ src: image_src }], done: true, last_update: new Date() }); } return callback(); } else if (page.url.indexOf('/album/') != -1 && $('#content .gallery a').length) { var picture_links = saver.getLinks($, page, '#content .gallery', { filters: ['/comix/picture/','/comics/picture/'] }); if (picture_links && picture_links.length) { if (options.debug) console.log(picture_links); console.log('Comic page: ' + page.url); var comic_title = page.title.split('|')[0].trim(); console.log('Comic title: ' + comic_title); var comic_output_dir = page.url.replace('https://www.8muses.com/comix/album/', '') .replace('https://www.8muses.com/comics/album/', ''); comic_output_dir = path.join((options.output_dir || '.'), comic_output_dir); picture_links = picture_links.filter(function(link) { return !saver.isDone(link); }); console.log('Pictures:', picture_links.length); saver.processPages(picture_links, options, function(err) { if (err) return callback(err); var images = []; picture_links.forEach(function(link) { var link_info = saver.getStateData(link); if (link_info && link_info.images) { images = images.concat(link_info.images); } }); options.request_headers = { "Referer": page.url, "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:58.0) Gecko/20100101 Firefox/58.0" }; saver.downloadMangaChapter({ chapter_url: page.url, chapter_title: comic_title, chapter_images: images, output_dir: comic_output_dir }, options, callback); }); } else { console.log('Gallery list:', page.url); var album_links = saver.getLinks($, page, '#content .gallery', { filters: ['/comix/album/','/comics/album/'] }); if (options.debug) console.log(album_links); album_links = album_links.filter(function(link) { return !(saver.isDone(link) || saver.isDone(link.replace('/comics/','/comix/'))); }); console.log('Galleries:', album_links.length); saver.processPages(album_links, options, function(err) { if (err) return callback(err); return paginationLinks(callback); }); } } else if ($('#content .gallery a').length) { console.log('Gallery list:', page.url); saver.setStateData('url', page.url); var album_links = saver.getLinks($, page, '#content .gallery', { filters: ['/comix/album/','/comics/album/'] }); if (options.debug) console.log(album_links); album_links = album_links.filter(function(link) { return !(saver.isDone(link) || saver.isDone(link.replace('/comics/','/comix/'))); }); console.log('Galleries:', album_links.length); saver.processPages(album_links, options, function(err) { if (err) return callback(err); return paginationLinks(callback); }); } else { callback(); } } }