Skip to main content

python library for ObsidianMD

Project description

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

Warnings

  • This code hasn't been much tested yet, use at your own peril
  • This code only handles 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()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py-obsidianmd-0.1.0.tar.gz (7.0 kB view hashes)

Uploaded Source

Built Distribution

py_obsidianmd-0.1.0-py3-none-any.whl (6.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page