143 lines
4.4 KiB
Python
Raw Normal View History

2023-10-24 00:32:17 +08:00
import copy
2023-10-23 23:35:02 +08:00
import json
from model import Product, Ex
from model.action import ActionAttr
from model.card import Ability, Card
from model.collection import CollectionAttr
from model.constants import AbilityType, CardColor, CardType, FrameType
from model.progress import Link, ProgressAttr
from utils.json import get_member_from_enum, to_json
with open("./data.json", "r") as f:
data = json.load(f)
sideab = data[0]
brilliant = data[1]
output = []
outP = Product(
sideab["id"],
sideab["name"],
sideab["release_date"],
sideab["main_expansion"],
)
for card in sideab["cards"]:
outC = Card(
card["name"],
card["name_tran"],
get_member_from_enum(CardType, card["type"]),
card["level"],
get_member_from_enum(CardColor, card["color"]) if card["color"] else None,
[
Ability(
get_member_from_enum(AbilityType, ability["type"]),
ability["effect"],
ability["effect_tran"],
)
for ability in card["abilities"]
],
ProgressAttr(
card["progress_attr"]["character"],
card["progress_attr"]["character_tran"],
Link(
card["progress_attr"]["link"]["cost"],
(
card["progress_attr"]["link"]["omega"],
card["progress_attr"]["link"]["sigma"],
card["progress_attr"]["link"]["any"],
),
card["progress_attr"]["link"]["effect"],
card["progress_attr"]["link"]["effect_tran"],
)
if card["progress_attr"]["link"]
else None,
Ex(
card["progress_attr"]["ex"]["name"],
card["progress_attr"]["ex"]["effect"],
card["progress_attr"]["ex"]["name_tran"],
card["progress_attr"]["ex"]["effect_tran"],
)
if card["progress_attr"]["ex"]
else None,
)
if card["progress_attr"]
else None,
ActionAttr(
card["action_attr"]["condition"],
card["action_attr"]["effect"],
card["action_attr"]["condition_tran"],
card["action_attr"]["effect_tran"],
)
if card["action_attr"]
else None,
get_member_from_enum(FrameType, card["frame_attr"])
if card["frame_attr"]
else None,
card["atk"] if card["atk"] else None,
card["def"] if card["def"] else None,
card["stk"] if card["stk"] else None,
card["flavor_text"] if card["flavor_text"] else None,
card["flavor_text_tran"] if card["flavor_text_tran"] else None,
CollectionAttr(
card["collection_attr"]["series_id"],
card["collection_attr"]["card_index"],
card["collection_attr"]["effect_index"],
card["collection_attr"]["product_id"],
card["collection_attr"]["product_name"],
card["collection_attr"]["foil"],
card["collection_attr"]["alternate_art"],
card["collection_attr"]["artist"],
card["collection_attr"]["promo"],
),
)
outP.cards.append(outC)
output.append(outP)
outP = Product(
brilliant["id"],
brilliant["name"],
brilliant["release_date"],
brilliant["main_expansion"],
)
f = False
for card in brilliant["cards"]:
card_index = card["collection_attr"]["card_index"]
if card_index[-1] == "P":
effect_index = card_index[:-1]
alternate_art = True
elif card_index[-1] == "F":
effect_index = "Sigma" if f else "Omega"
alternate_art = True
f = True
else:
effect_index = card_index
alternate_art = False
for c in output[0].cards:
if c.collection_attr.effect_index == card["collection_attr"]["effect_index"]:
2023-10-24 00:32:17 +08:00
outC = copy.deepcopy(c)
2023-10-23 23:35:02 +08:00
outC.collection_attr = CollectionAttr(
"1",
card_index,
effect_index,
"brilliant",
"アンジュ・ユナイト ブリリアントパック Vol.1",
True,
alternate_art,
card["collection_attr"]["artist"]
if card["collection_attr"]["artist"]
else None,
None,
)
outP.cards.append(outC)
break
2023-10-24 00:32:17 +08:00
output.append(outP)
2023-10-23 23:35:02 +08:00
to_json(output, path="./test")