From 3b0763eeb14933a1f27287251f62e4f961cd00d5 Mon Sep 17 00:00:00 2001 From: RemixDev Date: Thu, 7 Oct 2021 16:18:50 +0200 Subject: [PATCH] Handle settings corruption issue --- deemix/plugins/spotify.py | 11 ++++++++++- deemix/settings.py | 9 ++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/deemix/plugins/spotify.py b/deemix/plugins/spotify.py index 9dba95e..ec104b9 100644 --- a/deemix/plugins/spotify.py +++ b/deemix/plugins/spotify.py @@ -1,5 +1,6 @@ from concurrent.futures import ThreadPoolExecutor import json +from copy import deepcopy from pathlib import Path import re from urllib.request import urlopen @@ -309,7 +310,15 @@ class Spotify(Plugin): json.dump({**self.credentials, **self.settings}, f, indent=2) with open(self.configFolder / 'settings.json', 'r') as settingsFile: - settings = json.load(settingsFile) + try: + settings = json.load(settingsFile) + except json.decoder.JSONDecodeError: + with open(self.configFolder / 'settings.json', 'w') as f: + json.dump({**self.credentials, **self.settings}, f, indent=2) + settings = deepcopy({**self.credentials, **self.settings}) + except Exception: + settings = deepcopy({**self.credentials, **self.settings}) + self.setSettings(settings) self.checkCredentials() diff --git a/deemix/settings.py b/deemix/settings.py index 60a54b5..935e1e6 100644 --- a/deemix/settings.py +++ b/deemix/settings.py @@ -1,4 +1,5 @@ import json +from copy import deepcopy from pathlib import Path from os import makedirs from deezer import TrackFormats @@ -113,7 +114,13 @@ def load(configFolder=None): # Read config file with open(configFolder / 'config.json', 'r') as configFile: - settings = json.load(configFile) + try: + settings = json.load(configFile) + except json.decoder.JSONDecodeError: + save(DEFAULTS, configFolder) + settings = deepcopy(DEFAULTS) + except Exception: + settings = deepcopy(DEFAULTS) if check(settings) > 0: save(settings, configFolder) # Check the settings and save them if something changed return settings