Skip to main content

Library for Managing your Obsidian Vault

Project description

OVault

A python library for accessing and editing your Obsidian vault.

[!WARNING] This library can easily make large changes to your vault which may be difficult to reverse. Make sure to have a backup of your vault before using OVault to modify it.

Check out the examples!

Code Example

import ovault

# Open a vault at a given path
vault = ovault.Vault("test-vaults/simple_vault")

print("Vault Path  :", vault.path)
print("Notes       :", len(vault.notes()))
print("Attachments :", len(vault.attachments()))
print("Tags        :", sorted(vault.tags()))
print()

# Get the note named 'first_note'
note = vault.note("first_note")

print("Note Name   :", note.name)
print("Note Path   :", note.path)
print("Note Tokens :", note.tokens())

Output:

Vault Path  : /home/balder/projects/ovault/test-vaults/simple_vault
Notes       : 11
Attachments : 3
Tags        : ['callout4youtag', 'frontmatter-tag1', 'frontmatter-tag2', 'linksaregood']

Note Name   : first_note
Note Path   : first_note.md
Note Tokens : [Header(# FIRST NOTE!), Text(Wuhuuuuuuuuuuu!Thi...), InternalLink(second note), Text(.Takes a look at t...), InternalLink(sub/todo), Text()]

Included Utilities

OVault includes runnable modules for common tasks. Get an overview by running the ovault module:

python -m ovault

Output:

OVault provies a few utilties out of the box.

You can run them like so: `python3 -m ovault.<module>`

Available modules:
    ovault.mv                     : Rename a file within an Obsidian vault, updating all links accordingly.
    ovault.help                   : Show a list of all utility modules included in `ovault`.
    ovault.check_links            : Check all external links to websites in an Obsidian vault and report any broken links.
    ovault.name_pasted_images     : Rename pasted images in the vault based on the note they are pasted into.
    ovault.filename_compatibility : Check filenames for compatibility across different operating systems.
    ovault.info                   : Show information about an Obsidian vault.

Install

pip install ovault

or locally

git pull https://github.com/BalderHolst/ovault
cd ovault
pip install .

Features

Vault Management

Indexing
  • Indexing: Automatically indexes all notes and attachments within the vault upon initialization.
  • Ignored Files: Respects and parses .vault-ignore files to exclude specified paths during indexing.
  • Dangling Links: Identify and list links within your notes that point to non-existent files.

Note Handling

Access & Properties
  • Access Notes & Attachments: Retrieve all notes or attachments in the vault as Python objects.
  • Frontmatter Extraction: Manipulate YAML frontmatter from notes.
Modification
  • Dynamic Note Modification: Programmatically insert or replace parts of a note

Tag Management

Querying Tags
  • List All Tags: Get a complete list of tags present in your vault.
  • Filter by Tag: Retrieve all notes associated with a specific tag.

Markdown Parsing & Tokenization

Token Representation
  • Rich Token Representation: Notes are parsed into a detailed stream of Token objects, representing various markdown elements.
  • Available Tokens:
    • Plain Text: This is text
    • Headers: (# Heading)
    • Internal Links: ([[Note Name]], ![[Image.png]])
    • External Links: ([link text](url), ![image alt](url))
    • Tags: (#tag)
    • Code Blocks: (fenced code, inline code)
    • Quotes: (> Quote)
    • Math: ($inline$ and $$display$$ LaTeX)
    • Dividers: (---)
    • Callouts: (> [!type] Title)
    • Frontmatter: (YAML metadata)
    • List: - item 1\n- item 2
    • NumericList: 1. first\n2. second
    • CheckList: - [x] done\n- [ ] not done
    • TemplaterCommand: (<% code goes here %>)

See lexer/tokens.rs for token definitions.

Contributing

I would be more than happy if anyone finds this useful enough to add to, or modify this code.

Development

Install ovault and development dependencies with

pip install -e ".[dev]"

or use the nix flake

nix develop

Build for Testing

maturin develop --release --features python

Test

./scripts/test.sh

Build Documentation

./scripts/build-docs.py

Release

  1. Bump version in Cargo.toml
  2. Commit change and push
  3. Merge dev into main and push
  4. Create a git tag with the same version: git tag <version>
  5. Push new tag: git push --tags

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ovault-0.0.8-cp37-abi3-win_amd64.whl (549.6 kB view details)

Uploaded CPython 3.7+Windows x86-64

ovault-0.0.8-cp37-abi3-manylinux_2_34_x86_64.whl (716.2 kB view details)

Uploaded CPython 3.7+manylinux: glibc 2.34+ x86-64

ovault-0.0.8-cp37-abi3-macosx_11_0_arm64.whl (656.0 kB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

File details

Details for the file ovault-0.0.8-cp37-abi3-win_amd64.whl.

File metadata

  • Download URL: ovault-0.0.8-cp37-abi3-win_amd64.whl
  • Upload date:
  • Size: 549.6 kB
  • Tags: CPython 3.7+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ovault-0.0.8-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 303224a17ae8843aa3b509e8b7c518eb94be3a579d2ec0e7e9c0802d7f593f85
MD5 8090ed4223b8712a0c7ae4136a3ed84e
BLAKE2b-256 782e4d2df9888845f6de4df45ea4100554e7ef2c0d8fbcf9706567508083b003

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovault-0.0.8-cp37-abi3-win_amd64.whl:

Publisher: release.yaml on BalderHolst/ovault

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ovault-0.0.8-cp37-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ovault-0.0.8-cp37-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d39bf7f918ccccb613a92291a30d82fb84811f5aba010e5b87e638b92aacb80b
MD5 15f09c7ec6ebfa493b48299104e2e0ee
BLAKE2b-256 146cc3234ed11e7d63533b17a60beea47660becd0f03e2e4f03cb590409e01c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovault-0.0.8-cp37-abi3-manylinux_2_34_x86_64.whl:

Publisher: release.yaml on BalderHolst/ovault

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ovault-0.0.8-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ovault-0.0.8-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7b8a81d43bc3050dc072ef464f88f689b8636429e98d939883ea769a030e17d3
MD5 e76ff467d12299f58da71b2ec158bac7
BLAKE2b-256 2dff50f2fd6df048a367e7fb2bd6ceddee20d2d074fb28cc1c4a273a7d2a39ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovault-0.0.8-cp37-abi3-macosx_11_0_arm64.whl:

Publisher: release.yaml on BalderHolst/ovault

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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