#!/usr/bin/env python3 """ # Script ob-create-diaries ## Metadata **Kind**: #obsidian/ob-script **Language**: #python **Parent**:: [[Obsidian Chore Scripts]], [[Executable Markdown File]] ## Synopsis Create diaries for days that have journal note. ## Script ```python # """ import os import sys import datetime import glob def _date(date_str): date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') return date_obj.strftime('%a, %b %d, %Y') def _tomorrow(date_str): date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') tomorrow_obj = date_obj + datetime.timedelta(days=1) return tomorrow_obj.strftime('%Y-%m-%d') def _yesterday(date_str): date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') yesterday_obj = date_obj - datetime.timedelta(days=1) return yesterday_obj.strftime('%Y-%m-%d') def _week(date_str): date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d') return date_obj.strftime('%Y-W%V') def create_diary(): thirty_days_ago = datetime.datetime.now() - datetime.timedelta(days=30) journal_files = glob.glob('journal/Journal *.md') for journal_file in journal_files: date = os.path.splitext(os.path.basename(journal_file))[0].replace('Journal ', '') if datetime.datetime.strptime(date, '%Y-%m-%d') < thirty_days_ago: continue diary_file = f"periodic/{date}.md" week = _week(date) if not os.path.exists(diary_file): print(f"create {diary_file}") with open(diary_file, 'w', newline="\n") as f: f.write(f"![[{week}#^index]]\n\n") f.write(f"# {_date(date)}\n\n") f.write(f"**Kind**:: #periodic/daily\n") f.write(f"**Week**:: [[{week}]]\n") f.write(f"**Prev**:: [[{_yesterday(date)}]]\n") f.write(f"**Next**:: [[{_tomorrow(date)}]]\n\n") f.write(f"## Journal\n") f.write(f"**Journal**:: [[Journal {date}]]\n") f.write(f"![[Journal {date}#Journal]]\n") f.write(f"![[Journal {date}#Completed Tasks]]\n") if __name__ == '__main__': create_diary() """ # vim: ft=python ``` """