configs.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. __package__ = 'archivebox.plugantic'
  2. from typing import Optional, List, Literal
  3. from pathlib import Path
  4. from pydantic import BaseModel, Field
  5. ConfigSectionName = Literal['GENERAL_CONFIG', 'ARCHIVE_METHOD_TOGGLES', 'ARCHIVE_METHOD_OPTIONS', 'DEPENDENCY_CONFIG']
  6. class ConfigSet(BaseModel):
  7. section: ConfigSectionName = 'GENERAL_CONFIG'
  8. class WgetToggleConfig(ConfigSet):
  9. section: ConfigSectionName = 'ARCHIVE_METHOD_TOGGLES'
  10. SAVE_WGET: bool = True
  11. SAVE_WARC: bool = True
  12. class WgetDependencyConfig(ConfigSet):
  13. section: ConfigSectionName = 'DEPENDENCY_CONFIG'
  14. WGET_BINARY: str = Field(default='wget')
  15. WGET_ARGS: Optional[List[str]] = Field(default=None)
  16. WGET_EXTRA_ARGS: List[str] = []
  17. WGET_DEFAULT_ARGS: List[str] = ['--timeout={TIMEOUT-10}']
  18. class WgetOptionsConfig(ConfigSet):
  19. section: ConfigSectionName = 'ARCHIVE_METHOD_OPTIONS'
  20. # loaded from shared config
  21. WGET_AUTO_COMPRESSION: bool = Field(default=True)
  22. SAVE_WGET_REQUISITES: bool = Field(default=True)
  23. WGET_USER_AGENT: str = Field(default='', alias='USER_AGENT')
  24. WGET_TIMEOUT: int = Field(default=60, alias='TIMEOUT')
  25. WGET_CHECK_SSL_VALIDITY: bool = Field(default=True, alias='CHECK_SSL_VALIDITY')
  26. WGET_RESTRICT_FILE_NAMES: str = Field(default='windows', alias='RESTRICT_FILE_NAMES')
  27. WGET_COOKIES_FILE: Optional[Path] = Field(default=None, alias='COOKIES_FILE')
  28. CONFIG = {
  29. 'CHECK_SSL_VALIDITY': False,
  30. 'SAVE_WARC': False,
  31. 'TIMEOUT': 999,
  32. }
  33. WGET_CONFIG = [
  34. WgetToggleConfig(**CONFIG),
  35. WgetDependencyConfig(**CONFIG),
  36. WgetOptionsConfig(**CONFIG),
  37. ]