From ae8e35a41d024d4acbef1dc19392c02ef28e0e5e Mon Sep 17 00:00:00 2001
From: Markus Birth <mbirth@gmail.com>
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 *