diff --git a/scraper/src/maps2zim/context.py b/scraper/src/maps2zim/context.py index e90ab20..3a5ddc8 100644 --- a/scraper/src/maps2zim/context.py +++ b/scraper/src/maps2zim/context.py @@ -111,6 +111,9 @@ class Context: # Geonames region to download (e.g. "allCountries", "FR", "US") geonames_region: str = "allCountries" + # Number of worker threads for the ZIM creator + zim_workers: int | None = None + @classmethod def setup(cls, **kwargs: Any): new_instance = cls(**kwargs) diff --git a/scraper/src/maps2zim/entrypoint.py b/scraper/src/maps2zim/entrypoint.py index c885655..d72d3ae 100644 --- a/scraper/src/maps2zim/entrypoint.py +++ b/scraper/src/maps2zim/entrypoint.py @@ -205,6 +205,13 @@ def prepare_context(raw_args: list[str], tmpdir: str) -> None: dest="geonames_region", ) + parser.add_argument( + "--zim-workers", + type=int, + help="Number of worker threads for the ZIM creator. Default: libzim default", + dest="zim_workers", + ) + args = parser.parse_args(raw_args) # Ignore unset values so they do not override the default specified in Context diff --git a/scraper/src/maps2zim/processor.py b/scraper/src/maps2zim/processor.py index 3f93276..87190ec 100644 --- a/scraper/src/maps2zim/processor.py +++ b/scraper/src/maps2zim/processor.py @@ -157,6 +157,8 @@ def _run_internal(self) -> Path: logger.debug(f"User-Agent: {context.wm_user_agent}") creator = Creator(zim_path, "index.html") + if context.zim_workers is not None: + creator.config_nbworkers(context.zim_workers) logger.info(" Fetching ZIM illustration...") zim_illustration = self._fetch_zim_illustration()