Inspiration
I love Magic: The Gathering (MTG), but I don't have unlimited funds to spend on it. It took me far too much time to find, download, resize, and compile all the cards I wanted to print during any batch. So I figured I would automate the entire process! These printed cards are called proxies and are meant to be used in Non-Competitive settings.
What it does
First, it takes in a list of cards in the format 'quantity x card_name' from a txt file. Then it verifies that each card exists. If it does, it will download the highest quality PNG file from Scryfall. Then it will resize to the real scale of an MTG card, and combine each of them into one big printable sheet. From there, it's up to the user to go print them out and use them responsibly.
How I built it
Scrycutter was built entirely in Python and distributed into a neat executable using Pyinstaller. It also takes advantage of the Scryfall API which is a Magic: The Gathering
Challenges I ran into
Wrestling with Tkinter, which was the GUI portion of the executable, was pretty difficult to stylize into any form. If I had more time, I would have used something completely different.
Accomplishments that we're proud of
I am proud of the low impact that this program has on the API it relies on. It only downloads the images it needs and caches the bulk of the data, which only updates if the cache is older than a week.
What I learned
I learned how to use a few Python libraries I've never used before such as PIL (Python Imaging Library). I also got to use the Scryfall API, which involved lots of JSON manipulation.
What's next for Scrycutter
The primitive interface works for the demo, but I would like to make it into a web application to avoid downloading files. I would also want to give users more options to specify which versions of the cards they specifically want, with a way for users just to "click" the one that looks the best to them and add it to the generated sheets.
Built With
- python
- scryfall
- tkinter
Log in or sign up for Devpost to join the conversation.