Skip to content

Instantly share code, notes, and snippets.

@weishuhn
Forked from hghwng/opmlconv.py
Last active April 13, 2020 01:44
Show Gist options
  • Save weishuhn/b86173fc63083b89eeee8bd80f8d4950 to your computer and use it in GitHub Desktop.
Save weishuhn/b86173fc63083b89eeee8bd80f8d4950 to your computer and use it in GitHub Desktop.
Convert Dynalist flavored OPML to Org Mode
#!/usr/bin/env python
import bs4
def convert_element(lines, level=1):
result = ''
for line in lines:
if not isinstance(line, bs4.element.Tag) or \
line.name != 'outline':
continue
result += '*' * level + ' ' + line.attrs.get('text', '') + '\n'
if '_note' in line.attrs:
result += line.attrs['_note'].replace('\r', '\n') + '\n'
result += convert_element(line.children, level + 1)
return result
def convert_file(path):
root = bs4.BeautifulSoup(open(path), "lxml")
return convert_element(root.select('html body opml')[0])
def main():
import sys
output_path = sys.argv[1][:-4] + 'org'
result = convert_file(sys.argv[1])
open(output_path, 'w').write(result)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment