#!python import os import argparse import datetime import traceback DEFAULT_FRONT_MATTER = { 'slug': '', 'title': '', 'description': '', 'toc': True, 'authors': [], 'tags': [], 'categories': [], 'series': [], 'date': '', 'lastmod': '', 'featuredVideo': '', 'featuredImage': '', 'draft': False, 'enableComment': True } def standard_time(time_str): dt = datetime.datetime.strptime(time_str, "%Y-%m-%d") return dt.isoformat() def get_year(time_str): dt = datetime.datetime.strptime(time_str, "%Y-%m-%d") return dt.year def create_post(filepath, args): with open(filepath, 'w', encoding="utf-8") as f: f.write('---\n') for key in DEFAULT_FRONT_MATTER.keys(): if key in ('title', 'slug'): f.write(f'{key}: {args.posttitle}\n') elif key in ('date', 'lastmod'): if args.postdate is not None: f.write(f'{key}: {standard_time(args.postdate)}\n') else: f.write(f'{key}: {datetime.datetime.now().isoformat()}\n') else: if type(DEFAULT_FRONT_MATTER[key]) is str: if DEFAULT_FRONT_MATTER[key] == '': f.write(f'{key}: \n') else: f.write(f'{key}: {DEFAULT_FRONT_MATTER[key]}\n') elif type(DEFAULT_FRONT_MATTER[key]) is bool: f.write(f'{key}: {"true" if DEFAULT_FRONT_MATTER[key] else "false"}\n') else: f.write(f'{key}: {DEFAULT_FRONT_MATTER[key]}\n') f.write('---\n\n') def mkdir(dirpath): if os.path.isdir(dirpath) is False: os.makedirs(dirpath) def main(args): if args.posttitle is None: print("Need a title!") return print(f'\n--------------------------------------------------------------------------------\nargs.posttitle = {args.posttitle}') os.chdir('content/posts') dir_name = os.path.join(str(get_year(args.postdate)), args.posttitle) try: mkdir(dir_name) mkdir(os.path.join(dir_name, 'images')) os.chdir(dir_name) create_post('index.md', args) except: print(traceback.format_exc()) print(f"Cannot create folder: {dir_name}") if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument("-t", "--posttitle", default=None, type=str, help="The title of post.") parser.add_argument("-d", "--postdate", default=datetime.datetime.now().strftime('%Y-%m-%d'), help="The date of post.") args = parser.parse_args() main(args)