Windows - diff file handling improvements (#1031)

pull/1033/head
dgtlmoon 2 years ago committed by GitHub
parent 63095f70ea
commit 85897e0bf9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -816,9 +816,11 @@ def changedetection_app(config=None, datastore_o=None):
newest_file = history[dates[-1]] newest_file = history[dates[-1]]
# Read as binary and force decode as UTF-8
# Windows may fail decode in python if we just use 'r' mode (chardet decode exception)
try: try:
with open(newest_file, 'r') as f: with open(newest_file, 'rb') as f:
newest_version_file_contents = f.read() newest_version_file_contents = f.read().decode('utf-8')
except Exception as e: except Exception as e:
newest_version_file_contents = "Unable to read {}.\n".format(newest_file) newest_version_file_contents = "Unable to read {}.\n".format(newest_file)
@ -830,8 +832,8 @@ def changedetection_app(config=None, datastore_o=None):
previous_file = history[dates[-2]] previous_file = history[dates[-2]]
try: try:
with open(previous_file, 'r') as f: with open(previous_file, 'rb') as f:
previous_version_file_contents = f.read() previous_version_file_contents = f.read().decode('utf-8')
except Exception as e: except Exception as e:
previous_version_file_contents = "Unable to read {}.\n".format(previous_file) previous_version_file_contents = "Unable to read {}.\n".format(previous_file)

@ -151,20 +151,21 @@ class model(dict):
import uuid import uuid
import logging import logging
output_path = "{}/{}".format(self.__datastore_path, self['uuid']) output_path = os.path.join(self.__datastore_path, self['uuid'])
self.ensure_data_dir_exists() self.ensure_data_dir_exists()
snapshot_fname = os.path.join(output_path, str(uuid.uuid4()))
snapshot_fname = "{}/{}.stripped.txt".format(output_path, uuid.uuid4())
logging.debug("Saving history text {}".format(snapshot_fname)) logging.debug("Saving history text {}".format(snapshot_fname))
# in /diff/ we are going to assume for now that it's UTF-8 when reading
with open(snapshot_fname, 'wb') as f: with open(snapshot_fname, 'wb') as f:
f.write(contents) f.write(contents)
f.close() f.close()
# Append to index # Append to index
# @todo check last char was \n # @todo check last char was \n
index_fname = "{}/history.txt".format(output_path) index_fname = os.path.join(output_path, "history.txt")
with open(index_fname, 'a') as f: with open(index_fname, 'a') as f:
f.write("{},{}\n".format(timestamp, snapshot_fname)) f.write("{},{}\n".format(timestamp, snapshot_fname))
f.close() f.close()

Loading…
Cancel
Save