import datetime import json import os import googleapiclient import src.functions.credentials def readConfig(): if not os.path.exists("./config.json"): with open("config.json", "w+") as w: json.dump( obj={ "access_token": None, "account_list": [], "arcio": None, "auth": False, "build_interval": 360, "category_list": [], "client_id": None, "client_secret": None, "cloudflare": None, "kill_switch": False, "refresh_token": None, "secret_key": "", "service_accounts": [], "subtitles": False, "signup": False, "tmdb_api_key": "", "token_expiry": "", "transcoded": False, }, fp=w, sort_keys=True, indent=4, ) with open("config.json", "r") as r: config = json.load(r) try: datetime.datetime.strptime(config.get("token_expiry"), "%Y-%m-%d %H:%M:%S.%f") except: config["token_expiry"] = str(datetime.datetime.utcnow()) return config def updateConfig(config): with open("config.json", "w+") as w: json.dump(obj=config, fp=w, sort_keys=True, indent=4) if os.getenv("LIBDRIVE_CLOUD"): config, drive = src.functions.credentials.refreshCredentials(config) params = { "supportsAllDrives": True, "includeItemsFromAllDrives": True, "fields": "files(id,name)", "q": "'%s' in parents and trashed = false and mimeType = 'application/json'" % (os.getenv("LIBDRIVE_CLOUD")), } files = drive.files().list(**params).execute()["files"] config_file = next((i for i in files if i["name"] == "config.json"), None) file_metadata = { "name": "config.json", "mimeType": "application/json", "parents": [os.getenv("LIBDRIVE_CLOUD")], } media = googleapiclient.http.MediaFileUpload( "config.json", mimetype="application/json", resumable=True ) if config_file: params = { "fileId": config_file["id"], "media_body": media, "supportsAllDrives": True, } drive.files().update(**params).execute() else: params = { "body": file_metadata, "media_body": media, "supportsAllDrives": True, } drive.files().create(**params).execute()