mirror of
https://github.com/ldericher/fftcgtool
synced 2025-01-15 15:02:59 +00:00
directory structure
This commit is contained in:
parent
776769c010
commit
f59498e3ac
6 changed files with 31 additions and 14 deletions
|
@ -1,12 +1,13 @@
|
||||||
import bz2
|
import bz2
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import pickle
|
import pickle
|
||||||
|
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from .cards import Cards
|
from .cards import Cards
|
||||||
from .imageloader import ImageLoader
|
from .imageloader import ImageLoader
|
||||||
from .utils import GRID, RESOLUTION, BOOK_PICKLE_NAME, CARD_BACK_URL
|
from .utils import GRID, RESOLUTION, CARDDB_FILE_NAME, CARD_BACK_URL, IMAGES_DIR_NAME
|
||||||
|
|
||||||
|
|
||||||
class Book:
|
class Book:
|
||||||
|
@ -58,14 +59,17 @@ class Book:
|
||||||
})
|
})
|
||||||
|
|
||||||
def save(self) -> None:
|
def save(self) -> None:
|
||||||
|
if not os.path.exists(IMAGES_DIR_NAME):
|
||||||
|
os.mkdir(IMAGES_DIR_NAME)
|
||||||
|
|
||||||
# save images
|
# save images
|
||||||
for i, page in enumerate(self.__pages):
|
for i, page in enumerate(self.__pages):
|
||||||
# save page image
|
# save page image
|
||||||
page["image"].save(page["file_name"])
|
page["image"].save(os.path.join(IMAGES_DIR_NAME, page["file_name"]))
|
||||||
|
|
||||||
book: dict[str, Cards]
|
book: dict[str, Cards]
|
||||||
try:
|
try:
|
||||||
with bz2.BZ2File(BOOK_PICKLE_NAME, "r") as file:
|
with bz2.BZ2File(CARDDB_FILE_NAME, "r") as file:
|
||||||
book = pickle.load(file)
|
book = pickle.load(file)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
book = {}
|
book = {}
|
||||||
|
@ -80,5 +84,5 @@ class Book:
|
||||||
book[page["file_name"]] = page["cards"]
|
book[page["file_name"]] = page["cards"]
|
||||||
|
|
||||||
# update book.yml file
|
# update book.yml file
|
||||||
with bz2.BZ2File(BOOK_PICKLE_NAME, "w") as file:
|
with bz2.BZ2File(CARDDB_FILE_NAME, "w") as file:
|
||||||
pickle.dump(book, file)
|
pickle.dump(book, file)
|
||||||
|
|
|
@ -5,7 +5,7 @@ import pickle
|
||||||
|
|
||||||
from fftcg import Card
|
from fftcg import Card
|
||||||
from fftcg.code import Code
|
from fftcg.code import Code
|
||||||
from fftcg.utils import BOOK_PICKLE_NAME
|
from fftcg.utils import CARDDB_FILE_NAME
|
||||||
|
|
||||||
|
|
||||||
class CardDB:
|
class CardDB:
|
||||||
|
@ -28,7 +28,7 @@ class CardDB:
|
||||||
# load book.yml file
|
# load book.yml file
|
||||||
book: dict
|
book: dict
|
||||||
try:
|
try:
|
||||||
with bz2.BZ2File(BOOK_PICKLE_NAME, "r") as file:
|
with bz2.BZ2File(CARDDB_FILE_NAME, "r") as file:
|
||||||
book = pickle.load(file)
|
book = pickle.load(file)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
book = {}
|
book = {}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import re
|
||||||
|
|
||||||
from .card import Card
|
from .card import Card
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,4 +20,5 @@ class Cards(list[Card]):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def file_name(self) -> str:
|
def file_name(self) -> str:
|
||||||
return self.name.lower().replace(" ", "_")
|
val = self.name.lower().replace(" ", "_")
|
||||||
|
return re.sub(r"[^\w]", "", val, flags=re.UNICODE)
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import json
|
import json
|
||||||
|
import os
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from .carddb import CardDB
|
from .carddb import CardDB
|
||||||
from .cards import Cards
|
from .cards import Cards
|
||||||
from .code import Code
|
from .code import Code
|
||||||
from .utils import CARD_BACK_URL
|
from .utils import CARD_BACK_URL, DECKS_DIR_NAME
|
||||||
|
|
||||||
|
|
||||||
class TTSDeck(Cards):
|
class TTSDeck(Cards):
|
||||||
|
@ -43,7 +44,7 @@ class TTSDeck(Cards):
|
||||||
Code(card["card"]["serial_number"])
|
Code(card["card"]["serial_number"])
|
||||||
for card in req.json()["cards"]
|
for card in req.json()["cards"]
|
||||||
]
|
]
|
||||||
name = req.json()["name"]
|
name = f"{req.json()['name']} ({deck_id})"
|
||||||
description = req.json()["description"]
|
description = req.json()["description"]
|
||||||
|
|
||||||
return cls(codes, name, description)
|
return cls(codes, name, description)
|
||||||
|
@ -113,5 +114,8 @@ class TTSDeck(Cards):
|
||||||
def save(self) -> None:
|
def save(self) -> None:
|
||||||
# only save if the deck contains cards
|
# only save if the deck contains cards
|
||||||
if self:
|
if self:
|
||||||
with open(f"{self.file_name}.json", "w") as file:
|
if not os.path.exists(DECKS_DIR_NAME):
|
||||||
|
os.mkdir(DECKS_DIR_NAME)
|
||||||
|
|
||||||
|
with open(os.path.join(DECKS_DIR_NAME, f"{self.file_name}.json"), "w") as file:
|
||||||
json.dump(self.tts_object, file, indent=2)
|
json.dump(self.tts_object, file, indent=2)
|
||||||
|
|
|
@ -3,7 +3,9 @@ from .grid import Grid
|
||||||
# constants
|
# constants
|
||||||
GRID = Grid((10, 7)) # default in TTsim: 10 columns, 7 rows
|
GRID = Grid((10, 7)) # default in TTsim: 10 columns, 7 rows
|
||||||
RESOLUTION = Grid((429, 600)) # default in TTsim: 480x670 pixels per card
|
RESOLUTION = Grid((429, 600)) # default in TTsim: 480x670 pixels per card
|
||||||
BOOK_PICKLE_NAME = "book.pickle.bz2"
|
DECKS_DIR_NAME = "decks" # name of decks directory
|
||||||
|
IMAGES_DIR_NAME = "images" # name of images directory
|
||||||
|
CARDDB_FILE_NAME = "carddb.pickle.bz2" # name of card book file
|
||||||
# card back URL (image by Aurik)
|
# card back URL (image by Aurik)
|
||||||
CARD_BACK_URL = "http://cloud-3.steamusercontent.com/ugc/948455238665576576/85063172B8C340602E8D6C783A457122F53F7843/"
|
CARD_BACK_URL = "http://cloud-3.steamusercontent.com/ugc/948455238665576576/85063172B8C340602E8D6C783A457122F53F7843/"
|
||||||
|
|
||||||
|
|
10
main.py
10
main.py
|
@ -5,6 +5,9 @@ import os
|
||||||
|
|
||||||
import fftcg
|
import fftcg
|
||||||
|
|
||||||
|
# constants
|
||||||
|
OUT_DIR_NAME = "out" # name of output directory
|
||||||
|
|
||||||
|
|
||||||
def opus_decks(args: argparse.Namespace) -> list[fftcg.TTSDeck]:
|
def opus_decks(args: argparse.Namespace) -> list[fftcg.TTSDeck]:
|
||||||
# import an opus
|
# import an opus
|
||||||
|
@ -94,9 +97,10 @@ def main() -> None:
|
||||||
)
|
)
|
||||||
|
|
||||||
# output directory
|
# output directory
|
||||||
if not os.path.exists("out"):
|
if not os.path.exists(OUT_DIR_NAME):
|
||||||
os.mkdir("out")
|
os.mkdir(OUT_DIR_NAME)
|
||||||
os.chdir("out")
|
|
||||||
|
os.chdir(OUT_DIR_NAME)
|
||||||
|
|
||||||
# call function based on args
|
# call function based on args
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
Loading…
Reference in a new issue