{"id":22436977,"url":"https://github.com/entorb/rememberthemilk","last_synced_at":"2025-06-15T10:35:11.812Z","repository":{"id":103799789,"uuid":"234965011","full_name":"entorb/rememberthemilk","owner":"entorb","description":"access to https://www.rememberthemilk.com tasks via their API, written in Python 3","archived":false,"fork":false,"pushed_at":"2024-08-19T17:59:47.000Z","size":75,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-08-19T21:08:41.531Z","etag":null,"topics":["api","python","rememberthemilk","rest","rtm"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/entorb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-19T20:55:40.000Z","updated_at":"2024-08-19T17:59:50.000Z","dependencies_parsed_at":null,"dependency_job_id":"aafc0728-95d7-4047-aba9-05caec114033","html_url":"https://github.com/entorb/rememberthemilk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Frememberthemilk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Frememberthemilk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Frememberthemilk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/entorb%2Frememberthemilk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/entorb","download_url":"https://codeload.github.com/entorb/rememberthemilk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228389159,"owners_count":17912189,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","python","rememberthemilk","rest","rtm"],"created_at":"2024-12-06T00:10:31.424Z","updated_at":"2025-06-15T10:35:11.801Z","avatar_url":"https://github.com/entorb.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RememberTheMilk\n\n* access to \u003chttps://www.rememberthemilk.com\u003e todo lists via their API\n* analyze done and pending tasks\n* caching to reduce API usage\n\nDisclaimer: This code uses the Remember The Milk API but is not endorsed or certified by Remember The Milk.\n\n## Setup\n\n### Register for API usage\n\nregister for using the Remember The Milk API here: \u003chttps://www.rememberthemilk.com/services/api/\u003e and obtain\n\n* `api_key`\n* `shared_secret`\n\nstore these info in [rememberthemilk.ini](src/rememberthemilk.ini) (see [rememberthemilk.ini.example](src/rememberthemilk.ini.example))\n\n### Install required Python packages\n\n```sh\npip install -r requirements.txt\n```\n\n#### Dev Tools\n\noptionally: ruff and pre-commit\n\n```sh\npip install ruff pre-commit\n```\n\noptionally: pytest coverage report\n\n```sh\npip install pytest-cov\npytest --cov\n# or\npytest --cov --cov-report=html:coverage_report\n```\n\n### Obtain API token\n\nrun [auth.py](src/auth.py) once and add the resulting `token` to [rememberthemilk.ini](src/rememberthemilk.ini)\n\n## Playing with the API\n\n### Analyze tasks completed\n\n[tasks_completed.py](src/tasks_completed.py)\n\n* HTML table of completed tasks\n* appreciate what you have achieved\n* count and sums per calendar week\n\n### Analyze tasks overdue\n\n[tasks_overdue.py](src/tasks_overdue.py)\n\n* HTML table of overdue tasks\n* ranked by product of overdue days x priority, to focus on most urgent ones\n* display time estimation in minutes to motivate you for solving the minor ones right away\n\n## Streamlit for interactive data analysis\n\n```sh\npip install streamlit watchdog\n```\n\n```sh\nstreamlit run src/app.py\n```\n\n## My RTM lifehacks\n\nsee original post at \u003chttps://www.rememberthemilk.com/forums/tips/31034/\u003e\n\nI use RTM for several years now, mostly for keeping track of periodic todos, e.g. maintenance, backups, doc appointments, cleaning my home, ... and also for one-timers I tend to postpone.\n\nSee the [RTM forum](https://www.rememberthemilk.com/forums/) for other tips.\n\n### My RTM setup for tasks\n\n* I use some different lists to group tasks\n* I use only few tags, mostly lists instead\n* I do not set locations, lists instead\n* I set date, prio and estimate to all tasks, especially to periodic tasks, to empower nice smart lists\n* for most repetitive tasks I use *after* instead of *each* (e.g. watering the flowers)\n* for once-a-year tasks I add notes for the details I tend to forget until its due next time\n\n### Smart list examples\n\nWhat I love most of RTM are the dynamic smart lists. Here some examples:\n\n* big Projects -\u003e `timeEstimate:\"\u003e1 hour\"`\n* high Prio -\u003e `priority:1`\n* one-timers -\u003e `isRepeating:false`\n* series -\u003e `isRepeating:true AND NOT list:MyListToExclude`\n* minor (low handing fruits) -\u003e `dueBefore:\"1 week\" and timeEstimate:\"\u003c15 minutes\" AND NOT list:MyListToExclude`\n* done 7d (to celebrate what I accomplished) -\u003e `completedWithin:\"7 day of today\"`\n* created more than a week ago -\u003e `NOT addedWithin:\"1 week of today\"`\n\nSmart lists that remind me of adding missing date, prio and estimate\n\n* no Date -\u003e `due:never AND NOT addedWithin:\"1 week of today\"`\n* no Prio -\u003e `priority:none AND NOT addedWithin:\"1 week of today\"`\n* no Estimate -\u003e `hasTimeEstimate:false AND NOT addedWithin:\"1 week of today\"`\n* no List -\u003e `list:Inbox`\n* no Tag -\u003e `isTagged:false`\n\nsee \u003chttps://www.rememberthemilk.com/help/?ctx=basics.search.advanced\u003e\n\n### Goal setting and tracking\n\n* I use one list for my goals\n* each goal has a prio (= short, medium, far)\n* I do not use tags to categorize, but simple prefix in the title, e.g. \"JOB\", \"SPORT\"\n* to sort the goals by category, I just sort the list by task name (thanks to prefix)\n* I usually sort the list by prio\n* once a month I check the medium prio goals\n* once a quarter I check the low prio goals\n* to work towards a goal, I create small repetitive tasks (using after, not every), that use the url field to link to the goal.\n\n## SonarQube Code Analysis\n\nAt [sonarcloud.io](https://sonarcloud.io/summary/overall?id=entorb_rememberthemilk\u0026branch=main)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentorb%2Frememberthemilk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fentorb%2Frememberthemilk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fentorb%2Frememberthemilk/lists"}