
def keepsavefile(payload,log):
    import json
    def load(filename,default={'next' :'begin','default':True}):
        try:
            file = open(filename,'r')
        except:
            log('%s dont exist but we will create it' % filename, lvl='info')
            return default
        try:
            data = json.load(file)
        except Exception as e:
            log('%s is corrupt so well overide it' % filename, lvl='error', data=e)
            return default
        try:
            file.close()
        except:
            log('%s unclosable'% filename,lvl='error')
        return data

    def save(filename,content):
        try:
            file = open(filename,'w')
        except:
            log("cant save, %s unopenable" % filename,lvl='info')
        try:
            json.dump(content,file)
        except Exception as e:
            log("your progress is not saved", lvl='error',data=e)
        try:
            file.close()
        except:
            log('%s unclosable'%filename,lvl='error')

    if not payload.get('player','guest') == 'guest':
        instance = payload.get('player','guest')
        if not instance:
            instance='guest'
        if payload.get('default',False):
            del payload['default']
            log('load %s.json'%instance,lvl='debug')
            payload = load('%s.json'%instance,payload)
            if 'default' in payload:
                del payload['default']
            log('loaded',lvl='debug',data=payload)
        log('save %s.json'%instance,lvl='debug')
        save('%s.json'%instance,payload)
        log('saved',lvl='debug')
    return payload


