From ae8e35a41d024d4acbef1dc19392c02ef28e0e5e Mon Sep 17 00:00:00 2001 From: Markus Birth Date: Mon, 16 Aug 2021 23:57:32 +0200 Subject: [PATCH] Moved reading 1pif file into own class. --- convert.py | 10 +++------- onepif/OnepifReader.py | 26 ++++++++++++++++++++++++++ onepif/__init__.py | 1 + 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 onepif/OnepifReader.py create mode 100644 onepif/__init__.py diff --git a/convert.py b/convert.py index bdc9a66..9bf1a33 100755 --- a/convert.py +++ b/convert.py @@ -3,6 +3,7 @@ import argparse import datetime import json +import onepif from os.path import splitext from pykeepass import create_database @@ -64,14 +65,9 @@ def getField(item, designation): return None -with open("{}/data.1pif".format(args.inpath), "r") as fp: - data = fp.read().strip().split("***5642bee8-a5ff-11dc-8314-0800200c9a66***") +opif = onepif.OnepifReader("{}/data.1pif".format(args.inpath)) -for line in data: - if line.strip() == "": - continue - - item = json.loads(line.strip()) +for item in opif: if item.get("trashed"): continue diff --git a/onepif/OnepifReader.py b/onepif/OnepifReader.py new file mode 100644 index 0000000..049a037 --- /dev/null +++ b/onepif/OnepifReader.py @@ -0,0 +1,26 @@ +import json + +SEPARATOR = "***5642bee8-a5ff-11dc-8314-0800200c9a66***" + + +class OnepifReader(): + + def __init__(self, filename): + self.filename = filename + self.fp = open(self.filename, "rt") + + def __iter__(self): + return self + + def __next__(self): + buffer = [] + is_eof = True + for line in self.fp: + is_eof = False + if line.strip() == SEPARATOR: + break + buffer.append(line) + if is_eof: + raise StopIteration + jsonstr = "".join(buffer) + return json.loads(jsonstr) \ No newline at end of file diff --git a/onepif/__init__.py b/onepif/__init__.py new file mode 100644 index 0000000..48afc94 --- /dev/null +++ b/onepif/__init__.py @@ -0,0 +1 @@ +from .OnepifReader import *