LibDrive / src /functions /config.py
thejagstudio's picture
Upload 101 files
dcb132a verified
raw
history blame
2.88 kB
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()