Import Evernote ENEX files to Notion
Project description
enex2notion
Easy way to import Evernote's *.enex
files to Notion.so
Notion's native Evernote importer doesn't do it for me, so I decided to write my own. Thanks to Cobertos and md2notion for inspiration and Jamie Alexandre for notion-py.
You can either use Evernote native export or try out my other tool, evernote-backup, to export *.enex
files from Evernote.
What is preserved
- Embedded files and images are uploaded to Notion
- nested images will appear after paragraph
- Text formatting (bold, italic, etc) and colors
- Tables are converted to the new format (no colspans though)
- Web Clips
- as plain text or PDFs, see below
- Everything else basically
What is lost
- Paragraph alignment
- Subscript and superscript formatting
- Custom fonts and font sizes
- Tasks
- Encrypted blocks
- just decrypt them before export
Installation
Download the latest binary release for your OS.
With PIP
$ pip install enex2notion
Python 3.6 or later required.
Or, since enex2notion is a standalone tool, it might be more convenient to install it using pipx:
$ pipx install enex2notion
From source
This project uses poetry for dependency management and packaging. You will have to install it first. See poetry official documentation for instructions.
$ git clone https://github.com/vzhd1701/enex2notion.git
$ cd enex2notion/
$ poetry install --no-dev
$ poetry run enex2notion
Usage
$ enex2notion --help
usage: enex2notion [-h] [--token TOKEN] [--mode {DB,PAGE}] [--mode-webclips {TXT,PDF}] [--add-meta] [--done-file FILE] [--log FILE] [--verbose] [--version] FILE/DIR [FILE/DIR ...]
Uploads ENEX files to Notion
positional arguments:
FILE/DIR ENEX files or directories to upload
optional arguments:
-h, --help show this help message and exit
--token TOKEN Notion token, stored in token_v2 cookie for notion.so [NEEDED FOR UPLOAD]
--mode {DB,PAGE} upload each ENEX as database (DB) or page with children (PAGE) (default: DB)
--mode-webclips {TXT,PDF}
convert web clips to text (TXT) or pdf (PDF) before upload (default: TXT)
--add-meta include metadata (created, tags, etc) in notes, makes sense only with PAGE mode
--done-file FILE file for uploaded notes hashes to resume interrupted upload
--log FILE file to store program log
--verbose output debug information
--version show program's version number and exit
Input
You can pass single *.enex
files or directories. The program will recursively scan directories for *.enex
files.
Token & dry run mode
The upload requires you to have a token_v2
cookie for the Notion website. For information on how to get it, see this article.
The program can run without --token
provided though. It will not make any network requests without it. Executing a dry run with --verbose
is an excellent way to check if your *.enex
files are parsed correctly before uploading.
Upload continuation
The upload will take some time since each note is uploaded block-by-block, so you'll probably need some way of resuming it. --done-file
is precisely for that. All uploaded note hashes will be stored there, so the next time you start, the upload will continue from where you left off.
All uploaded notebooks will appear under the automatically created Evernote ENEX Import
page. The program will mark unfinished notes with [UNFINISHED UPLOAD]
text in the title. After successful upload, the mark will be removed.
Upload modes
The --mode
option allows you to choose how to upload your notebooks: as databases or pages. DB
mode is the default since Notion itself uses this mode when importing from Evernote. PAGE
mode makes the tree feel like the original Evernote notebooks hierarchy.
Since PAGE
mode does not benefit from having separate space for metadata, you can still preserve the note's original meta with the --add-meta
option. It will attach a callout block with all meta info as a first block in each note like this.
Web Clips
Due to Notion's limitations Evernote web clips cannot be uploaded as-is. enex2notion
provides two modes with the --mode-webclips
option:
-
TXT
, converting them to text, stripping all HTML formatting [Default]- similar to Evernote's "Simplify & Make Editable"
-
PDF
, converting them to PDF, keeping HTML formatting as close as possible- web clips are converted using wkhtmltopdf, see this page on how to install it
Examples
Checking notes before upload
$ enex2notion --verbose my_notebooks/
Uploading notes from a single notebook
$ enex2notion --token <YOUR_TOKEN_HERE> "notebook.enex"
Uploading with the option to continue later
$ enex2notion --token <YOUR_TOKEN_HERE> --done-file done.txt "notebook.enex"
Getting help
If you have a question about the program or have difficulty using it, you are welcome to the discussions page. You can also mail me directly, I'm always happy to help.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file enex2notion-0.2.3.tar.gz
.
File metadata
- Download URL: enex2notion-0.2.3.tar.gz
- Upload date:
- Size: 27.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.9 Linux/5.11.0-1022-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 169610af6c4e684f4b167fcb23f44aee07c71582de12758ffe7079fbe71a9334 |
|
MD5 | 37f4bd2bfe4606234026ba5f82b1f5dc |
|
BLAKE2b-256 | 811fedce402943274dac00b6b6e8bd1f6957d573db4ce4922cb794d7aec9e930 |
File details
Details for the file enex2notion-0.2.3-py3-none-any.whl
.
File metadata
- Download URL: enex2notion-0.2.3-py3-none-any.whl
- Upload date:
- Size: 33.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.11 CPython/3.9.9 Linux/5.11.0-1022-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7776d9e67d14df5f8c241e9433c1b77f751c91d80ff2340e13252413d3fa36f |
|
MD5 | 104aafb2e3eef97da28bcca1341853f7 |
|
BLAKE2b-256 | 26a64cff9b6d22082d058ab65b403a5f4ebf8a93687a7fa6744c4c336bf39cfe |