Browse Source

allow converting MAFF files

Gildas 7 years ago
parent
commit
84e3804c8e

+ 11 - 1
cli/README.MD

@@ -10,8 +10,12 @@ This is a **work in progress**.
 
 ### Prerequisites
 
-- [Node.js](https://nodejs.org) must be installed first. With Puppeteer (by default), [Chrome/Chromium](https://www.google.com/chrome/) must also be installed. Alternatively, with Selenium WebDriver, you can use [Firefox](https://www.mozilla.org/en/firefox/new/) instead. It is recommended that Chrome/Firefox binaries can be found through the `PATH` environment variable or the current folder. Otherwise you will need to set the `--browser-executable-path` option to help SingleFile locating the executable.
+- [Node.js](https://nodejs.org) must be installed. 
 - By default SingleFile will use Puppeteer to connect to the browser. If you prefer using Selenium WebDriver, you must install it first and ensure the executable can be found through the `PATH` environment variable or the current folder.
+- With Puppeteer (by default), [Chrome/Chromium](https://www.google.com/chrome/) must also be installed. 
+- With Selenium WebDriver, you can use [Firefox](https://www.mozilla.org/en/firefox/new/) instead. 
+- It is recommended that Chrome/Firefox binaries can be found through the `PATH` environment variable or the current folder. Otherwise you will need to set the `--browser-executable-path` option to help SingleFile locating the binary file.
+- To convert MAFF files to HTML, you will need to install [Firefox 56.0.2](https://ftp.mozilla.org/pub/firefox/releases/56.0.2/) and [geckodriver 0.20.1](https://github.com/mozilla/geckodriver/releases/tag/v0.20.1). See the last example for more info about the options to set.
 
 ### Install
 - Unzip the [master archive](https://github.com/gildas-lormeau/SingleFile/archive/master.zip) somewhere on your disk in an empty folder.
@@ -62,6 +66,12 @@ This is a **work in progress**.
   `$ ./single-file.js https://www.wikipedia.org wikipedia.html --back-end=jsdom` (Linux/Unix/BSD etc.)
   
   `> node single-file.js https://www.wikipedia.org wikipedia.html --back-end=jsdom` (Windows)
+
+  - Convert a MAFF file (e.g. `wikipedia.maff`) into `wikipedia.html`
+
+  `$ ./single-file.js file:///home/gildas/wikipedia.maff wikipedia.html --enable-MAFF --back-end=webdriver-firefox --browser-executable-path=~/firefox-56.0.2/firefox` (Linux/Unix/BSD etc.)
+  
+  `> node single-file.js file:///C:/Users/Gildas/wikipedia.maff wikipedia.html --enable-MAFF --back-end=webdriver-firefox --back-end=webdriver-firefox --browser-executable-path="C:\Program Files\Mozilla Firefox 56.0.2\firefox"` (Windows)
   
 ## License
 SingleFile is licensed under AGPL and GPL. Code derived from third-party projects is licensed under MIT. Please contact me at gildas.lormeau <at> gmail.com if you are interested in licensing the SingleFile code for a commercial service or product.

BIN
cli/back-ends/extensions/signed/mozilla_archive_format_with_mht_and_faithful_save-5.2.1-fx+sm.xpi


+ 4 - 1
cli/back-ends/webdriver-firefox.js

@@ -66,7 +66,7 @@ exports.getPageData = async options => {
 		if (options.browserExecutablePath) {
 			firefoxOptions.setBinary(options.browserExecutablePath);
 		}
-		if (options.browserDisableWebSecurity === undefined || options.browserDisableWebSecurity || options.browserBypassCSP === undefined || options.browserBypassCSP || options.userAgent) {
+		if (options.browserDisableWebSecurity === undefined || options.browserDisableWebSecurity || options.browserBypassCSP === undefined || options.browserBypassCSP || options.userAgent || options.enableMaff) {
 			const profile = new firefox.Profile();
 			if (options.browserDisableWebSecurity === undefined || options.browserDisableWebSecurity) {
 				profile.addExtension(require.resolve("./extensions/signed/disable_web_security-0.0.2-fx.xpi"));
@@ -77,6 +77,9 @@ exports.getPageData = async options => {
 			if (options.userAgent) {
 				profile.setPreference("general.useragent.override", options.userAgent);
 			}
+			if (options.enableMaff) {
+				profile.addExtension(require.resolve("./extensions/signed/mozilla_archive_format_with_mht_and_faithful_save-5.2.1-fx+sm.xpi"));
+			}
 			firefoxOptions.setProfile(profile);
 		}
 		builder.setFirefoxOptions(firefoxOptions);

+ 3 - 0
cli/single-file.js

@@ -70,6 +70,9 @@ const args = require("yargs")
 	.number("browser-height")
 	.options("browser-wait-until", { description: "When to consider the page is loaded (puppeteer)" })
 	.choices("browser-wait-until", ["networkidle0", "networkidle2", "load", "domcontentloaded"])
+	.options("enable-MAFF", { description: "Enables support of MAFF pages with Firefox < 57 (webdriver-firefox)" })
+	.boolean("enable-MAFF")
+	.choices("browser-wait-until", ["networkidle0", "networkidle2", "load", "domcontentloaded"])
 	.options("compress-CSS", { description: "Compress CSS stylesheets" })
 	.boolean("compress-CSS")
 	.options("compress-HTML", { description: "Compress HTML content" })