Senth / minecraft-mod-manager

Install and update mods from CurseForge and Modrinth through a CLI
MIT License
75 stars 7 forks source link

the old curseforge api has been disabled, create a new version with this change included #190

Closed theofficialgman closed 2 years ago

theofficialgman commented 2 years ago

Describe the bug

old curseforge api is finally down (from my end)

Steps to reproduce

unable to install ALL mods since curse gets searched first and the retry limit gets reached

betterbeds
    🔍 Searching for mod
        1: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=better-beds. Retrying in 1.0 seconds...
        2: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=better-beds. Retrying in 1.5 seconds...
        3: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=better-beds. Retrying in 2.25 seconds...
        4: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=better-beds. Retrying in 3.375 seconds...
        5: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=better-beds. Retrying in 5.0625 seconds...
        5: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=better-beds. Giving up.
        503: Service Unavailable
        🔺 Max retries exceeded. Skipping...

betterbeds is available on modrinth, however, because curseforge still exists in this code, it gets tried and skipped entirely

Expected Behavior

curse is removed and modrinth still works

Info

theofficialgman commented 2 years ago

even specifying modrinth does not work.... it still checks curseforge first

mmm -v "1.18.2" install sodium=modrinth
sodium
    🔍 Searching for mod
        1: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=sodium. Retrying in 1.0 seconds...
        2: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=sodium. Retrying in 1.5 seconds...
        3: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=sodium. Retrying in 2.25 seconds...
        4: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=sodium. Retrying in 3.375 seconds...
        5: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=sodium. Retrying in 5.0625 seconds...
        5: Failed to connect to https://addons-ecs.forgesvc.net/api/v2/addon/search?gameId=432&sectionId=6&searchFilter=sodium. Giving up.
        503: Service Unavailable
        🔺 Max retries exceeded. Skipping...
        🔺 1 mods not found
            sodium
                Check so that it's slug is correct. You can set the slug by running:
                minecraft-mod-manager configure sodium=curse:mod-slug,modrinth:mod-slug

please create a 1.4.0 with the commits from master which removed curseforge

Senth commented 2 years ago

Thanks @theofficialgman for letting me know. I've released v1.4.0 which disables the CurseForge API.

The last week, I've been working on a backend that uses the new API since I managed to get an API key. As I can't distribute the key with the app this was the only way I could see how it would work. The backend will also search/get mods from Modrinth.

This will also allow me to improve the search/find functionality without having to add specific slugs in the future 🙂

A bit unsure about the timeline for when Curse is up and running again. Estimate is between 1 and 4 weeks, depending on how much time I can spend on the project 🙂

theofficialgman commented 2 years ago

I am aware of the curseforge issues... seems almost unusable the new api to me. I'm in agreement with peterix's interpretation (from multimc) https://tinyurl.com/28r42fwk (tinyurl so as to not link to that issue)

Senth commented 2 years ago

Yeah, the proxy would also break TOS. But I'm going with that route since if I share the key with the app it won't take long until that key is used in multiple places where I cannot enforce it.

But there is a third solution. The third solution would be to have CurseForge disabled by default and ask each user to apply for a developer API key. The user can then supply the key themselves. But I want to avoid this since it is not user-friendly.

So I'm going with the proxy, and if my key is disabled I will change and add a new header in the API call to the proxy, that way it should still be able to search on CurseForge, even though that would disclose the API key to a third-party (me).

If that's the case I'll try to fix the issue again by moving everything to the client again. 🤷‍♂️