{ "info": { "author": "Jani Karhunen", "author_email": "janikarh@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Text Processing", "Topic :: Utilities" ], "description": "# enex2md\n\n[![version](https://img.shields.io/pypi/v/enex2md.svg?style=flat)](https://pypi.org/project/enex2md/)\n[![platform](https://img.shields.io/pypi/pyversions/enex2md.svg?style=flat)](https://pypi.org/project/enex2md/)\n[![wheel](https://img.shields.io/pypi/wheel/enex2md.svg?style=flat)](https://pypi.org/project/enex2md/)\n[![downloads](https://img.shields.io/pypi/dm/enex2md.svg?style=flat)](https://pypi.org/project/enex2md/)\n[![license](https://img.shields.io/github/license/janikarh/enex2md.svg?style=flat)](https://github.com/janikarh/enex2md/blob/master/LICENSE)\n\nEnex2md is a command-line utility to convert Evernote export files (`*.enex`) to [GitHub Flavored Markdown](https://github.github.com/gfm/).\n\n## Features\n\nIn addition to the note content itself, the note metadata is included in the resulting Markdown. The enex-bundle may contain one or more notes.\n\nWithin the note content, the following features are supported:\n\n- [x] Strong and emphasis text styles.\n- [x] Ordered (i.e. numbered) and unordered lists\n- [x] Tables created within Evernote are converted to [GFM Tables](https://github.github.com/gfm/#table)\n- [x] Tasks are converted to [GFM Task list items](https://github.github.com/gfm/#task-list-item)\n- [x] Images and other attachments\n- [x] Code blocks\n- [x] Subsequent empty lines are compressed to one.\n\nThe html in enex files is *somewhat interesting*, thus some *magic is used to massage the data to functioning feature-rich Markdown*. The Magic Book used here has not yet been fully written, so there might be some unfortunate side effects. Should you find one, [open an issue on GitHub](https://github.com/janikarh/enex2md/issues) with a well written description and **a test enex file** as an attachment.\n\nSee [Changelog](https://github.com/janikarh/enex2md/blob/master/CHANGELOG.md) for more details.\n\n## Installation\n\nPreferably in *a virtual environment*, run:\n\n`pip install -U enex2md`\n\n## Usage\n\nTo use the CLI after installing, run the conversion with:\n\n`enex2md [enex-file-to-process]`\n\nThe output is written to `STDOUT` by default. If you want to write to disk instead, add a flag `--disk` to the command. This option will create a directory based on run time timestamp, and place individual files under that.\n\n*Please note, that on STDOUT output option attachments (including images) are not processed!*\n\n## Development\n\nClone the [repository](https://github.com/janikarh/enex2md) to your local machine.\n\n*I strongly recommend using a virtual environment for development.*\n\nInstall the requirements with:\n\n`pip install -r requirements.txt`\n\nFrom the root of the repository, you can run the app with:\n\n`python -m enex2md.cli foo.enex`\n\nAfter editing the content, try to install the package locally with:\n\n`python setup.py install`\n\nSee that everything works. You can uninstall the dev package with `pip uninstall enex2md`.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/janikarh/enex2md", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "enex2md", "package_url": "https://pypi.org/project/enex2md/", "platform": "", "project_url": "https://pypi.org/project/enex2md/", "project_urls": { "Homepage": "https://github.com/janikarh/enex2md" }, "release_url": "https://pypi.org/project/enex2md/0.3.4/", "requires_dist": [ "click", "lxml", "python-dateutil", "html2text", "beautifulsoup4" ], "requires_python": ">=3.6.0", "summary": "Convert enex to Markdown.", "version": "0.3.4" }, "last_serial": 5759569, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "f3004d870f61231244fe9785f3b843c0", "sha256": "ad6c2c8e7a576cd7173552190ae12ee38d21561ac4e1abb7013c304034e82b60" }, "downloads": -1, "filename": "enex2md-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "f3004d870f61231244fe9785f3b843c0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 3989, "upload_time": "2019-02-01T19:27:54", "url": "https://files.pythonhosted.org/packages/ee/f5/58ce78a7841c6dbbdc029c637d4c3bd651e530974f2f237124bbcdf1ec9d/enex2md-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c9a9c155ff0ede612c3a7207a79a9ad3", "sha256": "12bb355e8ea4bb3e81171808b97a4ddd7152e54eb1eeea4e3c0bbbbad72ea623" }, "downloads": -1, "filename": "enex2md-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c9a9c155ff0ede612c3a7207a79a9ad3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 3394, "upload_time": "2019-02-01T19:27:56", "url": "https://files.pythonhosted.org/packages/a7/c2/e831b8c0b5419087d91250d4b122d9c144949609f9268560a9086e344776/enex2md-0.0.3.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "69f443616c5b627754522f970840a442", "sha256": "8021bc748d96b50c9cb5f5e2fa7457022394f5dcdc24b5990e3fe951d4e85383" }, "downloads": -1, "filename": "enex2md-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "69f443616c5b627754522f970840a442", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 5195, "upload_time": "2019-02-02T17:24:09", "url": "https://files.pythonhosted.org/packages/a6/99/aa5de9a93c3a128e70269e0abd9a9992550006cf3e49eca5709e9c8514a9/enex2md-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f1a88fd1bd96fcef9d13f5133668944f", "sha256": "42955d263a3518f9a9fbd90f0a08ceecf32a1e3631630dd37d74790fd4e97354" }, "downloads": -1, "filename": "enex2md-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f1a88fd1bd96fcef9d13f5133668944f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 4813, "upload_time": "2019-02-02T17:24:10", "url": "https://files.pythonhosted.org/packages/78/0f/f9863f1240acaa33b00ad7a823287cc5fe3ec7be6ded2f0915c66f2ef454/enex2md-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e3930858c224540ddf3fa3b5da1d3a6d", "sha256": "2aa6b6e3d05dbfe830b0f389cab2a8e9896cae92b372fd377847bb09bd197083" }, "downloads": -1, "filename": "enex2md-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "e3930858c224540ddf3fa3b5da1d3a6d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 5960, "upload_time": "2019-02-05T16:51:48", "url": "https://files.pythonhosted.org/packages/51/6b/b39fe5a3f5625867a55b7e72a85c4f1342c23f497420f4c8d4b05f974f78/enex2md-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b7452babd430f776da4fd8882a6c5415", "sha256": "fd880a95ada5a975edabf841e8331f3a2aedda0fd924872b87ca7c0ef1bb7b84" }, "downloads": -1, "filename": "enex2md-0.1.1.tar.gz", "has_sig": false, "md5_digest": "b7452babd430f776da4fd8882a6c5415", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 5878, "upload_time": "2019-02-05T16:51:49", "url": "https://files.pythonhosted.org/packages/cf/09/9159222b6488a09813d46c34b5f380c19b600673e837c21b651e4d63b182/enex2md-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "d35e8af1a32665e4cd82dbeb56edcd92", "sha256": "9e2a2616df514428deba48d796285611f0611fb8f5c4bbeb3b38de424918dff3" }, "downloads": -1, "filename": "enex2md-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d35e8af1a32665e4cd82dbeb56edcd92", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 6711, "upload_time": "2019-02-09T14:52:51", "url": "https://files.pythonhosted.org/packages/74/e5/0675fb9a9d624c389ebf43a31343cebe01cecb857184e9f6871e1ab2f333/enex2md-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9786905865f49224df2b3af5ee27d3e5", "sha256": "8e704a7b70ec7cf0e1c246317cac95bcddddffb7dd363ea0a3e84600e3b087ad" }, "downloads": -1, "filename": "enex2md-0.2.0.tar.gz", "has_sig": false, "md5_digest": "9786905865f49224df2b3af5ee27d3e5", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 6727, "upload_time": "2019-02-09T14:52:53", "url": "https://files.pythonhosted.org/packages/66/b3/79f61ae1c68ae49e764c94228eebfebcbf519c6bc03e471a56ca19a5085f/enex2md-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "3e6cdc57d718da6b7a4a37f0ee86f6ad", "sha256": "cb7ce29bd448674442915ede6c91c8f85e3f209100c3d6a2e3ecebfa38e459d6" }, "downloads": -1, "filename": "enex2md-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "3e6cdc57d718da6b7a4a37f0ee86f6ad", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 7462, "upload_time": "2019-02-09T18:22:32", "url": "https://files.pythonhosted.org/packages/53/10/d2a4233489cd8ffd18e79961fe001b270e37ad2914321aaecc338145878c/enex2md-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e53e03a08d81bf7a4063d301f6ae5268", "sha256": "cf82bda71b6912596095655ce1a2b7816959814b4220696a276dc7f821fac644" }, "downloads": -1, "filename": "enex2md-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e53e03a08d81bf7a4063d301f6ae5268", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 7589, "upload_time": "2019-02-09T18:22:33", "url": "https://files.pythonhosted.org/packages/40/21/67bcdfc32048e43f14645bbd616c9fc4aca8c7615a4d7c2ac7018c848843/enex2md-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "770c8adc4ff359bc8403a197c67500e5", "sha256": "97ccaa75c36f9a07cd6998b51aba150f90ef01cc02a1d570648bd09375fc4655" }, "downloads": -1, "filename": "enex2md-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "770c8adc4ff359bc8403a197c67500e5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 7471, "upload_time": "2019-02-09T18:35:43", "url": "https://files.pythonhosted.org/packages/00/cb/eb52b8fe45b617c4dc59e3903a8c1b95d7c2f89c8c8298985eefd36e7a10/enex2md-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "15b0b1e2a0500c1ba84b53a33934c99e", "sha256": "4437a9777ad787692001a88de8d0c329f36da200b0d381ef9bef6116d95a6255" }, "downloads": -1, "filename": "enex2md-0.3.1.tar.gz", "has_sig": false, "md5_digest": "15b0b1e2a0500c1ba84b53a33934c99e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 7616, "upload_time": "2019-02-09T18:35:45", "url": "https://files.pythonhosted.org/packages/b1/b9/201d2a9e1c751e1d582a9ea3c23b3e1f1147c8fad7125426fd6267f43e29/enex2md-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "e52c93ac5c81388de621ee3f6005182f", "sha256": "a14cc459a70e69e8225b6013c23cab580227d5f8394e50e75663fdb5c40d63f3" }, "downloads": -1, "filename": "enex2md-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e52c93ac5c81388de621ee3f6005182f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 8444, "upload_time": "2019-02-10T13:53:52", "url": "https://files.pythonhosted.org/packages/f4/bd/bf017573bd7d90ff6dd9a7ebdd3d972842c9fcfeb8ef54e83d6385aec0fa/enex2md-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "21567381b106d44cdccb371abd378762", "sha256": "714575f499229cc2ce627b3e34a5317af9660050f979595129410727032a65ba" }, "downloads": -1, "filename": "enex2md-0.3.2.tar.gz", "has_sig": false, "md5_digest": "21567381b106d44cdccb371abd378762", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8668, "upload_time": "2019-02-10T13:53:54", "url": "https://files.pythonhosted.org/packages/a3/04/57904e6cb6acda975cdd19a3aadf982d09ac4ca63b2ede1d315468cc0e16/enex2md-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "b96ebbb1df74094c86e5b8efdefb12b6", "sha256": "99a1c4d0f8f802de0ab6bf7719e03adc9cc67a740c02950e1a37f4bb889ca28f" }, "downloads": -1, "filename": "enex2md-0.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "b96ebbb1df74094c86e5b8efdefb12b6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 8455, "upload_time": "2019-08-30T10:17:10", "url": "https://files.pythonhosted.org/packages/62/89/f3e8c2adfc034f5d5e71e479a3d90c1d8879b30b1efd3b8826ce56078818/enex2md-0.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c72adea7edd9627682ff39d6d9c994a", "sha256": "8f1cee4c4205629cbf5b21349f56a0d1bbe2f2b277c95e599cd1338e6a6d7486" }, "downloads": -1, "filename": "enex2md-0.3.3.tar.gz", "has_sig": false, "md5_digest": "6c72adea7edd9627682ff39d6d9c994a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8718, "upload_time": "2019-08-30T10:17:12", "url": "https://files.pythonhosted.org/packages/a3/1e/cedf9ddb7cbdfdef42a5be539e9f079b150556838cbf9a87eee4d80ce804/enex2md-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "7b6e96e97a623044e6369c97ed57db9d", "sha256": "4d0ffd2ffb094085435198ee5f91e76ceb52cf4bd09a04a4dca400767a5ca642" }, "downloads": -1, "filename": "enex2md-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "7b6e96e97a623044e6369c97ed57db9d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 8462, "upload_time": "2019-08-30T10:22:14", "url": "https://files.pythonhosted.org/packages/6c/18/135c955e590ff27bbd13dbc5813c32a46f64d07df36429220a61323da804/enex2md-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f78b7e4dc754f54e2affd02520477d6", "sha256": "2657d896d93677043bc324153c9d7d76aed8ed540a6922436fa3d891808a8aea" }, "downloads": -1, "filename": "enex2md-0.3.4.tar.gz", "has_sig": false, "md5_digest": "0f78b7e4dc754f54e2affd02520477d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8721, "upload_time": "2019-08-30T10:22:16", "url": "https://files.pythonhosted.org/packages/6e/fd/bf5b79cb28e09f335309f538fb637a3a8080c283ee937899be13ff152977/enex2md-0.3.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7b6e96e97a623044e6369c97ed57db9d", "sha256": "4d0ffd2ffb094085435198ee5f91e76ceb52cf4bd09a04a4dca400767a5ca642" }, "downloads": -1, "filename": "enex2md-0.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "7b6e96e97a623044e6369c97ed57db9d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6.0", "size": 8462, "upload_time": "2019-08-30T10:22:14", "url": "https://files.pythonhosted.org/packages/6c/18/135c955e590ff27bbd13dbc5813c32a46f64d07df36429220a61323da804/enex2md-0.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0f78b7e4dc754f54e2affd02520477d6", "sha256": "2657d896d93677043bc324153c9d7d76aed8ed540a6922436fa3d891808a8aea" }, "downloads": -1, "filename": "enex2md-0.3.4.tar.gz", "has_sig": false, "md5_digest": "0f78b7e4dc754f54e2affd02520477d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 8721, "upload_time": "2019-08-30T10:22:16", "url": "https://files.pythonhosted.org/packages/6e/fd/bf5b79cb28e09f335309f538fb637a3a8080c283ee937899be13ff152977/enex2md-0.3.4.tar.gz" } ] }