#!/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
```
"""