52 lines
1.4 KiB
Python
52 lines
1.4 KiB
Python
|
from configparser import ConfigParser
|
||
|
from pathlib import Path
|
||
|
from json import dump
|
||
|
|
||
|
config = ConfigParser()
|
||
|
|
||
|
conf = config.read("config.ini")
|
||
|
|
||
|
options = {"ftp": ["host", "user", "pass", "lftp"], "file": ["local", "remote"]}
|
||
|
|
||
|
|
||
|
def check_config_valid(config: ConfigParser, options: dict[str, list[str]]) -> bool:
|
||
|
for sec in options:
|
||
|
if not config.has_section(sec):
|
||
|
return False
|
||
|
for opt in options[sec]:
|
||
|
if not config.has_option(sec, opt):
|
||
|
return False
|
||
|
return True
|
||
|
|
||
|
|
||
|
def default_config(config: ConfigParser, options: dict[str, list[str]]) -> None:
|
||
|
config.clear()
|
||
|
for sec in options:
|
||
|
config.add_section(sec)
|
||
|
for opt in options[sec]:
|
||
|
config[sec][opt] = ""
|
||
|
with open("config.ini", "w") as f:
|
||
|
config.write(f)
|
||
|
|
||
|
|
||
|
if not check_config_valid(config, options):
|
||
|
default_config(config, options)
|
||
|
|
||
|
|
||
|
def generate_db(config: ConfigParser) -> None:
|
||
|
local_dir = Path(config["file"]["local"])
|
||
|
categories = Path(local_dir, "categories")
|
||
|
output = []
|
||
|
for category in categories.iterdir():
|
||
|
if not category.is_dir():
|
||
|
continue
|
||
|
output_category = {"name": category.name, "files": []}
|
||
|
for file in category.iterdir():
|
||
|
output_category["files"].append(file.name)
|
||
|
output.append(output_category)
|
||
|
with open(Path(local_dir, "db.json"), "w") as f:
|
||
|
dump(output, f)
|
||
|
|
||
|
|
||
|
generate_db(config)
|