Created
October 25, 2015 22:36
-
-
Save sobolevnrm/ff2a092dd3052a56df68 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
Transform exported data from OmniFocus into RememberTheMilk Smart Add file. Fields from | |
OmniFocus are expected to be: | |
Task ID,Type,Name,Status,Project,Context,Start Date,Due Date,Completion Date,Duration,Flagged,Notes | |
""" | |
import csv | |
import sys | |
from datetime import datetime | |
def parse_date(date_string): | |
date = datetime.today() | |
date = date.strptime(date_string, "%Y-%m-%d") | |
return date | |
def format_date(date): | |
return date.strftime("%B %d, %Y") | |
def main(): | |
csv_path = sys.argv[1] | |
with open(csv_path, "rt") as csv_file: | |
csv_reader = csv.DictReader(csv_file) | |
nrow = 0 | |
simple_tasks = [] | |
note_tasks = [] | |
for row in csv_reader: | |
nrow = nrow + 1 | |
rtm_fields = [] | |
rtm_fields.append("%s" % row["Name"]) | |
if row["Start Date"]: | |
date_string = row["Start Date"].split()[0] | |
date = parse_date(date_string) | |
date_string = format_date(date) | |
rtm_fields.append("~%s" % date_string) | |
if row["Due Date"]: | |
date_string = row["Due Date"].split()[0] | |
date = parse_date(date_string) | |
date_string = format_date(date) | |
rtm_fields.append("^%s" % date_string) | |
if row["Project"]: | |
project_string = "_".join(row["Project"].split()) | |
project_string = project_string.lower() | |
rtm_fields.append("#%s" % project_string) | |
task_string = " ".join(rtm_fields) | |
if row["Notes"]: | |
task_string = "%s\n!!!%s" % (task_string, row["Notes"]) | |
note_tasks.append(task_string) | |
else: | |
simple_tasks.append(task_string) | |
for task in simple_tasks: | |
print(task) | |
for task in note_tasks: | |
print(task) | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment