This is a python library for parsing Emacs org-mode files.
#+TITLE:
#+SEQ_TODO:
#+TAGS:
- Headlines
- TODO items
- [X] TODO sequence
- [ ] TODO types
- [ ] Progress logging
- [X] Priorities
- [ ] Breaking down tasks
- [ ] Checkboxex
- Simple Tags
- Simple Property
- Dates and times
pip install OrgModeIOimport OrgModeIO
f = open('TODO_Life.org','r',encoding='utf-8')
doc = OrgModeIO.OrgDocFile(f)
parser = OrgModeIO.OrgParser(doc).parse()
f.close()
# the nodes is implemented with nested set model https://en.wikipedia.org/wiki/Nested_set_model
nodes = parsed_file.get_nodes()
for n in ns:
print(n)
#print('n['level'])
#print(n['lft'])
#print(n['rgt'])output:
{'level': 0, 'lft': 0, 'rgt': 41, 'head': <OrgNode.OrgHead object at 0x00000298C7FF4DD8>}
{'level': 1, 'lft': 1, 'rgt': 2, 'head': <OrgNode.OrgHead object at 0x00000298C8018160>}
{'level': 1, 'lft': 3, 'rgt': 14, 'head': <OrgNode.OrgHead object at 0x00000298C8018128>}
{'level': 2, 'lft': 4, 'rgt': 13, 'head': <OrgNode.OrgHead object at 0x00000298C8018198>}
{'level': 3, 'lft': 5, 'rgt': 6, 'head': <OrgNode.OrgHead object at 0x00000298C8018208>}
{'level': 3, 'lft': 7, 'rgt': 8, 'head': <OrgNode.OrgHead object at 0x00000298C8018278>}
{'level': 3, 'lft': 9, 'rgt': 10, 'head': <OrgNode.OrgHead object at 0x00000298C8018438>}
{'level': 3, 'lft': 11, 'rgt': 12, 'head': <OrgNode.OrgHead object at 0x00000298C80184A8>}
{'level': 1, 'lft': 15, 'rgt': 16, 'head': <OrgNode.OrgHead object at 0x00000298C8018710>}
{'level': 1, 'lft': 17, 'rgt': 40, 'head': <OrgNode.OrgHead object at 0x00000298C80184E0>}
root = ns[0]['head']
print(root.get_title())
print(root.get_level())output:
ROOT 0
node = ns[18]['head']
print(node)
print('================================================')
print('level:' + str(node.get_level()))
print('state:' + node.get_state())
print('priority:' + node.get_priority())
print('title:' + node.get_title())
print('deadline:' + str(node.get_deadline()))
print('closed time:' + str(node.get_closed()))
print('scheduled:' + str(node.get_scheduled()))
print('property list:' + str(node.get_properties()))
print('content:' + node.get_content())output:
***** DONE [#B] some thing needs to be done CLOSED:[2017-08-27 21:02] DEADLINE:<2017-08-20 00:00> ================================================ level:5 state:DONE priority:B title:some thing needs to be done deadline:<2017-08-20 00:00> closed time:[2017-08-27 21:02] scheduled:None property list:None content: