Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var args = process.argv.splice(process.execArgv.length + 2);
- if(args.length != 1) {
- console.log('invalid argument length');
- process.exit(1);
- }
- var request = require('request'),
- cheerio = require('cheerio'),
- events = require('events'),
- path = require('path'),
- fs = require('fs');
- function ensureDirectoryExistence(filePath) {
- var dirname = path.dirname(filePath);
- if (directoryExists(dirname)) {
- return true;
- }
- ensureDirectoryExistence(dirname);
- fs.mkdirSync(dirname);
- }
- function directoryExists(path) {
- try {
- return fs.statSync(path).isDirectory();
- }
- catch (err) {
- return false;
- }
- }
- var KMS = function(seriesURL) {
- this.seriesURL = seriesURL;
- }
- KMS.prototype = new events.EventEmitter;
- KMS.prototype.getPage = function(pURL) {
- var self = this;
- var cNum = pURL.substring(pURL.lastIndexOf('c'), pURL.lastIndexOf('/'));
- var pNum = '1';
- if(pURL.slice(pURL.lastIndexOf('/')).length != 1) pNum = pURL.substring(pURL.lastIndexOf('/')+1, pURL.lastIndexOf('.'));
- request(pURL, function(error, response, body) {
- if(!error && response.statusCode == 200) {
- var $ = cheerio.load(body);
- var imgUrl = $('#image').attr('src');
- var filePath = cNum + '/p' + pNum + '.jpg';
- ensureDirectoryExistence(filePath);
- console.log('Getting Page: ' + filePath.slice(0, -4));
- request(imgUrl).pipe(fs.createWriteStream(filePath));
- if($('#image').parent().attr('href') != 'javascript:void(0);') self.emit('new page', $('#image').parent().attr('href'));
- } else {
- console.log('Eror: ' + error);
- }
- });
- };
- KMS.prototype.run = function() {
- var self = this;
- request(self.seriesURL, function(error, response, body) {
- if(!error && response.statusCode==200) {
- var $ = cheerio.load(body);
- $('.detail_list > ul:nth-child(3) > li').each(function(i, elm) {
- self.emit('new page', ($(this).children('span:first-child').children('a').attr('href')));
- });
- } else {
- console.log('Error: ' + error);
- }
- });
- }
- var kms = new KMS(args[0]);
- kms.on('new page', kms.getPage);
- kms.on('err page', kms.getPage);
- kms.run();
- node mhs.js http://www.mangahere.co/manga/gantz/
- Error: undefined is not a valid uri or options object.
- at request (D:DocumentsDev WorkspacesJavaScriptMangaScrapernode_modulesrequestindex.js:46:11)
- at Request._callback (D:DocumentsDev WorkspacesJavaScriptMangaScrapermhs.js:49:5)
- at Request.self.callback (D:DocumentsDev WorkspacesJavaScriptMangaScrapernode_modulesrequestrequest.js:199:22)
- at emitTwo (events.js:87:13)
- at Request.emit (events.js:172:7)
- at Request.<anonymous> (D:DocumentsDev WorkspacesJavaScriptMangaScrapernode_modulesrequestrequest.js:1036:10)
- at emitOne (events.js:82:20)
- at Request.emit (events.js:169:7)
- at IncomingMessage.<anonymous> (D:DocumentsDev WorkspacesJavaScriptMangaScrapernode_modulesrequestrequest.js:963:12)
- at emitNone (events.js:72:20)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement