1
0
Fork 0
mirror of https://github.com/ldericher/fftcgtool synced 2025-01-15 15:02:59 +00:00

fix upload prompt

This commit is contained in:
Jörn-Michael Miehe 2021-09-02 03:06:12 +02:00
parent 9d5412a12c
commit b99dc00499
2 changed files with 42 additions and 11 deletions

View file

@ -6,39 +6,68 @@ import pickle
from .card import Card from .card import Card
from .cards import Cards from .cards import Cards
from .code import Code from .code import Code
from .language import API_LANGS
from .utils import CARDDB_FILE_NAME from .utils import CARDDB_FILE_NAME
class CardDB: class CardDB:
__instance: CardDB = None __instance: CardDB = None
__content: dict[Code, Card] __cards: dict[Code, Card]
__face_to_url: dict[str, str]
def __new__(cls) -> CardDB: def __new__(cls) -> CardDB:
if CardDB.__instance is None: if CardDB.__instance is None:
CardDB.__instance = object.__new__(cls) CardDB.__instance = object.__new__(cls)
CardDB.__instance.__content = {} CardDB.__instance.__cards = {}
CardDB.__instance.__face_to_url = {}
return CardDB.__instance return CardDB.__instance
def __contains__(self, item: Code) -> bool: def __contains__(self, item: Code) -> bool:
return item in self.__content return item in self.__cards
def __getitem__(self, code: Code) -> Card: def __getitem__(self, code: Code) -> Card:
return self.__content[code] return self.__cards[code]
def __pickle(self):
# pickle db file
with bz2.BZ2File(CARDDB_FILE_NAME, "w") as file:
pickle.dump(self.__cards, file)
pickle.dump(self.__face_to_url, file)
def update(self, cards: Cards): def update(self, cards: Cards):
for card in cards: for card in cards:
self.__content[card.code] = card self.__cards[card.code] = card
# pickle db file self.__pickle()
with bz2.BZ2File(CARDDB_FILE_NAME, "w") as file:
pickle.dump(self.__content, file)
def load(self) -> None: def upload_prompt(self) -> None:
faces = list(set([
card[lang].face
for card in self.__cards.values()
for lang in API_LANGS
if card[lang].face
]))
faces.sort()
for face in faces:
if face not in self.__face_to_url:
face_url = input(f"Upload '{face}' and paste URL: ")
if face_url:
self.__face_to_url[face] = face_url
self.__pickle()
def __unpickle(self):
# unpickle db file # unpickle db file
self.__content.clear() self.__cards.clear()
self.__face_to_url.clear()
try: try:
with bz2.BZ2File(CARDDB_FILE_NAME, "r") as file: with bz2.BZ2File(CARDDB_FILE_NAME, "r") as file:
self.__content |= pickle.load(file) self.__cards |= pickle.load(file)
self.__face_to_url |= pickle.load(file)
except FileNotFoundError: except FileNotFoundError:
pass pass
def load(self) -> None:
self.__unpickle()

View file

@ -24,6 +24,8 @@ def opus_decks(args: argparse.Namespace) -> list[fftcg.TTSDeck]:
carddb.update(opus) carddb.update(opus)
decks.extend(opus.elemental_decks) decks.extend(opus.elemental_decks)
carddb.upload_prompt()
# create elemental decks for opus # create elemental decks for opus
return decks return decks