Add cv_engine package.
This commit is contained in:
90
cv_engine/util.py
Normal file
90
cv_engine/util.py
Normal file
@@ -0,0 +1,90 @@
|
||||
import json
|
||||
import os
|
||||
|
||||
from cv_engine.models import Card
|
||||
|
||||
|
||||
class EngineConfig:
|
||||
"""
|
||||
Configuration class for the Cardvault engine
|
||||
Defines default values for all settings
|
||||
Should be changed at runtime to load customized settings
|
||||
"""
|
||||
# Should cv_engine show duplicate names in searches
|
||||
duplicate_names_in_search = True
|
||||
# Log level for cv_engine
|
||||
log_level = 0
|
||||
# Default path of cardvault configuration file
|
||||
config_path = os.path.join(os.path.expanduser('~'), '.config', 'cardvault')
|
||||
# Name of the database file
|
||||
db_file = 'cardvault.db'
|
||||
# Default path to store temporary files
|
||||
cache_path = os.path.join(os.path.expanduser('~'), '.cache', 'cardvault')
|
||||
|
||||
|
||||
class EngineConstants:
|
||||
"""
|
||||
Constants of cv_engine
|
||||
Contains version number, application infos, etc.
|
||||
"""
|
||||
# Version of the cardvault engine
|
||||
engine_version = 0.1
|
||||
# Location of manual wiki
|
||||
manual_location = 'https://github.com/luxick/cardvault'
|
||||
|
||||
|
||||
class MTGConstants:
|
||||
"""
|
||||
This class contains constants that can be used within the whole program
|
||||
Included are for example the the official color order or rarities
|
||||
"""
|
||||
# Color order for mana symbols
|
||||
mana_order = ('W', 'U', 'B', 'R', 'G')
|
||||
# All card types that can be used by the application
|
||||
card_types = ("Creature", "Artifact", "Instant", "Enchantment", "Sorcery", "Land", "Planeswalker")
|
||||
# Order of card rarities
|
||||
rarities = ('special', 'common', 'uncommon', 'rare', 'mythic rare')
|
||||
# URL for card images. Insert card.multiverse_id.
|
||||
card_image_url_base = 'http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid={}&type=card'
|
||||
# Abbreviated version of all card colors
|
||||
color_shorthands = {
|
||||
'White': 'W',
|
||||
'Blue': 'U',
|
||||
'Black': 'B',
|
||||
'Red': 'R',
|
||||
'Green': 'G'
|
||||
}
|
||||
|
||||
|
||||
class Utilities:
|
||||
"""
|
||||
The class offers methods for general usage thorough the program.
|
||||
"""
|
||||
@staticmethod
|
||||
def apply_config(filename):
|
||||
"""
|
||||
Load the supplied configuration and apply it to the EngineConfig class.
|
||||
:param filename: Path to a json formatted cardvault config file.
|
||||
"""
|
||||
with open(filename) as config_file:
|
||||
config = json.load(config_file)
|
||||
for setting, value in config.items():
|
||||
EngineConfig.__dict__[setting] = value
|
||||
|
||||
@staticmethod
|
||||
def parse_mtgjson_cards(json_data):
|
||||
"""
|
||||
Parse a json object to
|
||||
:param json_data:
|
||||
"""
|
||||
output = []
|
||||
for data in json_data.values():
|
||||
cards = []
|
||||
for raw in data["cards"]:
|
||||
c = Card(raw)
|
||||
c.image_url = MTGConstants.card_image_url_base.format(c.multiverse_id)
|
||||
c.set = data["code"]
|
||||
c.set_name = data["name"]
|
||||
cards.append(c)
|
||||
output = output + cards
|
||||
return output
|
||||
Reference in New Issue
Block a user