GithubHelp home page GithubHelp logo

acidweb / cursebreaker Goto Github PK

View Code? Open in Web Editor NEW
745.0 25.0 74.0 730 KB

TUI/CLI addon updater for World of Warcraft.

License: GNU General Public License v3.0

Python 100.00%
world-of-warcraft cli-addon-updater

cursebreaker's Introduction

CurseBreaker

TUI/CLI addon updater for World of Warcraft.

Screenshot

DOWNLOAD

The latest release can be found here.
Please be aware that Linux (.gz) and macOS (.zip) versions are not thoroughly tested.
Windows 10+, Ubuntu 20.04+, Debian 11+ and macOS 11+ are supported.

USAGE

Place CurseBreaker binary inside the directory containing Wow.exe, WowClassic.exe or World of Warcraft.app.
Read the instructions at the top of the screen.

Already installed addons will not be recognized by CurseBreaker, and they need to be reinstalled.
This process can be partially automated by using the import command.

Retail, Cataclysm Classic and Classic clients are supported. The client version is detected automatically.
By default CurseBreaker will create backups of the entire WTF directory.

TIPS & TRICKS

  • TUI will look a lot better if the application is started by something else than the default Windows command prompt. Windows Terminal is recommended.
  • Many of the fields are links if used terminal emulator supports them.
  • On Windows command uri_integration can be used to enable integration with the Wago Addons and Wago page.
  • Most of the commands support the space-separated list of addons.
  • install command has an optional -i flag that can be used to disable the client version check.
  • Environment variable CURSEBREAKER_PATH can be used to set the custom location of WoW client.
  • The application can be run in non-interactive mode by providing commands directly as a parameter.
  • When the application is started with a headless parameter entire addon and Wago upgrade process plus WTF backup should be executed in the background. Log file CurseBreaker.html will be created in the same directory as the application.

SUPPORTED URL

  • Wago Addons: https://addons.wago.io/addons/[addon_name], wa:[addon_name]
  • WoWInterface: https://www.wowinterface.com/downloads/[addon_name], wowi:[addon_id]
  • Tukui: ElvUI, Tukui
  • GitHub: Development versions of multiple addons. Slugs are suffixed with :Dev.
  • GitHub Releases: https://github.com/[username]/[repository_name], gh:[username]/[repository_name]
  • Wago: CurseBreaker can update auras and Plater profiles/scripts like WeakAuras Companion.

WAGO ADDONS SUPPORT

To use Wago Addons as addon source user needs to provide a personal API key. It is a paid feature.
The key can be obtained here and needs to be added to the application configuration by using the set wago_addons_api command.

GITHUB SUPPORT

Providing personal access token greatly increase speed of bulk version check and solve possible issues with rate limiting.
Both classic and fine-grained tokens are supported. No additional permissions are required.
Token can be added to application by using the set gh_api command.

WEAKAURAS SUPPORT

CurseBreaker by default will try to update all detected WeakAuras and Plater profiles/scripts. The process works the same as WeakAuras Companion.
All updates will still need to be applied in-game in the WeakAuras/Plater option menu.
Command toggle wago can be used to set a single author name that will be ignored during the update.
Additionally Wago API key can be set with the set wa_api command so non-public entries will also be upgradeable.

KNOWN ISSUES

  • Using WoWInterface projects that provide multiple addon releases (example) will always install a retail version of the addon. It can't be fixed as WoWInterface API doesn't support this type of project.
  • Some WoWInterface addon categories (e.g. Compilations, Optional) are not handled by their API. Addons in these categories can't be installed.
  • WoWInterface projects that need to install files outside the Interface\AddOns directory are not supported.

COPYRIGHT

CurseBreaker is a free software/open source and is distributed under the GNU General Public License v3.

Icon made by Nikita Golubev is licensed by CC 3.0 BY.

cursebreaker's People

Contributors

acidweb avatar aolasz avatar dependabot[bot] avatar fenneh avatar ferronn-dev avatar jvdende avatar ncc-lykos avatar theilak avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cursebreaker's Issues

Booty Bay Gazette not updating

Booty Bay Gazette doesn't seem to update. My guess is that since it doesn't use versions ( just BootyBayGazette.zip ) CB thinks it's up to date.

Closes instantly

I placed the cursebreaker.py into the folder with the wow.exe and when I click it the window opens and closes immediately. No errors about being in the wrong location or anything. Is this still working?

Installing "Classic Quest Log for Classic" deletes other addons

Installing for force-updating "Classic Quest Log for Classic" (wowi:24937-ClassicQuestLogforClassic) deletes all other addons in the Interface/Addon directory.

If I install this addon first, and then the other addons I use, it gets marked as modified:
image

CB mac & Linux update issue

When the binary is downloaded, it is not marked for execution. The process should chmod +x the new executable file after renaming the current to .old

GitHub Support

Really happy to find a Twitch alternative that works across multiple websites. Would love if GitHub could also make that list.

Many thanks

Use retail version if no classic is specified

When I try to install addons that work for classic, but not labeled as classic (because the developers refuse to tag it as classic, because "it works") it throws an error: "Failed to find release for your client version."

Shouldn't it ask (or force it with -f/--force arg) the retail version if no version found for me?

Addons I tried to install (they are all installed for me and they are all working fine):

TukUI\ElvUI

First of all, I want to thank you for great program. Use it on daily basis and it is gorgeous. But I can not figure out how to download this type addon from TukUI https://www.tukui.org/addons.php?id=3 what command should I use to get it from Tuk ? Right now I only can get Elvui\Tukui and not other addons on their site tho, So I don not this is issue, or I simply can not find how, if it not possible, can this feature can be requested ? I know many addon from Elvui (expect Elvui and Tukui obviously) are on cursepage and can be downloaded via this beautiful programm. But some are only available through their site.
Thank you in advance

Problem when installing classic addons

For classic wow , when updating, error printed :
Failed to parse addon data. There is some issue with the website or this addon don't have release for your client version.

How could I solve it?

3.0.1 strange addons mix

Hi, recently I've had a strange issue with two addons getting mixed. The two addons were:

https://www.curseforge.com/wow/addons/clique
https://www.curseforge.com/wow/addons/all-the-things

Looking at the JSON, the entry for Clique had the Addon URL of all the things, and in total I had 4 separate entries for All the Things. When I ran CurseBreaker, I had 3 lines "removed" (I think?) for All The Things in the "Status" column. Closing and reopening CurseBreaker, the same happened every time.

I have deleted both addons, removed all entries for them in the json, and reinstalled the addons properly. Now it's looking okay, except this error in the bottom:

image

I realize it would have been more useful to you if I had made a copy of the json file and screenshots of the problems before trying to fix them.. sorry.

Classic Support for curseforge

Hello, I have been looking for a way to manage addons for wow, when classic comes out. Your program is the best I have found(nice work by the way). It works great if the only version of a addon is for classic but if the dev posts modern and classic versions on the same page it will only download the modern one.

Not sure how you go about scraping the info, so here is some info that may help. When you
look a the files tab on a addon there is a way to filter by modern/classic/all.

Show All
https://www.curseforge.com/wow/addons/deadly-boss-mods/files/all?filter-game-version=
Show Modern
https://www.curseforge.com/wow/addons/deadly-boss-mods/files/all?filter-game-version=1738749986%3A517
Show Classic
https://www.curseforge.com/wow/addons/deadly-boss-mods/files/all?filter-game-version=1738749986%3A67408

This seems to be common between any given addon.
/files/all?filter-game-version=
/files/all?filter-game-version=1738749986%3A67408
/files/all?filter-game-version=1738749986%3A517

So when given a link to install from like
https://www.curseforge.com/wow/addons/deadly-boss-mods/
It should be possible append the rest of it, depending on if you want classic/modern. With falling back to ALL, if modern/classic ones fails.

Thanks you for your time. Hope the above helps/makes sense.

Errno 13 Permission denied

trying to install a few addons manually, keep getting permission denied error. cursebreaker is in the normal windows wow directory of C:/program files x86/world of warcraft.
have an admin windows account, tried to run cursebreaker as admin. any other options to fix this? folder permissions are definitely set to full control as well

Cryptic error when ratelimit exceeded on github

Running CurseBreaker when github doesn't return the current app status returns:


~~~ CurseBreaker v3.1.7 ~~~

Update failed!

Reason: 'name'

Press any key to continue . . .

I'm thinking this is coming from the spot which checks for CurseBreaker's current version and failing due to github returning this json:


{
  "message": "API rate limit exceeded for ### (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
  "documentation_url": "https://developer.github.com/v3/#rate-limiting"
}

Req: Increase scrollback buffer

Could you increase the scrollback buffer?
When a lot of addons exist, a status command scrolls them off the screen and the buffer doesn't go back far enough to see them.

Install/update alpha versions Curse

I found your program to be quite amazing, but I found out that you cannot get alpha versions from wowace.com/projects, where addon authors put up their beta/alpha version from Curse. I would love this as an option. Thanks!

Terminal resizing doesn't work on all terminals on linux

This method of resizing works on xterm and urxvt, but not all terminals support resizing via escape codes. My suggestion is to just remove it altogether, since on linux the terminal is already open when we run the program, and we're not opening a new one.

else:
set_terminal_size(100, 50)

When running on a terminal that doesn't accept the resizing (konsole in my case,) All the output of the program can end up in the scrollback buffer instead of in the live window where it should be.

Also thank you very much for adding linux support, One less reason to reboot for WoW.

Failed to parse addon data.

I see this was an issue before, but I'm having this issue now and it is returning no additional information...

image

Is there a log or verbose output somewhere?

2.6.0 Tukui Classic "Incorrect client version."

Have CurseBreaker.exe in _classic_ folder

~~~ CurseBreaker v2.6.0 ~~~

Use command help or press TAB to see a list of available commands.
Command exit or pressing CTRL+D will close the application.

CB> install https://www.tukui.org/classic-addons.php?id=2
0/1 |                                                                                                                                                                                                                                                                                                                        |

Incorrect client version.

At moment of writing, installing ElvUI (with CurseBreaker in _classic_) gives version b377fbd5
│ Up-to-date │ ElvUI │ b377fbd5 │

This might be a separate issue but;

Downloading ElvUI (classic) manually from https://www.tukui.org/classic-addons.php?download=2
Extracting ElvUI and ElvUI_OptionsUI to Interface\AddOns folder

CB> import
Addons found:
ElvUI

...

CB> import install
0/1 |                                                                                                                                                                                                                                                                                                                        |

Destination path 'Interface\AddOns\ElvUI' already exists
CB>

During this process CurseBreaker creates the folder elvui-classic-master in Interface\AddOns, contains ElvUI and ElvUI_OptionsUI, identical content just newer timestamps (did a diff check)

Scroll through the addon list in the window

I find it to be quite buggy to scroll up to see all addons when you want to see the list from 'status', for example. A PGUP/PGDOWN keybind function, or another keybind that could work to be able to scroll up through the window would be awesome! Thanks!

Program not working anymore

Hi there, you're probably aware but wanted to post an official issue anyway as I didn't see any. Starting today the program doesn't accept "status" or "update" command with a "Failed to execute bulk version check" error. Happens to me and a friend.

Love the program, great job !

WA Update Error

Have checked the API and Account Name all match.

If I run 'wa_update', I get the following error:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 1044671: character maps to <undefined>

During handling of the above exception, another exception occurred:

xml.parsers.expat.ExpatError: mismatched tag: line 2, column 106
[10780] Failed to execute script CurseBreaker

Req: Continue on after error

Today Pawn updated, but for some reason CB couldn't update it. I don't know if its a cache error on some webserver somewhere or what, but it just quit at that point.

That is an alright behavior in some cases and makes you fix the issue, but could we just mark that as Error and continue on to the rest? I did check and Pawn is still up (Apologies for my last report haha) -> https://www.curseforge.com/wow/addons/pawn/files

image

2.5.0 "Failed to parse addon data."

Upgraded to 2.5.0 (automatically)
Since then, when trying to install any CF addon "Failed to parse addon data. There is some issue with the website or this addon don't have release for your client version."

Export addon list?

So this is more of a feature request, apologies if this is the wrong area.

Curse and Twitch had a way to export a list of your addons to create a "pack". That functionality is long gone, but it would be great if this was supported in CB.

Basically, run export required-addons and it would create a pack called required-addons that you can share with guild mates etc, and they could run import required-addons and it would install whats in the list.

I play with a group of friends and we all use CB, and it is amazing. To be able to share an addon list would be even better. No need to get fancy with it, just export whats installed, import what is in the list. If people want to get fancy they can manually modify the file or something?

Support classic and retail at the same time

Would it be possible to have the same CurseBreaker.exe update all addons in both versions? I know you just changed the location of the settings file to a version's WTF directory, but starting a single CurseBreaker instead of two would be convenient.

Request Log File and Auto Close

I would like to request an option to generate a log file for addon updates. Either a simple window dump or something like logging all updates and update suppressions.

In sync with this suggestion, an option for the window to immediately close instead of waiting for a key press.

Url_intergration "command not found"

Clicking "Install" on curseforge starts cursebreaker with the error "command not found"
contents of cursebreaker.reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.ccip\Shell\Open\Command]
@="\"D:\\Games\\World of Warcraft\\_retail_\\CurseBreaker.exe\" \"%1\""

CurseBreaker 3.0.0 feedback & request

First, fantastic! I see what you meant now and that is how I should have approached the multi-platform code.

Everything appears to function well on macOS.

One thing, when I pull a status ....I'd like to know the origin of the addon if possible? Either cf wowi tu or tuc. I have Shadow & Light and BenikUI and others that I installed from tu: and I'd like to verify that that is still the source they are coming from.

Thanks!

WoWInterface and classic Addons

WoWInterface has as well as Curseforge two download buttons if an Addon exists for retail and classic (since when can I not say). An Example of this is Lagbar. It would be nice if Cursebreaker could handle this and not always download the retail version for classic.

Cross Platform Compatibility

So I've been looking into making this work cross platform...

It seems it could be possible. Are you using py2exe for this? macOS supports py2app which could possibly do the same thing for macOS users such as myself... I'd love to dump Twitch on its face.

Would there be any interest in using more cross platform friendly code if you had a dedicated tester for such a project?

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.