settings.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import os
  2. from dotenv import load_dotenv
  3. load_dotenv()
  4. from pathlib import Path
  5. from typing import Optional
  6. from pydantic import BaseModel
  7. import yaml
  8. WORK_DIR = Path(__file__).resolve().parent.parent
  9. OUTPUT_DIR=WORK_DIR / "output"
  10. DB_URL = os.environ.get('DB_URL') or "postgresql+psycopg2://user:password@sv-v2.lan:5435/copywriting_production"
  11. MONGO_URL = os.environ.get('MONGO_URL', 'mongodb://sv-v2:27017')
  12. MONGO_DB_NAME = os.environ.get('MONGO_DB_NAME', 'amazone')
  13. LOG_LEVEL = 'DEBUG'
  14. LOG_DIR = Path(__file__).resolve().parent.parent/'output/logs'
  15. CONFIG_DIR = Path(__file__).resolve().parent.parent/'config'
  16. BROWSER_CONFIG_DIR = CONFIG_DIR / 'dp_conf'
  17. TEMP_PAGE_DIR = OUTPUT_DIR / 'page' / 'temp'
  18. TEMP_PAGE_DIR.mkdir(parents=True, exist_ok=True)
  19. LITELLM_API_KEY = os.environ.get('LITELLM_API_KEY')
  20. LITELLM_API_BASE=os.environ.get('LITELLM_API_BASE')
  21. OPENAI_API_KEY = os.environ.get('OPENAI_API_KEY')
  22. OPENAI_API_BASE=os.environ.get('OPENAI_API_BASE')
  23. class Config(BaseModel):
  24. storage: str = "local"
  25. s3_access_key: Optional[str] = os.environ.get("S3_ACCESS_KEY", 'bh9LbfsPHRJgQ44wXIlv')
  26. s3_secret_key: Optional[str] = os.environ.get("S3_SECRET_KEY", 'N744RZ60T1b4zlcWG2MROCzjEE2mPTdNQCc7Pk3M')
  27. s3_endpoint: Optional[str] = os.environ.get("S3_ENDPOINT", 'http://s3.vs1.lan')
  28. s3_prefix: Optional[str] = 's3://public/amazone/copywriting_production'
  29. chrome_config_ini: Optional[str] = r'G:\code\amazone\copywriting_production\config\dp_conf\9322.ini'
  30. redis_url: Optional[str] = os.environ.get("REDIS_URL", 'redis://localhost:6379/0')
  31. version: Optional[str] = "0.0.1-alpha"
  32. def save(self, config_path: Path = None):
  33. config_path = config_path or get_config_path()
  34. with open(config_path, "w", encoding="utf-8") as file:
  35. yaml.dump(self.model_dump(), file)
  36. return self
  37. def get_config_path():
  38. return os.environ.get('CONFIG_PATH',CONFIG_DIR / "config.yaml")
  39. def read_config(config_path: Path):
  40. if isinstance(config_path, str):
  41. config_path = Path(config_path)
  42. if not config_path.exists():
  43. config = Config()
  44. config.save(config_path)
  45. return config
  46. with open(config_path, "r", encoding="utf-8") as file:
  47. config_dict = yaml.safe_load(file)
  48. return Config(**config_dict)
  49. CFG = read_config(get_config_path())
  50. def main():
  51. print(CFG)
  52. CFG.save()
  53. if __name__ == "__main__":
  54. main()