Parser and scheduler for syncing a markdown(ish) todo list with google calendar.
Project description
Reschedule
Goal
I want to keep track of all my todos in a plain text file but also automatically schedule my todos on my google calendar. When I write my todos in a todo list I often fail to allocate time for them in my calendar. When I look at my week I feel like I have tons of free time but in reality I have a full day of work to do. As an example this is what my week looks like without todos vs. with todos (in orange).
This program automatically parses todos from a markdown file and schedules them on a google calendar.
- [ ] task name est:10m due:2020-03-20 id:1f2a4b
Installation
Using python >3.6
pip install reschedule
Now you can reschedule your todos by running reschedule
from the command line.
The first time you run reschedule
you'll be prompted to authorize with google and a config file will be created for you at ~/.cache/reschedule/config.json
.
Configuration
{
"work_start_time": "08:00",
"work_end_time": "18:00",
"task_file_path": "~/todo.md",
"task_calendar_name": "Reschedule Tasks",
"chunk_size": 15,
"default_est": "30m"
}
work_start_time
: the earliest a task will be scheduled to start in%H:%M
format. (i.e. military time such as 08:30 or 23:00)work_end_time
: the latest a task will be scheduled to end in%H:%M
format. (i.e. military time such as 08:30 or 23:00)task_file_path
: the absolute path to your markdown file of taskstask_calendar_name
: the name of the google calendar this program will create to store your tasks. Must be unique from an existing calendar.chunk_size
: the minimum length of an event. 15 is a good default to keep your day from becoming too fragmented.default_est
: the default time estimate for a task
Task File Format
Task are written using markdown task-list format. To create a task use a new line with - [ ]
. To mark a task as complete use - [x]
. Metadata is attached to tasks using a key:value
syntax. The key
and the value
cannot contain spaces or :
. I call an instance of a key:value
pair a tag, for instance an id
tag is a key:value
pair with a key
of id
. Every task needs a unique id
tag for example id:1aab7d
. Tasks can have an est
tag which contains a time estimate written as 30m
or 1h
for 30 minutes or 1 hour respectively. Any number followed by m
or h
is acceptable as a value for the est
tag. Finally tasks can have a due
tag which contains a due-date formatted as YYYY-MM-dd
.
<!-- A task with an estimate of 30 minutes, due March 6, 2020, with id 16cfe6 -->
- [ ] What you want to do est:30m due:2020-03-06 id:16cfe6
VSCode Snippets
I use the following user defined VSCode Markdown Snippets to create my tasks.
// add a new task
"task": {
"prefix": "//task",
"body": [
"- [ ] ${1:What do you want to do?} est:${2:30m} id:$RANDOM_HEX"
]
},
// add a due date to a task
"due": {
"prefix": "//due",
"body": "due:${1:$CURRENT_YEAR}-${2:$CURRENT_MONTH}-${3:$CURRENT_DATE}"
},
// create a random variable
"random": {
"prefix": "//random",
"body": "$RANDOM_HEX"
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for reschedule-0.1.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6bee6d7b30bb349e6cd506fb0b02c032824325dc3c4f3e83dcc71c0a2e045867 |
|
MD5 | 1453a5e4889c047a781168c04f64079b |
|
BLAKE2b-256 | 273341c4c534c1ef3629dae797f9fb236477589ffbeaf44ff9efdc2d74eea398 |