mirror of
https://github.com/ArchiveBox/ArchiveBox.git
synced 2025-05-19 01:15:11 -04:00
Merge pull request #1021 from renaisun/dev
This commit is contained in:
commit
0cbeeb4346
2 changed files with 26 additions and 2 deletions
|
@ -177,6 +177,7 @@ CONFIG_SCHEMA: Dict[str, ConfigDefaultDict] = {
|
||||||
'--compressed'
|
'--compressed'
|
||||||
]},
|
]},
|
||||||
'GIT_ARGS': {'type': list, 'default': ['--recursive']},
|
'GIT_ARGS': {'type': list, 'default': ['--recursive']},
|
||||||
|
'SINGLEFILE_ARGS': {'type': list, 'default' : None}
|
||||||
},
|
},
|
||||||
|
|
||||||
'SEARCH_BACKEND_CONFIG' : {
|
'SEARCH_BACKEND_CONFIG' : {
|
||||||
|
@ -402,6 +403,7 @@ DYNAMIC_CONFIG_SCHEMA: ConfigDefaultDict = {
|
||||||
|
|
||||||
'USE_SINGLEFILE': {'default': lambda c: c['USE_SINGLEFILE'] and c['SAVE_SINGLEFILE']},
|
'USE_SINGLEFILE': {'default': lambda c: c['USE_SINGLEFILE'] and c['SAVE_SINGLEFILE']},
|
||||||
'SINGLEFILE_VERSION': {'default': lambda c: bin_version(c['SINGLEFILE_BINARY']) if c['USE_SINGLEFILE'] else None},
|
'SINGLEFILE_VERSION': {'default': lambda c: bin_version(c['SINGLEFILE_BINARY']) if c['USE_SINGLEFILE'] else None},
|
||||||
|
'SINGLEFILE_ARGS': {'default': lambda c: c['SINGLEFILE_ARGS'] or []},
|
||||||
|
|
||||||
'USE_READABILITY': {'default': lambda c: c['USE_READABILITY'] and c['SAVE_READABILITY']},
|
'USE_READABILITY': {'default': lambda c: c['USE_READABILITY'] and c['SAVE_READABILITY']},
|
||||||
'READABILITY_VERSION': {'default': lambda c: bin_version(c['READABILITY_BINARY']) if c['USE_READABILITY'] else None},
|
'READABILITY_VERSION': {'default': lambda c: bin_version(c['READABILITY_BINARY']) if c['USE_READABILITY'] else None},
|
||||||
|
|
|
@ -17,6 +17,7 @@ from ..config import (
|
||||||
SAVE_SINGLEFILE,
|
SAVE_SINGLEFILE,
|
||||||
DEPENDENCIES,
|
DEPENDENCIES,
|
||||||
SINGLEFILE_VERSION,
|
SINGLEFILE_VERSION,
|
||||||
|
SINGLEFILE_ARGS,
|
||||||
CHROME_BINARY,
|
CHROME_BINARY,
|
||||||
)
|
)
|
||||||
from ..logging_util import TimedProgress
|
from ..logging_util import TimedProgress
|
||||||
|
@ -45,10 +46,31 @@ def save_singlefile(link: Link, out_dir: Optional[Path]=None, timeout: int=TIMEO
|
||||||
|
|
||||||
# SingleFile CLI Docs: https://github.com/gildas-lormeau/SingleFile/tree/master/cli
|
# SingleFile CLI Docs: https://github.com/gildas-lormeau/SingleFile/tree/master/cli
|
||||||
browser_args = '--browser-args={}'.format(json.dumps(browser_args[1:]))
|
browser_args = '--browser-args={}'.format(json.dumps(browser_args[1:]))
|
||||||
cmd = [
|
options = [
|
||||||
DEPENDENCIES['SINGLEFILE_BINARY']['path'],
|
*SINGLEFILE_ARGS,
|
||||||
'--browser-executable-path={}'.format(CHROME_BINARY),
|
'--browser-executable-path={}'.format(CHROME_BINARY),
|
||||||
browser_args,
|
browser_args,
|
||||||
|
]
|
||||||
|
|
||||||
|
# Deduplicate options (single-file doesn't like when you use the same option two times)
|
||||||
|
#
|
||||||
|
# NOTE: Options names that come first clobber conflicting names that come later
|
||||||
|
# My logic is SINGLEFILE_ARGS is the option that affects the singlefile command with most
|
||||||
|
# specificity, therefore the user sets it with a lot intent, therefore it should take precedence
|
||||||
|
# kind of like the ergonomic principle of lexical scope in programming languages.
|
||||||
|
seen_option_names = []
|
||||||
|
def test_seen(argument):
|
||||||
|
option_name = argument.split("=")[0]
|
||||||
|
if option_name in seen_option_names:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
seen_option_names.append(option_name)
|
||||||
|
return True
|
||||||
|
deduped_options = list(filter(test_seen, options))
|
||||||
|
|
||||||
|
cmd = [
|
||||||
|
DEPENDENCIES['SINGLEFILE_BINARY']['path'],
|
||||||
|
*deduped_options,
|
||||||
link.url,
|
link.url,
|
||||||
output,
|
output,
|
||||||
]
|
]
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue