Config Reference
This page documents how configuration values are resolved and what each configuration key does.
Ways to Provide Configuration
You can provide configuration values using these sources:
Config File
Environment Variables
CLI Parameters
Config File
Configuration can be loaded from a JSON file. The scraper resolves the config file location in this order:
config_fileCLI parameterSCRAPER_CONFIG_FILEenvironment variableInternal default path (
$HOME/.config/web-novel-scraper/config.jsonon Linux)
If file loading fails (missing, empty, malformed), the scraper falls back to an empty file config.
Environment Variables
Any supported key can be provided through environment variables such as
SCRAPER_BASE_NOVELS_DIR or SCRAPER_REQUEST_TIMEOUT.
CLI Parameters
CLI parameters are passed directly in commands and have the highest priority. For more information, see Commands Reference.
Precedence
When a value exists in more than one source, this precedence is applied:
CLI Parameter
Environment Variable
Config File
Default (Host)
Default
Default (host) values come from web_novel_scraper/resources/host_config.json
and have some default settings for different hosts like using FlareSolverr or a
bigger timeout.
Configuration Schema
Top-level keys:
base_novels_dir(string)decode_guide_file(string)request_config(object)
request_config keys:
force_flaresolver(bool)flaresolver_url(string)request_timeout(int)request_retries(int)request_time_between_retries(int)request_cookies(dict)
Options Detail
base_novels_dir
Type: string path
Default:
platformdirs.user_data_dir("web-novel-scraper", "web-novel-scraper")Purpose: base directory where novel folders are stored.
- Sources:
parameter: base_novels_direnv: SCRAPER_BASE_NOVELS_DIRconfig file: base_novels_dir
decode_guide_file
Type: string path
- Default: bundled decode guide path
web_novel_scraper/decode_guide/decode_guide.json
Purpose: file used to load host extraction rules.
- Sources:
parameter: decode_guide_fileenv: SCRAPER_DECODE_GUIDE_FILEconfig file: decode_guide_file
request_config.force_flaresolver
Type: bool
Default:
falsePurpose: force requests through FlareSolverr.
- Accepted bool-like values:
true/false,1/0,yes/no(case-insensitive), plus native bool/int.
- Sources:
parameter: force_flaresolverenv: SCRAPER_FORCE_FLARESOLVERconfig file: request_config.force_flaresolverdefault(host): request_config.force_flaresolver
request_config.flaresolver_url
Type: string URL
Default:
http://localhost:8191Purpose: FlareSolverr endpoint.
- Sources:
env: SCRAPER_FLARESOLVER_URLconfig file: request_config.flaresolver_url
request_config.request_timeout
Type: int
Default:
20Purpose: request timeout in seconds.
- Sources:
parameter: request_timeoutenv: SCRAPER_REQUEST_TIMEOUTconfig file: request_config.request_timeoutdefault(host): request_config.request_timeout
request_config.request_retries
Type: int
Default:
3Purpose: max retries per request.
- Sources:
parameter: request_retriesenv: SCRAPER_REQUEST_RETRIESconfig file: request_config.request_retriesdefault(host): request_config.request_retries
request_config.request_time_between_retries
Type: int
Default:
3Purpose: seconds to wait between retries if request fails.
- Sources:
parameter: request_time_between_retriesenv: SCRAPER_REQUEST_TIME_BETWEEN_RETRIESconfig file: request_config.request_time_between_retriesdefault(host): request_config.request_time_between_retries
Config File Example
{
"base_novels_dir": "/home/user/novels",
"decode_guide_file": "/home/user/custom_decode_guide.json",
"request_config": {
"force_flaresolver": true,
"flaresolver_url": "http://localhost:8191",
"request_timeout": 30,
"request_retries": 5,
"request_time_between_retries": 4,
"request_cookies": {
"custom_toc": "10000"
}
}
}