{ "info": { "author": "\u0141ukasz Langa", "author_email": "lukasz@langa.pl", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 3 :: Only" ], "description": "=====\nzzyzx\n=====\n\nDo you believe in the cloud? It's in fact only somebody else's computer.\nThose might fail or get hacked.\n\nDo you believe in bug-free software? Nah, it's more likely every now and\nthen a crash, a bug, a race condition or some other back luck will lead\nto data corruption of the things that you work on.\n\nDo you think you'll be able to access your notes in thirty years? It's\nlikely the data format they're stored in is going to be hard to read.\n\nThis is why I store all my notes in my e-mail. It's been there since the\n1970s, it's going to be there in the 2050s. MIME and IMAP ensure the\ndata is more-less plaintext and easily human-readable even without any\ntool support. Apple Notes support it on both OS X and iOS. Pure win.\n\nBut wait, what about software failure? What if a bug erases my notes or\nthere's a data center fire and the data restored from a backup is in\na state from two days ago? What about bitrot?\n\nEnter ``zzyzx``.\n\nThis is the most primitive backup system ever. Set it up in cron on your\nlaptop or a server you control and it will create incremental backups\nwith history between runs (setting up a Mercurial repository). It also\ncreates useful symlinks to human-readable note titles so you can find\nthem more easily.\n\n\nInstallation\n------------\n\nIt requires Python 3.5+ and Click. Just install it from PyPI::\n\n $ pip install zzyzx\n $ cat >~/.zzyzx\n [server]\n host=mail.example.com\n user=john@example.com\n pass=secret\n\n [backup]\n repo_path=~/Notes\n ignore_prefix=INBOX.Notes\n $ zzyzx backup\n\n\nMarkdown export\n---------------\n\nIf you installed ``zzyzx[markdown]`` from PyPI, you can also run::\n\n $ zzyzx md\n\nThis will generate a list of files that are a textual representation\nof the notes' contents. This is useful for exporting Apple Notes into\nsystems that expect Markdown files, like\n`Bear `_.\n\nConfigure your Markdown support adding a section like the following\nto your `.zzyzx` config::\n\n [markdown]\n path=~/Dropbox/Notes\n extension=.txt\n headings=atx\n\nHeadings can be \"atx\" (simple hashes), \"atx_closed\" (symmetrical\nhashes), or \"underlined\" (ReST-like).\n\n\nWhy the name ``zzyzx``?\n-----------------------\n\nIt's the last place on Earth. It's the end of the world.\n\n\nKnown issues\n------------\n\nDon't put the repo path in Dropbox as it doesn't support symlinks and\nyour other computers will see a lot of duplicate files.\n\nThe Markdown export is not perfect because the HTML syntax used by\nApple Notes is pretty strange. I did what I could, tested against a few\nhundred notes against macOS Sierra and iOS 10.2 (they are not consistent\nbetween each other either).\n\n\nChanges\n-------\n\n2017.1.0\n~~~~~~~~\n\n* the Markdown export update: generally sucks less\n* also update the creation and modification date in the Markdown export\n* allow customization of the Markdown export file extensions\n* allow exporting folder-based hashtags (for example for use with Bear\n editor)\n\n2016.6.0\n~~~~~~~~\n\n* bugfix: slashes and backslashes weren't properly escaped for title\n symlinks\n\n2016.4.1\n~~~~~~~~\n\n* backwards incompatible: ``zzyzx`` functionality now available as\n ``zzyzx backup``\n* new functionality: ``zzyzx md`` unpacks .eml into text files and\n attachments, translating HTML into Markdown\n* bugfix: existing and newly created filenames are normalized to NFD;\n existing file tracking won't be so eager to delete files anymore on\n OS X\n\n2016.4.0\n~~~~~~~~\n\n* first published version\n\n\nAuthors\n-------\n\nGlued together by `\u0141ukasz Langa `.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/ambv/zzyzx", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "zzyzx", "package_url": "https://pypi.org/project/zzyzx/", "platform": "any", "project_url": "https://pypi.org/project/zzyzx/", "project_urls": { "Homepage": "http://github.com/ambv/zzyzx" }, "release_url": "https://pypi.org/project/zzyzx/2017.1.0/", "requires_dist": null, "requires_python": "", "summary": "A simple IMAP Notes backup tool.", "version": "2017.1.0" }, "last_serial": 2605764, "releases": { "2016.4.0": [ { "comment_text": "", "digests": { "md5": "467cc320591f43e13ca9f4123031772c", "sha256": "db9d3b0b822001feebf3c55d68cc86e412a9e99f50e9df5b045e96a5a2083b7c" }, "downloads": -1, "filename": "zzyzx-2016.4.0.tar.gz", "has_sig": false, "md5_digest": "467cc320591f43e13ca9f4123031772c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6227, "upload_time": "2016-04-07T23:35:54", "url": "https://files.pythonhosted.org/packages/29/bc/40a52325bdc88462e1343291bf22ddb7bb106bc4f19e1b4d2c857fa44e14/zzyzx-2016.4.0.tar.gz" } ], "2016.6.0": [ { "comment_text": "", "digests": { "md5": "dd14e24851811c035129d787e6745ac4", "sha256": "825b9ed6a883932d2a3c8d7b8db836cff02abb23e5776cbe146bd8c9c4a60fe8" }, "downloads": -1, "filename": "zzyzx-2016.6.0.tar.gz", "has_sig": false, "md5_digest": "dd14e24851811c035129d787e6745ac4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11119, "upload_time": "2016-06-26T01:48:15", "url": "https://files.pythonhosted.org/packages/66/7c/4f0676fbe7c5dc9c8090b0c780b4ca25b648b3962a2568008d8f81e3a436/zzyzx-2016.6.0.tar.gz" } ], "2017.1.0": [ { "comment_text": "", "digests": { "md5": "205bbc51f86860e17f7c86dc1970b16c", "sha256": "cb76bdb73e3d3ca4d4595d43314c6d9cd25237f3824d0fcb5c5374783937235f" }, "downloads": -1, "filename": "zzyzx-2017.1.0.tar.gz", "has_sig": false, "md5_digest": "205bbc51f86860e17f7c86dc1970b16c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12216, "upload_time": "2017-01-30T03:21:40", "url": "https://files.pythonhosted.org/packages/84/f1/0d4bc0445d7fb710768c6d870d7fd3c92e33e8f20edc22d4208d18e6ab3c/zzyzx-2017.1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "205bbc51f86860e17f7c86dc1970b16c", "sha256": "cb76bdb73e3d3ca4d4595d43314c6d9cd25237f3824d0fcb5c5374783937235f" }, "downloads": -1, "filename": "zzyzx-2017.1.0.tar.gz", "has_sig": false, "md5_digest": "205bbc51f86860e17f7c86dc1970b16c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12216, "upload_time": "2017-01-30T03:21:40", "url": "https://files.pythonhosted.org/packages/84/f1/0d4bc0445d7fb710768c6d870d7fd3c92e33e8f20edc22d4208d18e6ab3c/zzyzx-2017.1.0.tar.gz" } ] }