mirror of
https://github.com/correl/mage.git
synced 2024-12-27 11:07:39 +00:00
4b768d17b6
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.
115 lines
4.2 KiB
Python
115 lines
4.2 KiB
Python
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!")
|
|
|
|
|
|
|