def init_firebase_client(CRYPTO_TOKEN_PATH): global log if log is None: log = logging.Logger(__file__, CRYPTO_TOKEN_PATH) log.info("Setting up Firebase client") firebase_cred = credentials.Certificate(CRYPTO_TOKEN_PATH) firebase_admin.initialize_app(firebase_cred) global firebase_client if firebase_client is None: firebase_client = firestore.client() log.info("Done") return firebase_client
if __name__ == '__main__': if (len(sys.argv) != 4): print( "Usage python add_to_firebase.py crypto_token suggested_replies|message_tags|conversation_tags input_path" ) print( "Adds data items that don't currently exist, and overwrittes items that already exist." ) exit(1) CRYPTO_TOKEN_PATH = sys.argv[1] CONTENT_TYPE = sys.argv[2] INPUT_PATH = sys.argv[3] log = logging.Logger(__file__, CRYPTO_TOKEN_PATH) firebase_client = firebase_util.init_firebase_client(CRYPTO_TOKEN_PATH) valid_content_type = [ "suggested_replies", "message_tags", "conversation_tags" ] if CONTENT_TYPE not in valid_content_type: log.error("Content type '{}' not known, expected one of {}".format( CONTENT_TYPE, valid_content_type)) exit(1) with open(INPUT_PATH, 'r') as f: data_dict = json.load(f) if CONTENT_TYPE == "suggested_replies":
def get_dir_size_in_mb(dirpath): dir_size = 0 for (path, dirs, files) in os.walk(dirpath): for file in files: filename = os.path.join(path, file) dir_size += os.path.getsize(filename) return round((dir_size / (1024 * 1024)), 1) if __name__ == '__main__': parser = argparse.ArgumentParser(description="Monitor size of a directory") parser.add_argument("crypto_token_file", type=str, help="path to Firebase crypto token file") parser.add_argument("project", type=str, help="name of the project") parser.add_argument("dirpath", type=str, help="path of directory to monitor") args = parser.parse_args() dirpath = os.path.abspath(args.dirpath) project = args.project log = logging.Logger(__file__, args.crypto_token_file) firebase_client = init_firebase_client(args.crypto_token_file) while True: get_size_and_upload(dirpath, project) time.sleep(DEFAULT_INTERVAL)