Two-way Sync of Todoist and Taskwarrior
Go to file
Matt Snider 81ee6d16dc Update to todoist-python 8.0.0 2019-07-13 13:33:17 +02:00
tests Update to todoist-python 8.0.0 2019-07-13 13:33:17 +02:00
todoist_taskwarrior Update to todoist-python 8.0.0 2019-07-13 13:33:17 +02:00
.gitignore Implement a very basic, description-only import 2018-11-07 00:50:00 +01:00
LICENSE Add LICENSE 2018-11-16 02:17:01 +01:00
README.md Document --map-project and --map-tag in README 2019-06-09 20:31:10 +02:00
TODO.md When a parse error occurs for recur, allow user to manually input 2019-07-13 12:29:55 +02:00
requirements.txt Update to todoist-python 8.0.0 2019-07-13 13:33:17 +02:00
test_requirements.txt Add tests for recur 2018-11-24 15:14:15 +01:00

README.md

todoist-taskwarrior

A tool for migrating Todoist tasks to Taskwarrior.

Usage

Running the tool requires that your Todoist API key is available from the environment under the name TODOIST_API_KEY. The key can be found or created in the Todoist Integrations Settings.

The main task is migrate which will import all tasks. Since Todoist's internal ID is saved with the task, subsequent runs will detect and skip duplicates:

$ python -m todoist_taskwarrior.cli migrate --help
Usage: cli.py migrate [OPTIONS]

Options:
  -i, --interactive
  --no-sync
  --help             Show this message and exit.

Using the --interactive flag will prompt the user for input for each task, allowing the task to be modified before import:

$ python -m todoist_taskwarrior.cli migrate --interactive
Task 1 of 315: Work on an open source project

tid: 142424242
name: Work on an open source project
project: Open Source
priority:
tags:
entry: 2019-01-18T12:00:00+00:00
due: 2019-01-21T17:00:00+00:00
recur: 3 days

By default, migrate will refetch all tasks from Todoist on each run. To skip this step and use the cached data without refetching, use the --no-sync flag.

The flags --map-project and --map-tag can be specified multiple times to translate or completely remove specific flags

$ python -m todoist_taskwarrior.cli migrate \
    --map-project Errands=chores \
    --map-project 'XYZ Corp'=work \
    --map-tag     books=reading

Development

Testing

$ python -m pytest tests