Skip to content

Instantly share code, notes, and snippets.

@sobolevnrm
Created October 25, 2015 22:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sobolevnrm/ff2a092dd3052a56df68 to your computer and use it in GitHub Desktop.
Save sobolevnrm/ff2a092dd3052a56df68 to your computer and use it in GitHub Desktop.
"""
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