Created ArgsParser.
This commit is contained in:
		
							
								
								
									
										33
									
								
								src/classes/utils/ArgsParser.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/classes/utils/ArgsParser.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| const parseArgs = require('minimist'); | ||||
| const { InvalidArgumentError } = require('../../errors'); | ||||
|  | ||||
| class ArgsParser { | ||||
|   constructor(minimistOptions = ArgsParser.DEFAULT_OPTIONS, requiredArgs = []) { | ||||
|     this.options = minimistOptions; | ||||
|     this.required = requiredArgs; | ||||
|   } | ||||
|  | ||||
|   parse(argv) { | ||||
|     const parsedArgs = parseArgs(argv, this.options); | ||||
|     this.validate(parsedArgs); | ||||
|      | ||||
|     return parsedArgs; | ||||
|   } | ||||
|  | ||||
|   validate(parsedArgs) { | ||||
|     this.required.forEach((arg) => { | ||||
|       if (!parsedArgs[arg]) { | ||||
|         throw new InvalidArgumentError(`--${arg} is required!`); | ||||
|       } | ||||
|     }); | ||||
|   } | ||||
| } | ||||
|  | ||||
| ArgsParser.DEFAULT_OPTIONS = { | ||||
|   boolean: ['display'], | ||||
|   default: { | ||||
|     display: false | ||||
|   } | ||||
| }; | ||||
|  | ||||
| module.exports = ArgsParser; | ||||
							
								
								
									
										9
									
								
								src/errors/InvalidArgumentError.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/errors/InvalidArgumentError.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | ||||
| class InvalidArgumentError extends Error { | ||||
|   constructor(message) { | ||||
|     super(message); | ||||
|      | ||||
|     this.name = 'InvalidArgumentError'; | ||||
|   } | ||||
| } | ||||
|  | ||||
| module.exports = InvalidArgumentError; | ||||
| @@ -1,9 +1,11 @@ | ||||
| const FatalError = require('./FatalError'); | ||||
| const ScraperError = require('./ScraperError'); | ||||
| const JDownloaderError = require('./JDownloaderError'); | ||||
| const InvalidArgumentError = require('./InvalidArgumentError'); | ||||
|  | ||||
| module.exports = { | ||||
|   FatalError, | ||||
|   ScraperError, | ||||
|   JDownloaderError | ||||
|   JDownloaderError, | ||||
|   InvalidArgumentError | ||||
| }; | ||||
|   | ||||
| @@ -1,14 +1,17 @@ | ||||
| const puppeteer = require('puppeteer-extra'); | ||||
| const StealthPlugin = require('puppeteer-extra-plugin-stealth'); | ||||
| const AdBlockerPlugin = require('puppeteer-extra-plugin-adblocker'); | ||||
| const ArgsParser = require('./classes/utils/ArgsParser'); | ||||
| const KissAsianScraper = require('./classes/scraping/KissAsianScraper'); | ||||
| const credentials = require('../data/credentials.json'); | ||||
|  | ||||
| const args = new ArgsParser().parse(process.argv.slice(2)); | ||||
|  | ||||
| puppeteer.use(StealthPlugin()); | ||||
| puppeteer.use(AdBlockerPlugin({ blockTrackers: true })); | ||||
|  | ||||
| const main = async() => { | ||||
|   const browser = await puppeteer.launch({ headless: false, slowMo: 250 }); | ||||
|   const browser = await puppeteer.launch({ headless: !args.display, slowMo: 250 }); | ||||
|   const page = await browser.newPage(); | ||||
|   const scraper = new KissAsianScraper(page); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user