This utility provides an alternative to the Twitch/Curse client for management and updating of addons for World of Warcraft. The Twitch/Curse client is rather bloated and buggy, and comes with many features that most users will not ever use in the first place. This utility, however, is lightweight and makes it very easy to manage which addons are being updated, and to update them just by running a python script.
Supporting both retail and classic addons!
The best way to get the latest stable code is to head to the Latest Releases page, or selecting the GitHub Releases
tab above.
If you're feeling adventurous, you can also download the latest master
branch by pressing the big green Clone or download
button and selecting Download ZIP
.
- You must have a version of Python 3.7.4+. Basically, any new version of Python.
You should already have pip
included with your Python installation.
This is the default package manager for Python.
You can check by running pip --version
on the command line.
If it's not there, download the latest version of Python for your platform, and check the box during installation to include pip
.
This utility has three Python module dependencies:
- The requests module, for making HTTP requests
- The BeautifulSoup4 module, for HTML document parsing
- The cloudscraper module, for bypassing Curse's bot-detection measures
It's recommended you manage this with pipenv
. All you need to do is run the following on the command line to install pipenv
and the dependencies:
cd wow-addon-updater/
pip install pipenv
pipenv install
The packages will be automagically installed by pipenv
to a local virtual environment.
After performing the setup steps, you can run the executable scripts by clicking either:
run_Windows.bat
for Windows orrun_MacLinux.sh
for other platforms.
To run directly from the command line, use pipenv run
:
pipenv run python -m updater [-c FILE]
More advanced usage includes optionally specifying a configuration file, which is detailed in the next section.
The config.ini
file is used by default to find where to install the addons to, and where to get the list of addons from.
It requires that some properties be set, if you do not want to use the defaults such as:
-
WoW Addon Location
- The WoW application files addon directory
- (The standard addon location on macOS is
/Applications/World of Warcraft/Interface/AddOns
) - (default
= C:\Program Files (x86)\World of Warcraft\_retail_\Interface\AddOns
)
-
Addon List File
- A file specifying which addons to install and/or update
- This file will not exist at first, so you should create
addons.txt
in the same directory as the utility. - (default
= addons.txt
)
-
Installed Versions File
- A file which tracks your installed addon versions
- (default
= installed.ini
)
-
Game Version
- The game version (either
retail
orclassic
) that you would like to target for addons - (default
= retail
)
- The game version (either
The module supports a command-line configuration for maintaining multiple set of addons. For example, a set of addons for retail, and a different set of addons for classic.
To use a different configuration file, specify it with the --config
flag (or -c
) e.g.
pipenv run python -m updater -c my-custom-config.ini
The following hosts are supported as download targets. The URL specified should be to the main page of the addon, or in the case of GitHub, to the root of the repository.
Retail | Classic | |
---|---|---|
Curse | ✅ | ✅ |
WoWAce | ✅ | ✅ |
WoWInterface | ✅ | ✅ |
GitHub | ✅ | ✅ |
Tukui | ✅ | ✅ |
Whatever file you use for your list of addons needs to be formatted in a particular way. Each line corresponds to an addon, and the line just needs to contain the link to the page for the addon. For example:
https://www.curseforge.com/wow/addons/world-quest-tracker
https://www.curseforge.com/wow/addons/deadly-boss-mods
https://www.curseforge.com/wow/addons/auctionator
https://www.wowinterface.com/downloads/info24005-RavenousMounts.html
https://www.github.com/some-user/some-addon-repo
Each link needs to be the main page for the addon, as shown above.
If you want to extract a subfolder from the default downloaded folder (typically needed with Tukui addons), add a pipe character (|
) and the name of the subfolder at the end of the line. For example, the ElvUI addon can be added as follows:
https://git.tukui.org/elvui/elvui|ElvUI
Bring up the dev pipenv
with:
pipenv install --dev
Run tests with:
pipenv run python -m unittest -v
or tests with coverage:
pipenv run coverage run --source=updater -m unittest -v
pipenv run coverage report
- Submit Issues, PR's, or make general comments
- ????
- Profit
Shout out to GitHub user kuhnertdm
for establishing the original base of this utility, and giving people an alternative to the wasteland of mainstream clients.