project/util/download.py

43 lines
1.1 KiB
Python

import logging
import os
from util import json_path
logger = logging.getLogger(__name__)
def download_board(board_id, instance_config_id, sequence_id, source):
local_file = "static/progress/images/{config_id}/{sequence_id}/{board_id}".format(
config_id=instance_config_id,
sequence_id=sequence_id,
board_id=board_id)
if os.path.exists(local_file):
return local_file
url = "/game2/editor/config/{config_id}/sequence/{sequence_id}/board/{board_id}/".format(
config_id=instance_config_id,
sequence_id=sequence_id,
board_id=board_id
)
board = source._get(url)
if not board.ok:
raise ConnectionError()
data = board.json()
preview_url = json_path(data, "preview_url.medium")
logger.debug(preview_url)
os.makedirs(local_file[:-len(board_id)], exist_ok=True)
source.download_file(preview_url, local_file)
return local_file
def get_config(source, instance_id):
url = "/game2/editor/config/{config_id}/".format(config_id=instance_id)
instance_data = source.get_json(url)
caches = url + "cache/"
cache_data = source.get_json(caches)
return {
"name": instance_data["name"],
"id": instance_data["@id"],
"caches": cache_data
}