#! /usr/bin/env python3 # -*- coding: utf-8 -*- """Todo.txt interface for `argos `.""" # todo # v1.0 # Tobias Schmidl # schtobia # Todo.txt interface # # python,todotxtio # https://gitlab.com/schtobia/argos-todo/blob/master/todo.py from __future__ import annotations from pathlib import Path import todotxtio # type: ignore __author__ = "Tobias Schmidl" __copyright__ = "Copyright 2021, Tobias Schmidl" __license__ = "MIT" __version__ = "1.0" __maintainer__ = "Tobias Schmidl" TODO_TXT_PATH = Path.home() / '.todo-txt' / 'todo.txt' COLOR_LIST = { 1: ['#fc8d59'], 2: ['#fc8d59', '#91cf60'], 3: ['#fc8d59', '#ffffbf', '#91cf60'], 4: ['#d7191c', '#fdae61', '#a6d96a', '#1a9641'], 5: ['#d7191c', '#fdae61', '#ffffbf', '#a6d96a', '#1a9641'], 6: ['#d73027', '#fc8d59', '#fee08b', '#d9ef8b', '#91cf60', '#1a9850'], 7: ['#d73027', '#fc8d59', '#fee08b', '#ffffbf', '#d9ef8b', '#91cf60', '#1a9850'], 8: ['#d73027', '#f46d43', '#fdae61', '#fee08b', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850'], 9: ['#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850'], 10: ['#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837'], 11: [ '#a50026', '#d73027', '#f46d43', '#fdae61', '#fee08b', '#ffffbf', '#d9ef8b', '#a6d96a', '#66bd63', '#1a9850', '#006837' ] } if __name__ == "__main__": list_of_tasks = todotxtio.from_file(TODO_TXT_PATH) list_of_priorities = [int(x.priority, base=16) for x in list_of_tasks] max_prio = max(list_of_priorities) min_prio = min(list_of_priorities) print("📋", len(list_of_tasks)) print("---") for task in list_of_tasks: priority = int(task.priority, base=16) old_range = max_prio - min_prio + 1 new_range = len(set(list_of_priorities)) priority = int(((priority - min_prio) * new_range) / old_range) if "due" not in task.tags: print("" + task.priority + ": " + task.text + "") else: print("" + task.priority + ": " + task.tags["due"] + " " + task.text + "") print("--", " ".join(["@" + x for x in task.contexts])) print("--", " ".join(["+" + x for x in task.projects])) print("--", " ".join([key + ": " + value for key, value in task.tags.items() if key != "due"]))