Skip to content

pappnu/Proxyshop

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,159 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

⚠️ Disclaimer

This is a fork of the original Proxyshop with the aim of having its changes integrated to the original project. Please report any issues here or on the Discord server's #proxyshop channel as issues opened on the original repository will likely go unnoticed.

Showcase Image Proxyshop is a Photoshop automation app that generates high-quality Magic the Gathering card renders. Inspired by Chilli-Axe's original Photoshop automation scripts. If you need help with this app or wish to troubleshoot an issue, please join our discord!

Photoshop Python Discord GitHub commit activity (branch) GitHub

πŸ› οΈ Requirements

  • Photoshop (2017-2026 Supported)
  • Windows (currently incompatible with Mac/Linux)
  • The Photoshop templates (Can be downloaded in the app, which is recommended over manual download)
  • Required fonts (included in fonts/):
    • Beleren Proxy Bold β€” For Card Name, Typeline, Power/Toughness
    • Proxyglyph β€” For mana symbols, a fork of Chilli's NDPMTG font
    • Plantin MT Pro β€” For rules text, install all variants included
    • Beleren Smallcaps β€” For Artist credit line and miscellaneous
    • Gotham Medium β€” For collector text
  • Optional (but recommended) fonts:
    • Magic The Gathering β€” Required by Classic template
    • Matrix Bold β€” Required by Colorshifted template
    • Mana β€” For various additional card symbols

πŸš€ Setup Guide

  1. Download the latest release, extract it to a folder of your choice.
  2. Install the fonts included in the fonts/ folder, please note that Proxyglyph may need to be updated in future releases.
    1. Select all the fonts
    2. right click
    3. Install
  3. Card arts should be named according to the card (see Art File Naming for more info).
  4. Launch Proxyshop.exe. Press the Updater button. Proxyshop will load templates available to download, grab what you want.
  5. Press Render to render one or more card arts.
  6. You can also drag art images onto the Proxyshop app to start rendering.
  7. The log at the bottom will keep you updated on events happening in the app.

🎨 Art File Naming

  • Art file types currently supported are: jpg, jpeg, jpf, png, tif, and webp. NOTE: webp requires Photoshop 2022+.
  • Art files should be named after real Magic the Gathering cards and should be named as accurately as possible, e.g. Damnation.jpg.
  • Proxyshop supports several optional tags when naming your art files, to give you more control over how the card is rendered!
    • Set [SET] β€” Forces Photoshop to render a version of that card from a specific MTG expansion matching the given set code. This tag is not case sensitive, so both "set" and "SET" will work.
    Damnation [TSR].jpg
    
    • Collector Number {num} β€” Only works if Set tag was also provided. Renders a version of that card with the exact set code and number combination. This is particularly useful in cases where a set has multiple versions of the same card, for example Secret Lair (SLD) has 3 different versions of Brainstorm.
    Brainstorm [SLD] {175}.jpg
    
    • Artist Name (Artist Name) β€” When filling in the artist name, Proxyshop will override the name present in the Scryfall data with the name you provide. This change is purely cosmetic and does not affect how the card is fetched, nor does it conflict with other tags.
    Brainstorm [SLD] {175} (Rusty Shackleford).jpg
    
    • Creator Name $Creator Name β€” This tag is not widely supported by Proxyshop's default templates. This tag allows you to insert your preferred name as a user/designer/creator, and if the template supports the creator name feature this text will be placed on a specified text layer. Can be used as a kind of signature for your work. NOTE: This tag MUST be placed at the VERY END of the art file name.
    Brainstorm [SLD] {175}$My Creator Name.jpg
    

πŸ’» Using the Proxyshop GUI

Rendering

  • Render: Opens a file picker for choosing images to render. Template used for rendering is determined based on the tab you are in and what templates you have selected. Completed renders are saved to out/ under Proxyshop's directory.
  • Templates tab: Allows selecting a specific template to render cards in. If a card has a layout that isn't supporeted by the selected template it won't be rendered.
  • Batch mode tab: Allows selecting a different template per card layout (e.g. Normal, Transform, Planeswalker, etc.). If some layout is left without a selection cards of that type are skipped. The batch mode is similar to how the old Proxyshop GUI used to function.
  • Queue: Allows viewing what cards have been queued for rendering. Individual entries can be removed from the queue or the whole queue can be cleared.
  • Cancel/Resume: Cancel aborts rendering. The currently active operation is removed but the rest of the queue is left intact. Resume can be used to proceed with the rest of the queue after a cancel.

Updater

The updater window allows downloading and updating template files. The files can originate from Proxyshop or installed plugins.

  • Install: Downloads a tempalte file.
  • Update: Downloads an updated version of a template file. Be aware that if you have made local changes to the file that is about to be updated those changes will be lost as the old file is overwritten. Please note that Proxyshop records templates' versions only when downloading them via the updater, so if you source templates manually from elsewhere they will be assumed to have some default version and even if they don't actually have a newer version available the update option is still offered, assuming the templates can be downloaded via the updater as well.

Settings

The settings window allows modifying Proxyshop's behavior. The settings can be accessed via the Settings button or via the template specific settings buttons within the templates list.

  • Application: App wide settings.
  • Template defaults: These settings are used when rendering if the used template doesn't have template specific settings.
  • Templates: A tree of template specific settings. If a template is given template specific settings they completely override the Template defaults. Template specific settings become active by simply selecting a template entry in the settings tree. Press Clear when some template specific settings are open to remove them from use, consequently returning to use Template defaults for that template.

Custom cards

You may supply Proxyshop with image and JSON pairs to render cards with custom specifications. The image's card name part and the JSON file's name, excluding suffix, should be the same, e.g. my_custom_card (artist).png and my_custom_card.json. The JSON file should contain a valid Scryfall card specification. Look up class ScryfallCard from the source code if you want to know the specifics of the data validation. An easy way to make the JSON is to look up a similar card from Scryfall, download the JSON for that card via Scryfall's web GUI (Copy-pasteable JSON on the card's page) and modify the downloaded JSON.

Tools

  • Transform images: Allows re-encoding and downscaling chosen images. Completed transformations are saved to compressed/ next to the input image.

🐍 Setup Guide (Python Environment)

Setting up the Python environment for Proxyshop is intended for advanced users, contributors, and anyone who wants to get their hands dirty making a plugin or custom template for the app! This guide assumes you already have Python installed. See pyproject.toml for supported Python versions.

  1. Install Poetry with pipx.
    # Install pipx and poetry
    python -m pip install --user pipx
    python -m pipx ensurepath
    pipx install poetry
    # Store the virtual environment in the project directory
    poetry config virtualenvs.in-project true
  2. Clone Proxyshop somewhere on your system, we'll call this the root directory.
    git clone https://github.com/MrTeferi/Proxyshop.git
  3. Navigate to the root directory and install the project environment.
    cd proxyshop
    poetry install
  4. Install the fonts included in the fonts/ folder.
  5. Run the app.
    # OPTION 1) Activate the virtual environment and run the app's entrypoint with Python
    ./.venv/Scripts/Activate
    python main.py
    
    # OPTION 2) Execute via poetry
    poetry run python main.py
  6. Refer to the usage guide for navigating the GUI.

πŸ–₯ Development Environment

If you want to contribute to Proxyshop you should ensure that your code plays well with the strict type checking of Pyright or Mypy. For example, using VS Code with the extensions below will allow you to see type checking results and take advantage of code completions, such as auto-imports, while writing code, though you are free to use any other setup that suits you as well:

Additionally if you want to do UI development the extensions below will help with that. These aren't needed for template plugin development.

After installing the Qt extensions add your absolute path to ./src/gui to the qt-qml.qmlls.additionalImportPaths setting in VS Code. Without it qmllint won't recognize local Qml imports. At the time of writing the qmllint, provided by the Qt Qml extension, doesn't recognize context defined in Python so warnings within the Qml files are expected.

πŸ’Ύ Download Templates Manually

If you wish to download the templates manually, visit this link. These archives must be extracted to the /templates directory. The archives found within the Investigamer and SilvanMTG drive folders must be extracted to /plugins/Investigamer/templates and /plugins/SilvanMTG/templates respectively.

πŸ”© Build the App

If you want to make a distributable executable of Proxyshop run the following command:

pyinstaller -n Proxyshop --onefile --icon "./src/img/favicon.ico" --distpath "./dist" --console --add-data "src/gui/qml:src/gui/qml" --add-data "src/img/favicon.ico:src/img/favicon.ico" main.py

Additionally the following directories and their contents should be distributed alongside the executable:

  • /fonts
  • /plugins
  • /templates
  • /src/data
  • /src/img

πŸ’Œ How can I support Proxyshop?

Feel free to join our discord and participate in the #Proxyshop channel where we are constantly brainstorming and testing new features, dropping beta releases, and sharing new plugins and templates.

❓ FAQ

How do I change the set symbol to something else?

In settings, change "Default Symbol" to the set code of the symbol you want, and enable "Force Default Symbol". If you wish to add a totally custom symbol, here's the process:

  • Head over to src/img/symbols/ and create a folder named according a new custom code.
  • Add your custom SVG symbols to the folder you created, name each file according to the first letter of its rarity (capitalized).
  • Set that symbol as "Default Symbol" and enabled "Force Default Symbol". You're good to go!
How do I completely hide the set symbol?

In Global Settings, or settings for a specific template, change "Symbol Render Mode" to None. This disables the expansion symbol altogether.

How do I hide a layer in a Proxyshop template, so it doesn't appear in rendered cards?

In the Photoshop template of your choice, change the opacity to 0 on the layer you wish to hide. You can use this method to hide anything. This is safer than just disabling the layer's visibility because layers may be forcibly enabled and disabled by the app, it's also safer than deleting the layer because that may cause errors on some templates.

Where is a good place to find high quality MTG art?

Your best resource is going to be MTG Pics, to improve art quality even more you can look into upscaling with Topaz/Chainner/Upscayl/ComfyUI. On our discord we provide a lot of resources for learning how to upscale art easily and effectively. For mass downloading art, view my other project: MTG Art Downloader

The app stops when trying to enter text and Photoshop becomes unresponsive!

There is a known bug where Photoshop crashes when trying to enter too much text into a text box, it should be fixed but could theoretically happen on some plugin templates that don't make the text box big enough. The best way to fix this is to open the template in Photoshop and expand the bottom edge of the Rules text boxes (creature and noncreature).

Required value is missing / RPC server not responding.

This can sometimes be one of the more rare but obnoxious errors that occur on some systems. Sometimes the root cause is unknown, but it can usually be fixed. Try these options in order until something works:

  • Ensure there is only ONE installation of Photoshop on your computer. Having two versions of Photoshop installed at the same time can prevent making a connection to the app. If you have more than one installed, uninstall all versions of Photoshop and reinstall one version. You must uninstall all of them first, just removing one likely won't fix the issue.
  • Ensure that your Photoshop application was installed using an actual installer. Portable installations of Photoshop do not work with Proxyshop, since Windows needs to know where it is located.
  • Close Photoshop and Proxyshop, then run both Photoshop and Proxyshop as Administrator, try rendering something.
  • Close both of them, then hold ALT + CTRL + SHIFT while launching Photoshop, then launch Proxyshop, try again.
  • Restart your computer, then start both and try again.
  • If you have a particularly over-defensive antivirus software running that may be interfering with Proxyshop connecting to Photoshop, such as Avast, Norton, etc. close your antivirus software, relaunch both, and try again. You might also try disabling Windows Defender.
  • If there's a chance your Photoshop installation could be damaged, corrupted, or otherwise messed up in some way, it is recommended to completely uninstall Photoshop and install the latest version you have access to. Generally, Proxyshop works best with newer versions of Photoshop. If using an in-authentic version of Photoshop, verify it is of high quality and uses a real installer.
  • If all of these fail to fix the issue, please join our Discord (linked at the top) and provide the error log from logs/error.txt in your Proxyshop directory, so we can help find the cause :)
Mana Cost, Rules, or other text is huge and not scaling down?
  • In Photoshop go to Edit > Preferences > Units & Rulers.
  • Set Rulers to Pixels
  • Set Type to Points
  • The issue should be fixed.
Photoshop is busy!

This error occurs when Photoshop is not responding to commands because it is busy. To prevent this error, you must ensure Photoshop is in a neutral state when you run Proxyshop or render a card:

  • There should be no dialog boxes or settings menus open in Photoshop. The normal tool panels are fine.
  • There should be no tools performing tasks, for example having text highlighted for editing with the text tool.
  • Ideally Photoshop should be launched fresh, with no documents open.
I'm getting some other error!

In your proxyshop directory, look for a folder named logs, inside that folder you should see error.txt, check the last error log in that file. If the error isn't obvious, join our Discord and feel free to ask for help in the #Proxyshop channel.

✨ Credits

  • Our amazing Patreon supporters who literally keep this project going.
  • Chilli Axe for his outstanding MTG Photoshop Automation project that Proxyshop was inspired by, and for producing many of the base PSD templates that have been modified to work with Proxyshop.
  • Additional template and asset support from:
    • SilvanMTG
    • Nelynes
    • Trix are for Scoot
    • FeuerAmeise
    • michayggdrasil
    • Warpdandy
    • MaleMPC
    • Vittorio Masia
    • iDerp
    • TupinambΓ‘ (Pedro Neves)
  • Andrew Gioia for his various font projects which have been of use for Proxyshop in the past.
  • John Prime, Haven King, and members of CCGHQ for providing expansion symbol SVG's.
  • Hal and the other contributors over at Photoshop Python API.
  • Wizards of the Coast and all the talented artists who make Magic the Gathering a reality.
  • Countless others who have provided help and other assets to the community that made various features possible.
  • All contributors to the code base.

About

A Photoshop automation tool for generating high quality Magic the Gathering card renders.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 91.9%
  • QML 8.1%