Code Monkey home page Code Monkey logo

wow-addon-updater's Introduction

wow-addon-updater

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!

Build Status

Downloading

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.

First-time setup

System dependencies

  • You must have a version of Python 3.7.4+. Basically, any new version of Python.

Python module dependencies

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.

Running the utility

After performing the setup steps, you can run the executable scripts by clicking either:

  • run_Windows.bat for Windows or
  • run_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.

Configuring the utility

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 or classic) that you would like to target for addons
    • (default = retail)

Multiple configurations

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

Supported addon hosts

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

Input file format

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.

Addons archives containing subfolders

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

Contributing

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
  1. Submit Issues, PR's, or make general comments
  2. ????
  3. Profit

Thanks

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.

wow-addon-updater's People

Contributors

grrttedwards avatar saritus avatar zurohki avatar hjaltesorgenfrei avatar peachicetea avatar audited avatar cory-kruger avatar delduwath avatar ghosthree3 avatar quasarj avatar sudonym1 avatar fezzik avatar

Stargazers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.