forked from CopyBot/sptnr
handle corrupted lock files
This commit is contained in:
@@ -100,9 +100,18 @@ class NoColorFormatter(logging.Formatter):
|
|||||||
|
|
||||||
|
|
||||||
def load_lock():
|
def load_lock():
|
||||||
if os.path.exists(LOCK_FILE):
|
if not os.path.exists(LOCK_FILE):
|
||||||
|
return {}
|
||||||
|
try:
|
||||||
with open(LOCK_FILE, "r") as f:
|
with open(LOCK_FILE, "r") as f:
|
||||||
return json.load(f)
|
return json.load(f)
|
||||||
|
except json.JSONDecodeError:
|
||||||
|
logging.error(f"{LIGHT_RED}Lock file '{LOCK_FILE}' is corrupt or not valid JSON. Starting with an empty lock.{RESET}")
|
||||||
|
# Optionally, back up the corrupt file
|
||||||
|
os.rename(LOCK_FILE, LOCK_FILE + ".corrupt")
|
||||||
|
return {}
|
||||||
|
except Exception as e:
|
||||||
|
logging.error(f"{LIGHT_RED}Error loading lock file '{LOCK_FILE}': {e}{RESET}")
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
def save_lock(lock):
|
def save_lock(lock):
|
||||||
@@ -207,6 +216,13 @@ parser.add_argument(
|
|||||||
default=7,
|
default=7,
|
||||||
help="Number of days to lock song updates (0 to force update every time)",
|
help="Number of days to lock song updates (0 to force update every time)",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"-j",
|
||||||
|
"--lock-jitter",
|
||||||
|
type=int,
|
||||||
|
default=24,
|
||||||
|
help="Number of hours to add random jitter to the lock duration",
|
||||||
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-v", "--version", action="version", version=f"%(prog)s {__version__}"
|
"-v", "--version", action="version", version=f"%(prog)s {__version__}"
|
||||||
@@ -220,7 +236,7 @@ ALBUM_IDs = args.album if args.album else []
|
|||||||
START = args.start
|
START = args.start
|
||||||
LIMIT = args.limit
|
LIMIT = args.limit
|
||||||
BASE_LOCK_DURATION = args.lock_duration
|
BASE_LOCK_DURATION = args.lock_duration
|
||||||
LOCK_JITTER = 24
|
LOCK_JITTER = args.lock_jitter
|
||||||
|
|
||||||
logging.info(f"{BOLD}Version:{RESET} {LIGHT_YELLOW}sptnr v{__version__}{RESET}")
|
logging.info(f"{BOLD}Version:{RESET} {LIGHT_YELLOW}sptnr v{__version__}{RESET}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user