|
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()
|
|
|