Python utilities for the personal knowledge management tool Obsidian
Motivation
I wanted to modify my notes' metadata in batch and couldn't find an existing plugin to do so. If some of the functionalities you see here are already available in a plugin, please let me know. Open for contributions.
Current features
- Create a Note object from a file path, that has a 'frontmatter', 'metadata', and 'tags' attributes
- Add / remove tags from the note
- Write back the updated note to disk
Warning
- WARNING 1: This code hasn't been much tested yet, use at your own peril :)
- WARNING 2: This code only ahndles tags present in the frontmatter, not the note body
Basic usage
path = Path('path/to/file')
note = Note(path)
## print frontmatter
print(note.frontmatter)
## get the note's metadata (from frontmatter) as a dict
note.metadata
## get list of tags
print(note.tags)
## add a tag
note.add_tag('tag_name')
## remove a tag
note.remove_tag('tag_name')
## write the note with the updated metadata
note.write()
Original motivation: add a tag to all files in a folder
import os
from pathlib import Path
from source.note import Note
path_dir = Path('path/to/dir')
for r,d,fls in os.walk(path_dir):
for f in fls:
pth = Path(r)/f
note = Note(pth)
note.add_tag('tag_name')
note.write()