jul11co-mangadl
Version:
Jul11co Web Manga Downloader
156 lines (123 loc) • 5.29 kB
JavaScript
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();
}
}
}