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.9-cp37-abi3-win_amd64.whl (549.6 kB view details)

Uploaded CPython 3.7+Windows x86-64

ovault-0.0.9-cp37-abi3-manylinux_2_34_x86_64.whl (716.6 kB view details)

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

ovault-0.0.9-cp37-abi3-macosx_11_0_arm64.whl (657.0 kB view details)

Uploaded CPython 3.7+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: ovault-0.0.9-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.9-cp37-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 268dfad1e897cf36c77259269df6647766604070011e2d191d89a0d2f7f6a3c7
MD5 09db553b7bc4d37f8780a50cbeae4f10
BLAKE2b-256 afe157b7492b6625f7bed68ab51e51c126adada77821965dd3bfefb6b1cd6721

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovault-0.0.9-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.9-cp37-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for ovault-0.0.9-cp37-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 199f5b0219ffff154116ffb0f20b1a8c023111027c3b80709716d95287ab8b93
MD5 587ce6e1b1893d834394320b693baeea
BLAKE2b-256 755f5620dbee56ee0cfc002d4763542b859f8f8a10a7aee47e4064d70ce6a584

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovault-0.0.9-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.9-cp37-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ovault-0.0.9-cp37-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 98ea81a53468db582083617dd9eef1fa2704dd826278053c1e17bcc70cd6eb10
MD5 86584f761c8217ee67dab502281f10e7
BLAKE2b-256 28208cc35b1a17b7ad46f4b8893b083d7358a812ce251e542702b56a10324e90

See more details on using hashes here.

Provenance

The following attestation bundles were made for ovault-0.0.9-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