{ "info": { "author": "Marcin Kasperski", "author_email": "Marcin.Kasperski@mekk.waw.pl", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. -*- mode: rst; coding: utf-8 -*-\r\n\r\n================\r\nmekk.rtmimport\r\n================\r\n\r\n**Note: this module has been phased out in favor of mekk.rtm. You can use it to import Nozbe export but all future development will take place in mekk.rtm (and Nozbe import is also present there).**\r\n\r\nSee `mekk.rtm`_ documentation.\r\n\r\n.. _mekk.rtm: http://pypi.python.org/pypi/mekk.rtm\r\n\r\n``mekk.rtmimport`` handles importing data to RememberTheMilk. At the\r\nmoment it handles importing data exported from Nozbe_, I keep more\r\ngeneric name in case I write other importers in the future.\r\n\r\nPrerequisities\r\n==============\r\n\r\n``mekk.rtmimport`` uses `RtmAPI`_ wrapper library. I had to patch it\r\na bit and 0.3.2 is likely to fail. I hope to have my patches accepted\r\nbut until newer version is released, one must use `my RtmAPI fork`_\r\n(use get source link to download `.zip` file, unpack it, install\r\nby `python setup.py install`).\r\n\r\n.. _RtmAPI: http://pypi.python.org/pypi/RtmAPI\r\n.. _my RtmAPI fork: http://bitbucket.org/Mekk/rtmapi\r\n\r\nFrom Nozbe to RememberTheMilk\r\n=============================\r\n\r\nExporting the data from Nozbe\r\n-----------------------------\r\n\r\nPrepare `.json` export of Nozbe_ data. For details see `mekk.nozbe`_\r\nbut usually you just want to::\r\n\r\n nozbetool export --user=MyNozbeName --json=mynozbedata.json\r\n\r\nImporting data to RememberTheMilk\r\n---------------------------------\r\n\r\nFirst make a test run::\r\n\r\n rtmimport --nozbe-json=mynozbedata.json --verbose --dry-run\r\n\r\n(it does not store anything, just prints what it is to do) and verify\r\nwhether everything seems correct. \r\n\r\nThen make actual import::\r\n\r\n rtmimport --nozbe-json=mynozbedata.json --verbose\r\n\r\n(or omit `--verbose` if you don't want to track progress, but I\r\nrecommend you keep it)\r\n\r\nNote: import can take some time. In case of my big list over\r\nnot-so-good network it has been running for almost an hour.\r\n\r\nHow the data is converted\r\n-------------------------\r\n\r\nNozbe projects are saved as RememberTheMilk lists.\r\n\r\nNozbe contexts are converted to RememberTheMilk tags. `@` is prepended\r\nto their names and non-alphanumeric characters are replaced with\r\ndashes (so for example `My home/kitchen` becomes\r\n`@My-home-kitchen`). \r\n\r\nNext actions are tagged as `Next`.\r\n\r\nActions are saved as tasks. Name, due date, recurrence, \r\nestimated cost and completion status are all saved.\r\n\r\nIn case of recurrence, RTM ``every`` mode is used (so the task marked\r\non Nozbe as recurring every week will be spawned 52 times a year by\r\nRTM, whether user completes it, or not). If you prefer alternative way\r\n(spawning new incarnation whenever previous is completed), edit tasks\r\nafter import, patch the code (and replace `every` with `after`), or\r\nask me for a commandline flag).\r\n\r\nAs notes are bound to projects on Nozbe, and to tasks on\r\nRememberTheMilk, I save notes by creating artificial tasks named \"Save\r\nthis note\" (one per every list for which appropriate project had notes)\r\nand binding notes to those tasks. This must be handled afterwards\r\nusing RTM interface, to make sure it happens I mark those tasks as due\r\nimmediately. Those task are also tagged as `Note`.\r\n\r\nLimitations\r\n-----------\r\n\r\nOnly main context is copied, additional contexts are lost. I don't know\r\nhow to grab them from Nozbe_ (in case somebody knows how to patch\r\n`mekk.nozbe`_ to grab all contexts, I can extend this importer easily\r\nto handle them all).\r\n\r\nUploads are not copied at all. I neither now how to export them from\r\nNozbe, nor how could I handle them afterwards (RTM has no uploads).\r\n\r\nAction name formatting is not available on RememberTheMilk, so if you\r\nused constructs like `Visit \"the website\":http://google.com`, they will\r\nshow up as is.\r\n\r\nSharing information (= information about delegations to other users)\r\nis lost. I haven't used this feature so I don't know how do the\r\nunderlying data look like.\r\n\r\nSome contexts could probably be converted to locations, not tags, but\r\nI don't have an idea how to decide which way to go.\r\n\r\nProblems and workarounds\r\n------------------------\r\n\r\nIf import process is interrupted, re-running it would make duplicate\r\ntasks (there is no duplicate checking, it would be costly). The best\r\nway to resolve it is to open .json file in text editor (after making a\r\nbackup copy of it) and simply cut all actions which are already saved\r\n(they are saved in order, so it is just a matter of locating the last\r\naction saved before the process was interrupted and cutting all actions\r\nup to this one).\r\n\r\nSource, bugs, patches\r\n=====================\r\n\r\nDevelopment `is tracked on BitBucket`_.\r\n\r\n.. _is tracked on BitBucket: http://bitbucket.org/Mekk/rtmimport\r\n.. _mekk.nozbe: http://pypi.python.org/pypi/mekk.nozbe/\r\n.. _Nozbe: http://nozbe.com", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": "rtm,RememberTheMilk", "license": "LGPL", "maintainer": "", "maintainer_email": "", "name": "mekk.rtmimport", "package_url": "https://pypi.org/project/mekk.rtmimport/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/mekk.rtmimport/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/mekk.rtmimport/0.1.3/", "requires_dist": null, "requires_python": null, "summary": "Import foreign (at the moment, Nozbe) data to RememberTheMilk", "version": "0.1.3" }, "last_serial": 1822216, "releases": { "0.1.1": [], "0.1.2": [ { "comment_text": "", "digests": { "md5": "00cd3a5e0509d87af2e4031d863553b0", "sha256": "09d08781be9adda7a0c768dc8355b2aefe14e62d083cfaccfb8a07dd543aee49" }, "downloads": -1, "filename": "mekk.rtmimport-0.1.2.tar.gz", "has_sig": false, "md5_digest": "00cd3a5e0509d87af2e4031d863553b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7569, "upload_time": "2010-10-29T21:06:45", "url": "https://files.pythonhosted.org/packages/cb/0c/b2d1b0b8ef521ce5073cd544171fea8ef93ebc96345ad99681bef5ee31d4/mekk.rtmimport-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "d48532df64e00020bd364209bc9496e1", "sha256": "d14868679fbe3716efb7181762ec07c6056e77d145f86eefc0673dc7cf26a91b" }, "downloads": -1, "filename": "mekk.rtmimport-0.1.3.tar.gz", "has_sig": false, "md5_digest": "d48532df64e00020bd364209bc9496e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7961, "upload_time": "2010-10-30T00:31:29", "url": "https://files.pythonhosted.org/packages/9c/9d/0bbf956529c8efb069cb32fb77b130a002453ddb42d7ed93bbd66b1e6051/mekk.rtmimport-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d48532df64e00020bd364209bc9496e1", "sha256": "d14868679fbe3716efb7181762ec07c6056e77d145f86eefc0673dc7cf26a91b" }, "downloads": -1, "filename": "mekk.rtmimport-0.1.3.tar.gz", "has_sig": false, "md5_digest": "d48532df64e00020bd364209bc9496e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7961, "upload_time": "2010-10-30T00:31:29", "url": "https://files.pythonhosted.org/packages/9c/9d/0bbf956529c8efb069cb32fb77b130a002453ddb42d7ed93bbd66b1e6051/mekk.rtmimport-0.1.3.tar.gz" } ] }