Browse Source

fix: Escape JSON output on command failure so the user can run the command manually

Cristian 5 years ago
parent
commit
bd3c824d45
3 changed files with 6 additions and 2 deletions
  1. 1 0
      .gitignore
  2. 4 1
      archivebox/extractors/singlefile.py
  3. 1 1
      package-lock.json

+ 1 - 0
.gitignore

@@ -10,6 +10,7 @@ venv/
 
 build/
 dist/
+node_modules/
 
 data/
 output/

+ 4 - 1
archivebox/extractors/singlefile.py

@@ -42,10 +42,11 @@ def save_singlefile(link: Link, out_dir: Optional[str]=None, timeout: int=TIMEOU
     browser_args = chrome_args(TIMEOUT=0)
 
     # SingleFile CLI Docs: https://github.com/gildas-lormeau/SingleFile/tree/master/cli
+    browser_args = '--browser-args={}'.format(json.dumps(browser_args[1:]))
     cmd = [
         DEPENDENCIES['SINGLEFILE_BINARY']['path'],
         '--browser-executable-path={}'.format(CHROME_BINARY),
-        '--browser-args="{}"'.format(json.dumps(browser_args[1:])),
+        browser_args,
         link.url,
         output
     ]
@@ -73,6 +74,8 @@ def save_singlefile(link: Link, out_dir: Optional[str]=None, timeout: int=TIMEOU
         chmod_file(output)
     except (Exception, OSError) as err:
         status = 'failed'
+        # TODO: Make this prettier. This is necessary to run the command (escape JSON internal quotes).
+        cmd[2] = browser_args.replace('"', "\\\"")
         output = err
     finally:
         timer.end()

+ 1 - 1
package-lock.json

@@ -1,6 +1,6 @@
 {
 	"name": "archivebox",
-	"version": "0.4.19",
+	"version": "0.4.21",
 	"lockfileVersion": 1,
 	"requires": true,
 	"dependencies": {