add functions for saving files

This commit is contained in:
Ren Tatsumoto 2021-04-20 12:25:54 +03:00
parent be5dd9e9bc
commit 1f85686e69

View file

@ -1,10 +1,15 @@
# Anki Note Type Picker # Anki Note Type Picker
import json import json
import os
import random
from typing import AnyStr
from urllib.error import URLError from urllib.error import URLError
from ankiconnect import invoke from antp.ankiconnect import invoke
JSON_INDENT = 4 JSON_INDENT = 4
SCRIPT_DIR = os.path.dirname(__file__)
NOTE_TYPES_DIR = os.path.join(SCRIPT_DIR, os.pardir, 'templates')
def read_num(msg: str = "Input number: ", min_val: int = 0, max_val: int = None) -> int: def read_num(msg: str = "Input number: ", min_val: int = 0, max_val: int = None) -> int:
@ -34,6 +39,33 @@ def fetch_template(model_name: str):
} }
def create_template_dir(template_name) -> AnyStr:
dir_path = os.path.join(NOTE_TYPES_DIR, template_name)
dir_content = os.listdir(NOTE_TYPES_DIR)
if template_name in dir_content:
ans = input(f"\"{template_name}\" already exists. Overwrite [y/N]?")
if ans.lower() != 'y':
while template_name in dir_content:
dir_path = os.path.join(NOTE_TYPES_DIR, f"{template_name}_{random.randint(0, 9999)}")
if not os.path.isdir(dir_path):
os.mkdir(dir_path)
return dir_path
def save_note_type(template_json):
template_dir = create_template_dir(template_json["modelName"])
template_fp = os.path.join(template_dir, 'template.json')
readme_fp = os.path.join(template_dir, 'README.md')
with open(template_fp, 'w') as f:
f.write(json.dumps(template_json, indent=JSON_INDENT))
with open(readme_fp, 'w') as f:
f.write(f"# {template_json['modelName']}\n\n*Descriptions and screenshots here.*")
def export_note_type(): def export_note_type():
models = invoke('modelNames') models = invoke('modelNames')
if not models: if not models:
@ -44,8 +76,8 @@ def export_note_type():
idx = read_num("\nSelect model number: ", max_val=len(models) - 1) idx = read_num("\nSelect model number: ", max_val=len(models) - 1)
model = models[int(idx)] model = models[int(idx)]
print(f"Selected model: {model}") print(f"Selected model: {model}")
template = fetch_template(model) save_note_type(fetch_template(model))
print(json.dumps(template, indent=JSON_INDENT)) print("Done.")
if __name__ == '__main__': if __name__ == '__main__':