Skip to content

TheSCREWEDSoftware/ymir-launcher-python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ymir-python-script Usage Guide

This project automates the process of matching ymir releases with your World of Warcraft client versions and helps you launch the correct ymir executable for your client. Below is a detailed explanation of the main configuration variables and the workflow.

This code is everything but production code or good, anyone is free to submit PRs, open issues or fork it, just for me that I kept opening out-dated ymir than not sniffing anything. Thanks to: @mdx7 for implementing a ymir version parametre and helping figuring out how to get the client's build.

Configuration Variables

ymirCSVName

Specifies the name and path for the CSV file where ymir release information will be saved. Example: ymir_versions.csv.

pathDefineName

Specifies the name and path for the CSV file that will store client path definitions. Example: pathDefines.csv.

ymirPath

Defines the directory where the ymir executables are located. The script will look here to find and run the correct ymir executable.

max_threads

Sets the number of threads used by pefile when extracting version information from client executables. Increasing this value may speed up version extraction on powerful hardware.

clientDefines

A dictionary mapping ymir executable names to human-readable client names. Usually, you do not need to modify this.

wowPaths

A dictionary mapping ymir executable names to the paths of your WoW client executables. This is used as a base reference for the code. In the future, this may be loaded from a CSV instead of being hardcoded.

Each entry contains:

  • ymir executable name
  • WoW client path
  • WoW executable name
  • Human-readable comment (for code and CSV)
  • Version column (automatically extracted from the client)

Requirements

Install the required Python packages:

pip install -r requirements.txt

To run the script:

ymir_launcher.py

What Does This Script Do?

  1. Fetches ymir Releases:

    • Retrieves the list of ymir releases from GitHub, including their names (for readability) and supported builds.
    • Saves this information to a CSV file (default: ymir_versions.csv).
  2. Checks Executable Versions:

    • For each ymir executable, runs it with --version to determine its version.
    • If the command fails or times out, the Current Version column in the CSV is set to "No --version output".
    • The CSV will have:
      • Version: The version from the GitHub release
      • Current Version: The version found from the local executable
  3. Generates pathDefines.csv:

    • Creates a CSV listing each ymir executable, the WoW client path, executable name, and a human-readable name.
    • Checks all defined paths; if a client version is found, it is added to the version column (this process may take a few seconds to several minutes depending on your hardware).

    TODO: Actual ask or check if the path already exist and to use the python or csv one (allowing easier editing.)

  4. Matches Versions:

    • Compares the version column in pathDefines.csv with the Current Version in ymir_versions.csv.
    • If they match, the client is considered up-to-date and will be displayed in the selection list.

    Example selection menu:

    1 - Classic Era
    2 - MoP Classic
    3 - TBC Classic
    4 - Retail
    Q - Quit
    
  5. Launching ymir:

    • After selecting a version, the script clears the respective client's cache and launches the corresponding ymir executable.
    • You must still launch the WoW client manually through Battle.net.

Notes

  • This process ensures your client and ymir versions are matched and up-to-date.
  • Make sure your WoW client is updated before running this script for best results.

Example

Examples/
├── pathDefines.csv
└── ymir_versions.csv

ymir/ (not included in this repo)
├── ymir_classic_era.exe
├── ymir_classic_era_ptr.exe
├── ymir_classic_mop.exe
├── ymir_classic_mop_ptr.exe
├── ymir_classic_tbc.exe
├── ymir_classic_tbc_ptr.exe
├── ymir_classic_titan.exe
├── ymir_ptr.exe
└── ymir_retail.exe
Click to see how it fully looks on run-time
> ymir-python-script> python ymir_launcher.py
---------------------------------------------------------------------------------------
#   Name               Version         Github Date          Added Date                 
---------------------------------------------------------------------------------------
1   Retail             12.0.1.66838    2026-02-10T20:12:37Z 2026-04-21T15:11:17.560625+00:00
2   Retail PTR         12.0.1.65769    2026-02-10T20:12:37Z 2026-04-21T15:11:17.560625+00:00
3   MoP Classic        5.5.3.66839     2025-12-09T22:27:14Z 2026-04-21T15:11:17.560625+00:00
4   MoP Classic PTR    5.5.3.66382     2025-12-09T22:27:14Z 2026-04-21T15:11:17.560625+00:00
5   Titan Classic      3.80.1.66991    2026-04-10T12:25:44Z 2026-04-21T15:11:17.560625+00:00
6   TBC Classic        2.5.5.66765     2025-12-06T12:30:05Z 2026-04-21T15:11:17.560625+00:00
7   TBC Classic PTR    2.5.5.65000     2025-12-06T12:30:05Z 2026-04-21T15:11:17.560625+00:00
8   Classic Era        1.15.8.66564    2025-10-21T12:46:29Z 2026-04-21T15:11:17.560625+00:00
9   Classic Era PTR    1.15.8.64057    2025-10-21T12:46:29Z 2026-04-21T15:11:17.560625+00:00
---------------------------------------------------------------------------------------
Created directory: ./Examples
Saved 9 entries to ./Examples\ymir_versions.csv
Checking executables in: ./ymir
Found executables: ['ymir_classic_era.exe', 'ymir_classic_era_ptr.exe', 'ymir_classic_mop.exe', 'ymir_classic_mop_ptr.exe', 'ymir_classic_tbc.exe', 'ymir_classic_tbc_ptr.exe', 'ymir_classic_titan.exe', 'ymir_ptr.exe', 'ymir_retail.exe']
----------------------------------------------------------------------------------------------------------------------
#   Name               Version         Github Date          Added Date                  Current Version               
----------------------------------------------------------------------------------------------------------------------
1   Classic Era        1.15.8.66564    2025-10-21T12:46:29Z 2026-04-21T15:11:17.560625+00:00 1.15.8.66564                  
2   Classic Era PTR    1.15.8.64057    2025-10-21T12:46:29Z 2026-04-21T15:11:17.560625+00:00 No --version output           
3   MoP Classic        5.5.3.66839     2025-12-09T22:27:14Z 2026-04-21T15:11:17.560625+00:00 5.5.3.66839                   
4   MoP Classic PTR    5.5.3.66382     2025-12-09T22:27:14Z 2026-04-21T15:11:17.560625+00:00 5.5.3.66382                   
5   TBC Classic        2.5.5.66765     2025-12-06T12:30:05Z 2026-04-21T15:11:17.560625+00:00 2.5.5.66765                   
6   TBC Classic PTR    2.5.5.65000     2025-12-06T12:30:05Z 2026-04-21T15:11:17.560625+00:00 2.5.5.65000                   
7   Titan Classic      3.80.1.66991    2026-04-10T12:25:44Z 2026-04-21T15:11:17.560625+00:00 3.80.1.66991                  
8   Retail PTR         12.0.1.65769    2026-02-10T20:12:37Z 2026-04-21T15:11:17.560625+00:00 12.0.1.65769                  
9   Retail             12.0.1.66838    2026-02-10T20:12:37Z 2026-04-21T15:11:17.560625+00:00 12.0.1.66838                  
----------------------------------------------------------------------------------------------------------------------
Updated 'Current Version' for 9 executables in ./Examples/ymir_versions.csv
Wrote 9 entries to ./Examples\pathDefines.csv
C:\Program Files (x86)\World of Warcraft\_classic_era_\WowClassic.exe

C:\Program Files (x86)\World of Warcraft\_classic_\WowClassic.exe
C:\Program Files (x86)\World of Warcraft\_classic_ptr_\WowClassicT.exe
C:\Program Files (x86)\World of Warcraft\_anniversary_\WowClassic.exe
C:\Program Files (x86)\World of Warcraft\_classic_era_ptr_\WowClassicT.exe

C:\Program Files (x86)\World of Warcraft\_ptr_\WowT.exe
C:\Program Files (x86)\World of Warcraft\_retail_\Wow.exe
Updated 'version' column for 9 entries in ./Examples\pathDefines.csv
1 - Classic Era
2 - MoP Classic
3 - TBC Classic
4 - Retail
Q - Quit
Select a client to launch (number or Q to quit): 1
Removing cache: C:\Program Files (x86)\World of Warcraft\_classic_era_\Cache [Was already deleted]
The system cannot find the file specified.
Launching ymir: **\ymir\ymir_classic_era.exe
> ymir-python-script>

License

MIT - do whatever you want with it. See LICENSE for details.


Disclaimer: This README was generated with the help of GitHub Copilot.

About

Python script that made to work ymir is a sniffing tool as a launcher, which fetches the releases, check the client versions and only shows valid options (out-dated sniffer won't allow you to choose), so you gotta update your sniffers!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages