Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/dogsheep/apple-notes-to-sqlite

Export Apple Notes to SQLite
https://github.com/dogsheep/apple-notes-to-sqlite

apple-notes datasette datasette-tool dogsheep sqlite

Last synced: about 9 hours ago
JSON representation

Export Apple Notes to SQLite

Awesome Lists containing this project

README

        

# apple-notes-to-sqlite

[![PyPI](https://img.shields.io/pypi/v/apple-notes-to-sqlite.svg)](https://pypi.org/project/apple-notes-to-sqlite/)
[![Changelog](https://img.shields.io/github/v/release/dogsheep/apple-notes-to-sqlite?include_prereleases&label=changelog)](https://github.com/dogsheep/apple-notes-to-sqlite/releases)
[![Tests](https://github.com/dogsheep/apple-notes-to-sqlite/workflows/Test/badge.svg)](https://github.com/dogsheep/apple-notes-to-sqlite/actions?query=workflow%3ATest)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/dogsheep/apple-notes-to-sqlite/blob/master/LICENSE)

Export Apple Notes to SQLite

## Installation

Install this tool using `pip`:

pip install apple-notes-to-sqlite

## Usage

For help, run:

apple-notes-to-sqlite --help

You can also use:

python -m apple_notes_to_sqlite --help

To save your notes to a SQLite database called `notes.db` run:

apple-notes-to-sqlite notes.db

A progress bar will be shown.

You can stop it after a specified number of notes using `--stop-after`:

apple-notes-to-sqlite notes.db --stop-after 10

To dump the notes to standard output out as newline-delimited JSON, rather than saving them to a database, use the `--dump` option:

apple-notes-to-sqlite --dump

## Schema

The database schema generated by this tool looks like this:

```sql
CREATE TABLE [folders] (
[id] INTEGER PRIMARY KEY,
[long_id] TEXT,
[name] TEXT,
[parent] INTEGER,
FOREIGN KEY([parent]) REFERENCES [folders]([id])
);
CREATE TABLE [notes] (
[id] TEXT PRIMARY KEY,
[created] TEXT,
[updated] TEXT,
[folder] INTEGER,
[title] TEXT,
[body] TEXT,
FOREIGN KEY([folder]) REFERENCES [folders]([id])
);
CREATE UNIQUE INDEX [idx_folders_long_id]
ON [folders] ([long_id]);
```

### apple-notes-to-sqlite --help

```
Usage: apple-notes-to-sqlite [OPTIONS] [DB_PATH]

Export Apple Notes to SQLite

Example usage:

apple-notes-to-sqlite notes.db

This will populate notes.db with 'notes' and 'folders' tables containing all
of your notes.

Options:
--version Show the version and exit.
--stop-after INTEGER Stop after this many notes
--dump Output notes to standard output
--schema Create database schema and exit
--help Show this message and exit.

```

## Development

To contribute to this tool, first checkout the code. Then create a new virtual environment:

cd apple-notes-to-sqlite
python -m venv venv
source venv/bin/activate

Now install the dependencies and test dependencies:

pip install -e '.[test]'

To run the tests:

pytest