Skip to content

Instantly share code, notes, and snippets.

@goerz
Created October 14, 2018 04:43
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 goerz/f44c31cf55678afdbc3d71abbc832a84 to your computer and use it in GitHub Desktop.
Save goerz/f44c31cf55678afdbc3d71abbc832a84 to your computer and use it in GitHub Desktop.
filter_enex.py
import re
import html
from lxml.etree import tostring
from ever2simple.converter import EverConverter
def my_unescape(s):
s = s.replace(""", "PROTECTEDQUOT=====")
s = html.unescape(s)
s = s.replace("PROTECTEDQUOT=====", """)
return s
conv = EverConverter("./notes.enex")
xml_tree = conv._load_xml(conv.enex_filename)
created = xml_tree.findall('//created')
updated = xml_tree.findall('//updated')
titles = xml_tree.findall('//title')
dates = []
for title in titles:
m = re.match(r'Note - (?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2}) (?P<hour>\d{2}) (?P<min>\d{2}) (?P<sec>\d{2}) - (?P<title>.*)', title.text)
if m:
title.text = m.group('title')
dates.append("%s%s%sT%s%s%sZ" % tuple([m.group(t) for t in ['year', 'month', 'day', 'hour', 'min', 'sec']]))
else:
raise ValueError("Invalid title: %s" % title.text)
for create_date, update_date, date in zip(created, updated, dates):
create_date.text = date
update_date.text = date
with open('./filtered.enex', 'w') as out_fh:
out_fh.write(r'<?xml version="1.0" encoding="UTF-8"?>' + "\n")
out_fh.write(
my_unescape(tostring(xml_tree).decode('utf8'))
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment