Created
August 5, 2018 04:40
-
-
Save oivoodoo/c263512c979e6fea3f93f909e8fbf183 to your computer and use it in GitHub Desktop.
Export from Wunderlist
This file contains hidden or 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
import wunderpy2 | |
from dateutil import parser | |
from datetime import date | |
from csv import writer | |
ACCESS_TOKEN = '<WUNDERLIST_ACCESS_TOKEN>' | |
CLIENT_ID = '<WUNDERLIST_CLIENT_ID>' | |
PROJECT_BOARD = 'LIST_TITLE' | |
HOUR_RATE = 1 | |
def __build_hour(task): | |
''' | |
Example: | |
dict(title='1 hour CORE-1234') | |
dict(title='5 hours CORE-4321') | |
dict(title='1 minute CORE-1234') | |
''' | |
columns = task['title'].strip().split(' ') | |
time, measure, task_id = columns | |
if measure == 'hour' or measure == 'hours': | |
hours = float(time) | |
elif measure == 'minute' or measure == 'minutes': | |
hours = float(time) / 60 | |
elif measure == 'day' or measure == 'days': | |
hours = 24 * float(time) | |
else: | |
raise 'unknown measure from the task title: ' + task['title'] | |
return dict( | |
task_id=task_id, | |
created_at=parser.parse(task['created_at']), | |
hours=hours) | |
def __main__(): | |
api = wunderpy2.WunderApi() | |
client = api.get_client(ACCESS_TOKEN, CLIENT_ID) | |
board = [l for l in client.get_lists() if l['title'] == PROJECT_BOARD][0] | |
active_tasks = [t for t in client.get_tasks(board['id']) if not t['completed']] | |
report = [__build_hour(task) for task in active_tasks] | |
estimated_earnings = sum([task['hours'] for task in report]) * HOUR_RATE | |
print(estimated_earnings) | |
with open(f"report-{date.today()}.csv", 'w+') as f: | |
w = writer(f) | |
rows = [[task['task_id'], task['hours'], task['created_at'].date()] | |
for task in report] | |
w.writerows(rows) | |
for task in active_tasks: | |
client.update_task(task['id'], task['revision'], completed=True) | |
# TODO: make monthly output report to pdf file based on created_at field. | |
if __name__ == '__main__': | |
__main__() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment