mirror of
https://github.com/correl/mage.git
synced 2024-11-21 19:18:40 +00:00
CubeCobraDownloader.py Utility script for adding cubes
A python script to automatically download cubes from CubeCobra and place the list of cards in the cube folder with automatic naming. It also instructs you how to edit the 3 config files to implement it fully. Tested by quering 2 different cubes and running client server locally and drafting a full drafting. Hopefully it will be usefull.
This commit is contained in:
parent
97b2ab0b26
commit
4b768d17b6
1 changed files with 115 additions and 0 deletions
115
Utils/CubeCobraDownloader.py
Normal file
115
Utils/CubeCobraDownloader.py
Normal file
|
@ -0,0 +1,115 @@
|
|||
import requests
|
||||
import re
|
||||
import os
|
||||
from time import sleep
|
||||
import argparse
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
prog = 'CubeCobraDownloader',
|
||||
description = 'Given an url for a cube on CubeCobra.com, downloads the cards and helps you implement and push it to the xmage github',
|
||||
epilog = 'Author: TheBear132')
|
||||
|
||||
parser.add_argument('url', help="The URL for cube on CubeCobra (must be the overview tab) e.g. https://cubecobra.com/cube/overview/df")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
MageFolder = os.path.dirname(__file__)
|
||||
#Find mage folder
|
||||
for i in range(5):
|
||||
if "mage" not in MageFolder:
|
||||
break
|
||||
MageFolder = os.path.join( os.path.abspath(MageFolder), os.path.pardir)
|
||||
if i == 4:
|
||||
"Place this script inside the /mage/ folder!"
|
||||
exit(1)
|
||||
MageFolder = os.path.join(os.path.dirname(MageFolder), "mage")
|
||||
#print(f"{MageFolder=}")
|
||||
|
||||
|
||||
def clean(varStr): return re.sub('\W|^(?=\d)','', varStr)
|
||||
|
||||
|
||||
def getDecklist(url):
|
||||
r = requests.get(url).content.decode()
|
||||
#with open("idk.html", "w", encoding="utf8") as f:
|
||||
# f.write(r)
|
||||
cubeId, cubeName, owner = re.findall("""{"cube":{"_id":"([0-9a-z]*)",".*"name":"(.*)","owner".*"owner_name":"(.*)","date_updated""", r)[0]
|
||||
|
||||
cubeCards = f"https://cubecobra.com/cube/download/plaintext/{cubeId}?primary=Color%20Category&secondary=Types-Multicolor&tertiary=Mana%20Value&quaternary=Alphabetical&showother=false"
|
||||
deck = requests.get(cubeCards)
|
||||
deck = deck.content.decode().split("\r\n")
|
||||
while("" in deck):
|
||||
deck.remove("")
|
||||
return (deck, cubeName, owner)
|
||||
|
||||
|
||||
CobraOverview = "https://cubecobra.com/cube/overview/df"
|
||||
CobraOverview = args.url
|
||||
print(f"{CobraOverview=}")
|
||||
|
||||
deck, cubeName, owner = getDecklist(CobraOverview)
|
||||
print(f"\n{owner=} | {cubeName=}")
|
||||
|
||||
with open( os.path.join(MageFolder, "Utils\mtg-cards-data.txt"), encoding="utf-8") as f:
|
||||
mtgcarddata = f.read()
|
||||
|
||||
|
||||
cleanOwner = clean(owner.replace(" ", ""))
|
||||
cleanCubeName = clean(cubeName.replace(" ", ""))
|
||||
|
||||
JavaFile = f"""package mage.tournament.cubes;
|
||||
|
||||
import mage.game.draft.DraftCube;
|
||||
|
||||
/**
|
||||
* @author {os.path.basename(__file__)} by TheBear132
|
||||
*/
|
||||
public class {cleanOwner}s{cleanCubeName} extends DraftCube {{
|
||||
|
||||
public {cleanOwner}s{cleanCubeName}() {{
|
||||
super("{owner}'s {cubeName}"); // {CobraOverview}
|
||||
|
||||
"""
|
||||
|
||||
for cardName in deck:
|
||||
m = re.search(f"(?:{cardName}\|)(Khans of Tarkir|Fate Reforged|Dragons of Tarkir)\|", mtgcarddata)
|
||||
cardName = cardName.replace("\"", "\\\"") #Henrie the toolbox... wizards come on
|
||||
prefSet = ""
|
||||
#print(f"{cardName:30}", end="")
|
||||
if m is not None: #If from a KTK block | Yea i just like that block for some reason
|
||||
if m[1] == "Khans of Tarkir": prefSet = "KTK"
|
||||
if m[1] == "Fate Reforged": prefSet = "FRF"
|
||||
if m[1] == "Dragons of Tarkir": prefSet = "DTK"
|
||||
JavaFile += f""" cubeCards.add(new DraftCube.CardIdentity("{cardName}", "{prefSet}"));
|
||||
"""
|
||||
|
||||
JavaFile += """ }
|
||||
}"""
|
||||
|
||||
|
||||
idk = os.path.join(MageFolder, f"Mage.Server.Plugins\Mage.Tournament.BoosterDraft\src\mage\\tournament\cubes\{clean(owner)}s{clean(cubeName)}.java")
|
||||
if os.path.exists(idk):
|
||||
print("Cube already exists:", idk)
|
||||
exit(0)
|
||||
with open(idk, "w") as f:
|
||||
f.write(JavaFile)
|
||||
|
||||
|
||||
print("\n---------------- ADD THE FOLLOWING TO EACH FILE RESPECTIVELY ----------------")
|
||||
print("[+] Mage.Server\src\\test\data\config_error.xml")
|
||||
print(f" --> <draftCube name=\"{owner}'s {cubeName}\" jar=\"mage-tournament-booster-draft.jar\" className=\"mage.tournament.cubes.{cleanOwner}s{cleanCubeName}\"/>")
|
||||
|
||||
print("\n[+] Mage.Server\\release\config\config.xml")
|
||||
print(f" --> <draftCube name=\"{owner}'s {cubeName}\" jar=\"mage-tournament-booster-draft-${{project.version}}.jar\" className=\"mage.tournament.cubes.{cleanOwner}s{cleanCubeName}\"/>")
|
||||
|
||||
print("\n[+] Mage.Server\config\config.xml")
|
||||
print(f" --> <draftCube name=\"{owner}'s {cubeName}\" jar=\"mage-tournament-booster-draft.jar\" className=\"mage.tournament.cubes.{cleanOwner}s{cleanCubeName}\"/>")
|
||||
print("-----------------------------------------------------------------------------")
|
||||
|
||||
print("Cube written to ->", idk)
|
||||
|
||||
print("\nValidate changes with Git -> create branch -> create pull request -> play your cube!")
|
||||
|
||||
|
||||
|
Loading…
Reference in a new issue