Metadata-Version: 2.1
Name: Notoma
Version: 0.0.1
Summary: Write your blog articles in Notion. Notoma converts your Notion database pages to Markdown files.
Home-page: https://github.com/xnutsive/notoma/
Author: Nate Gadzhibalaev
Author-email: nate@respawn.io
License: Apache Software License 2.0
Project-URL: Documentation, https://xnutsive.github.io/notoma/
Project-URL: Source Code, https://github.com/xnutsive/notoma/
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Typing :: Typed
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: beautifulsoup4 (==4.9.1)
Requires-Dist: bs4 (==0.0.1)
Requires-Dist: cached-property (==1.5.1)
Requires-Dist: certifi (==2020.4.5.1)
Requires-Dist: chardet (==3.0.4)
Requires-Dist: click (==7.1.2)
Requires-Dist: commonmark (==0.9.1)
Requires-Dist: dictdiffer (==0.8.1)
Requires-Dist: idna (==2.9)
Requires-Dist: jinja2 (==3.0.0a1)
Requires-Dist: markupsafe (==2.0.0a1)
Requires-Dist: notion (==0.0.25)
Requires-Dist: python-dotenv (==0.13.0)
Requires-Dist: python-slugify (==4.0.0)
Requires-Dist: pytz (==2020.1)
Requires-Dist: requests (==2.23.0)
Requires-Dist: soupsieve (==2.0.1)
Requires-Dist: text-unidecode (==1.3)
Requires-Dist: tzlocal (==2.1)
Requires-Dist: urllib3 (==1.25.9)
Provides-Extra: dev
Requires-Dist: appdirs (==1.4.4) ; extra == 'dev'
Requires-Dist: async-generator (==1.10) ; extra == 'dev'
Requires-Dist: attrs (==19.3.0) ; extra == 'dev'
Requires-Dist: backcall (==0.1.0) ; extra == 'dev'
Requires-Dist: black (==19.10b0) ; extra == 'dev'
Requires-Dist: bleach (==3.1.5) ; extra == 'dev'
Requires-Dist: certifi (==2020.4.5.1) ; extra == 'dev'
Requires-Dist: cfgv (==3.1.0) ; extra == 'dev'
Requires-Dist: chardet (==3.0.4) ; extra == 'dev'
Requires-Dist: click (==7.1.2) ; extra == 'dev'
Requires-Dist: decorator (==4.4.2) ; extra == 'dev'
Requires-Dist: defusedxml (==0.7.0rc1) ; extra == 'dev'
Requires-Dist: distlib (==0.3.0) ; extra == 'dev'
Requires-Dist: docutils (==0.16) ; extra == 'dev'
Requires-Dist: entrypoints (==0.3) ; extra == 'dev'
Requires-Dist: filelock (==3.0.12) ; extra == 'dev'
Requires-Dist: flake8 (==3.8.1) ; extra == 'dev'
Requires-Dist: identify (==1.4.15) ; extra == 'dev'
Requires-Dist: idna (==2.9) ; extra == 'dev'
Requires-Dist: ipykernel (==5.3.0) ; extra == 'dev'
Requires-Dist: ipython-genutils (==0.2.0) ; extra == 'dev'
Requires-Dist: ipython (==7.14.0) ; extra == 'dev'
Requires-Dist: ipywidgets (==8.0.0a0) ; extra == 'dev'
Requires-Dist: jedi (==0.17.0) ; extra == 'dev'
Requires-Dist: jinja2 (==3.0.0a1) ; extra == 'dev'
Requires-Dist: jsonschema (==3.2.0) ; extra == 'dev'
Requires-Dist: jupyter-client (==6.1.3) ; extra == 'dev'
Requires-Dist: jupyter-console (==6.1.0) ; extra == 'dev'
Requires-Dist: jupyter-contrib-core (==0.3.3) ; extra == 'dev'
Requires-Dist: jupyter-contrib-nbextensions (==0.5.1) ; extra == 'dev'
Requires-Dist: jupyter-core (==4.6.3) ; extra == 'dev'
Requires-Dist: jupyter-highlight-selected-word (==0.2.0) ; extra == 'dev'
Requires-Dist: jupyter-latex-envs (==1.4.6) ; extra == 'dev'
Requires-Dist: jupyter-nbextensions-configurator (==0.4.1) ; extra == 'dev'
Requires-Dist: jupyter (==1.0.0) ; extra == 'dev'
Requires-Dist: jupyterlab-pygments (==0.1.1) ; extra == 'dev'
Requires-Dist: keyring (==21.2.1) ; extra == 'dev'
Requires-Dist: lxml (==4.5.1) ; extra == 'dev'
Requires-Dist: markupsafe (==2.0.0a1) ; extra == 'dev'
Requires-Dist: mccabe (==0.6.1) ; extra == 'dev'
Requires-Dist: mistune (==0.8.4) ; extra == 'dev'
Requires-Dist: nbclient (==0.3.1) ; extra == 'dev'
Requires-Dist: nbconvert (==6.0.0a1) ; extra == 'dev'
Requires-Dist: nbexec (==0.1.0) ; extra == 'dev'
Requires-Dist: nbformat (==5.0.6) ; extra == 'dev'
Requires-Dist: nest-asyncio (==1.3.3) ; extra == 'dev'
Requires-Dist: nodeenv (==1.3.5) ; extra == 'dev'
Requires-Dist: notebook (==6.0.3) ; extra == 'dev'
Requires-Dist: packaging (==20.4) ; extra == 'dev'
Requires-Dist: pandocfilters (==1.4.2) ; extra == 'dev'
Requires-Dist: parso (==0.7.0) ; extra == 'dev'
Requires-Dist: pathspec (==0.8.0) ; extra == 'dev'
Requires-Dist: pickleshare (==0.7.5) ; extra == 'dev'
Requires-Dist: pkginfo (==1.5.0.1) ; extra == 'dev'
Requires-Dist: pre-commit (==2.4.0) ; extra == 'dev'
Requires-Dist: prometheus-client (==0.7.1) ; extra == 'dev'
Requires-Dist: prompt-toolkit (==3.0.5) ; extra == 'dev'
Requires-Dist: pycodestyle (==2.6.0) ; extra == 'dev'
Requires-Dist: pyflakes (==2.2.0) ; extra == 'dev'
Requires-Dist: pygments (==2.6.1) ; extra == 'dev'
Requires-Dist: pyparsing (==3.0.0a1) ; extra == 'dev'
Requires-Dist: pyrsistent (==0.16.0) ; extra == 'dev'
Requires-Dist: python-dateutil (==2.8.1) ; extra == 'dev'
Requires-Dist: pyyaml (==5.3.1) ; extra == 'dev'
Requires-Dist: pyzmq (==19.0.1) ; extra == 'dev'
Requires-Dist: qtconsole (==4.7.4) ; extra == 'dev'
Requires-Dist: qtpy (==1.9.0) ; extra == 'dev'
Requires-Dist: readme-renderer (==26.0) ; extra == 'dev'
Requires-Dist: regex (==2020.5.14) ; extra == 'dev'
Requires-Dist: requests-toolbelt (==0.9.1) ; extra == 'dev'
Requires-Dist: requests (==2.23.0) ; extra == 'dev'
Requires-Dist: send2trash (==1.5.0) ; extra == 'dev'
Requires-Dist: six (==1.14.0) ; extra == 'dev'
Requires-Dist: terminado (==0.8.3) ; extra == 'dev'
Requires-Dist: testpath (==0.4.4) ; extra == 'dev'
Requires-Dist: toml (==0.10.1) ; extra == 'dev'
Requires-Dist: tornado (==6.0.4) ; extra == 'dev'
Requires-Dist: tqdm (==4.46.0) ; extra == 'dev'
Requires-Dist: traitlets (==4.3.3) ; extra == 'dev'
Requires-Dist: twine (==3.1.1) ; extra == 'dev'
Requires-Dist: typed-ast (==1.4.1) ; extra == 'dev'
Requires-Dist: urllib3 (==1.25.9) ; extra == 'dev'
Requires-Dist: virtualenv (==20.0.21) ; extra == 'dev'
Requires-Dist: wcwidth (==0.1.9) ; extra == 'dev'
Requires-Dist: webencodings (==0.5.1) ; extra == 'dev'
Requires-Dist: widgetsnbextension (==4.0.0a0) ; extra == 'dev'
Requires-Dist: zipp (==3.1.0) ; extra == 'dev'
Requires-Dist: ptyprocess (==0.6.0) ; (os_name != "nt") and extra == 'dev'
Requires-Dist: importlib-metadata (==1.6.0) ; (python_version < "3.8") and extra == 'dev'
Requires-Dist: pexpect (==4.8.0) ; (sys_platform != "win32") and extra == 'dev'
Requires-Dist: appnope (==0.1.0) ; (sys_platform == "darwin") and extra == 'dev'

# Notoma

> Write articles for your static gen blog in Notion.



## Work on progress! 

This is a super early version of Notoma — and this document is half true and half fiction.


## Install

Notoma is available via Pip and Homebrew: 

```bash
# Installing with pip, use this if you plan using Notoma as a python library.
pip install notoma
```

```bash
# Installing with brew
# Use this if you just want the CLI tool
brew install cask/xnutsive/notoma
```

## Basic Usage

Notoma provides commands to: 
- Convert contents of your Notion Blog database to a bunch of Markdown files.
- Watch Notion Blog database for updates and regenerate Markdown files on any updates.
- Create a new Notion database for your Blog with all required fields.

Here's the basic usage example: 

```bash
notoma convert --dest ./posts/
```

This example assumes that you have a `.env` config file with authentication and blog url parameters in it, this guide covers those later.

#### Authenticating in Notion

Since Notion doesn't yet (May 2020) have a public API, Notoma requires your Notion cookie auth token that you can get from your browser.

You can provide `token_v2` option to every command line call, or store it in your environment, or `.env` file.

#### Converting your Notion articles

`notoma convert --help`
<div class="codecell" markdown="1">
<div class="input_area" markdown="1">

```python

```

</div>

</div>


