https://github.com/cheeksthegeek/pyjsoncanvas
A simple library for working with JSON Canvas (previously known as Obsidian Canvas) files.
https://github.com/cheeksthegeek/pyjsoncanvas
canvas diagramming diagrams json markdown obsidian python
Last synced: 7 months ago
JSON representation
A simple library for working with JSON Canvas (previously known as Obsidian Canvas) files.
- Host: GitHub
- URL: https://github.com/cheeksthegeek/pyjsoncanvas
- Owner: CheeksTheGeek
- License: mit
- Created: 2024-03-21T01:56:16.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-03T20:34:35.000Z (about 1 year ago)
- Last Synced: 2025-03-04T09:44:30.952Z (7 months ago)
- Topics: canvas, diagramming, diagrams, json, markdown, obsidian, python
- Language: Python
- Homepage: https://pypi.org/project/PyJSONCanvas/
- Size: 19.5 KB
- Stars: 51
- Watchers: 1
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# PyJSONCanvas
PyJSONCanvas is a Python library for working with JSON Canvas (previously known as Obsidian Canvas) files. It provides a simple and intuitive API for creating, editing, and manipulating canvas objects, nodes, and edges.
## Features
- Create, load, and save canvas files in JSON format
- Add, remove, and modify nodes (text, file, link, group)
- Add, remove, and modify edges with various styles and colors
- Validate canvas, nodes, and edges for integrity
- Get connections and adjacent nodes for a given node
- Extensive error handling and helpful exception messages## Installation
You can install PyJSONCanvas using pip:
```
pip install PyJSONCanvas
```## Usage
Here's a basic example of how to use PyJSONCanvas:
```python
from pyjsoncanvas import (
Canvas,
TextNode,
FileNode,
LinkNode,
GroupNode,
GroupNodeBackgroundStyle,
Edge,
Color,
)# Create a new canvas
canvas = Canvas(nodes=[], edges=[])# Add some nodes
text_node = TextNode(x=100, y=100, width=200, height=100, text="Hello, world!")
canvas.add_node(text_node)file_node = FileNode(x=300, y=100, width=100, height=100, file="/path/to/file.png")
canvas.add_node(file_node)# Add an edge
edge = Edge(
fromNode=text_node.id,
fromSide="bottom",
toNode=file_node.id,
toSide="top",
color=Color("#FF0000"),
label="Edge 1",
)
canvas.add_edge(edge)# Save the canvas as JSON
json_str = canvas.to_json()# Load the canvas from JSON
loaded_canvas = Canvas.from_json(json_str)# Get a node
node = loaded_canvas.get_node(text_node.id)# Get connections for a node
connections = loaded_canvas.get_connections(text_node.id)
```## Documentation
For full documentation, please see the [PyJSONCanvas Documentation](docs/PyJSONCanvas.md).
## Contributing
We welcome contributions to PyJSONCanvas! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the [GitHub repository](https://github.com/cheeksthegeek/PyJSONCanvas).
## License
PyJSONCanvas is released under the [MIT License](https://opensource.org/licenses/MIT).
## Support
If you have any questions or need further assistance, please open an issue on the [GitHub repository](https://github.com/cheeksthegeek/PyJSONCanvas) or contact the maintainers.