Browse Source

implemented getPageData

Gildas 7 years ago
parent
commit
c811fd0a7e
2 changed files with 22 additions and 27 deletions
  1. 3 27
      node-jsdom/example.js
  2. 19 0
      node-jsdom/single-file-jsdom.js

+ 3 - 27
node-jsdom/example.js

@@ -25,12 +25,9 @@
 
 const fs = require("fs");
 
-const jsdom = require("jsdom");
-const request = require("request-promise-native");
+const SingleFile = require("./single-file-jsdom.js");
 
-const SingleFileNode = require("./single-file-jsdom.js");
-
-run({
+SingleFile.getPageData({
 	url: "https://github.com/gildas-lormeau/SingleFile",
 	userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko Firefox AppleWebKit (KHTML, like Gecko) Chrome Safari",
 	removeHiddenElements: true,
@@ -50,25 +47,4 @@ run({
 	removeAlternativeMedias: true,
 	removeAlternativeImages: true,
 	groupDuplicateImages: true
-});
-
-async function run(options) {
-	const pageContent = (await request({
-		method: "GET",
-		uri: options.url,
-		resolveWithFullResponse: true,
-		encoding: null,
-		headers: {
-			"User-Agent": options.userAgent
-		}
-	})).body.toString();
-	const dom = new jsdom.JSDOM(pageContent, { url: options.url, virtualConsole: new jsdom.VirtualConsole(), userAgent: options.userAgent });
-	options.win = dom.window;
-	options.doc = dom.window.document;
-	options.saveRawPage = true;
-	const processor = new (SingleFileNode.getClass())(options);
-	await processor.initialize();
-	await processor.run();
-	const page = await processor.getPageData();
-	fs.writeFileSync(page.filename, page.content);
-}
+}).then(pageData => fs.writeFileSync(pageData.filename, pageData.content));

+ 19 - 0
node-jsdom/single-file-jsdom.js

@@ -79,6 +79,25 @@ const domUtil = {
 const DocUtil = this.DocUtilCore.getClass(modules, domUtil);
 
 exports.getClass = () => this.SingleFileCore.getClass(DocUtil, this.cssTree);
+exports.getPageData = async options => {
+	const pageContent = (await request({
+		method: "GET",
+		uri: options.url,
+		resolveWithFullResponse: true,
+		encoding: null,
+		headers: {
+			"User-Agent": options.userAgent
+		}
+	})).body.toString();
+	const dom = new jsdom.JSDOM(pageContent, { url: options.url, virtualConsole: new jsdom.VirtualConsole(), userAgent: options.userAgent });
+	options.win = dom.window;
+	options.doc = dom.window.document;
+	options.saveRawPage = true;
+	const processor = new (this.getClass())(options);
+	await processor.initialize();
+	await processor.run();
+	return processor.getPageData();
+};
 
 function parseDocContent(content) {
 	return (new JSDOM(content, {