Skip to content

Instantly share code, notes, and snippets.

@alyti
Last active June 16, 2024 16:54
Show Gist options
  • Save alyti/24459f6e2d5eba2cab10aca27d29470b to your computer and use it in GitHub Desktop.
Save alyti/24459f6e2d5eba2cab10aca27d29470b to your computer and use it in GitHub Desktop.
Download mods from ageofempires.com

AoE2 DE Mod downloader bookmarklet

TL;DR:

  1. Make a new bookmark
    • Copy the contents of the snippet below into location field for a new bookmark.
    • Call bookmark whatever you want, I went with AoE2 DE Mod DL.
  2. Make sure you are signed into the website (https://ageofempires.com/mods), if you aren't, the API will just reject your request.
    • It's completely free and doesn't care if you own the game on that account.
  3. Navigate to mod of your choice and click the bookmark.
  4. Wait for a bit, the API tends to be slow...
  5. You should get a download popup for mod's archive.
  6. Extract archive into something like C:\Users\YOUR USERNAME\Games\Age of Empires 2 DE\SOME NUMBERS\mods\local
    • For example I want x256 techs mod (mod id: 832), I would extract contents of the newly downloaded aoe_832.zip into folder C:\Users\alyti\Games\Age of Empires 2 DE\1212112121212121212\mods\local\aoe_832.
javascript:(function() {
let id = parseInt(location.pathname.match("([0-9]{1,5})")[0], 10); if (id === NaN) {return};
fetch("https://api.ageofempires.com/api/v1/mods/Download", {"credentials": "include", "headers": { "Content-Type": "application/json" }, "body": JSON.stringify({id, boolValue: true}), "method": "POST", "mode": "cors"}).then(r => r.json()).then(r => {location.href = r.value.downloadUrl}).catch(e => console.log(e));
})()
@bhattibabu
Copy link

hey can you guys update this cant download new mods
and i am unable to understand the contents in zip files r unable to be understood which folder to put in location

@SamShoking
Copy link

I didn't bother with the regex or the method outlined in the OP. Instead I used the website, subscribed to all the mods I wanted. Then from the "subscribed mods" page I opened the console and created a small method just to download the mod:

const fn = (id) => fetch("https://api.ageofempires.com/api/v1/mods/Download", {"credentials": "include", "headers": { "Content-Type": "application/json" }, "body": JSON.stringify({id, boolValue: true}), "method": "POST", "mode": "cors"}).then(r => r.json()).then(r => {location.href = r.value.downloadUrl}).catch(e => console.log(e));

This is a thin wrapper around the fetch call from OP. Basically I just manually entered the IDs from the mods since they were all accessible on the subscribed page. So I entered the above in the console, pressed enter, then did something like this for each mod I wanted: fn(12345) where 12345 is the ID of the mod you want.

Tnx. This method is working.

@Amspec
Copy link

Amspec commented Apr 3, 2024

I didn't bother with the regex or the method outlined in the OP. Instead I used the website, subscribed to all the mods I wanted. Then from the "subscribed mods" page I opened the console and created a small method just to download the mod:

const fn = (id) => fetch("https://api.ageofempires.com/api/v1/mods/Download", {"credentials": "include", "headers": { "Content-Type": "application/json" }, "body": JSON.stringify({id, boolValue: true}), "method": "POST", "mode": "cors"}).then(r => r.json()).then(r => {location.href = r.value.downloadUrl}).catch(e => console.log(e));

This is a thin wrapper around the fetch call from OP. Basically I just manually entered the IDs from the mods since they were all accessible on the subscribed page. So I entered the above in the console, pressed enter, then did something like this for each mod I wanted: fn(12345) where 12345 is the ID of the mod you want.

Tnx. This method is working.

Brother, I have been trying for an hour. What am i doing wrong.
image_2024-04-04_005119671

@alex-taxiera
Copy link

I didn't bother with the regex or the method outlined in the OP. Instead I used the website, subscribed to all the mods I wanted. Then from the "subscribed mods" page I opened the console and created a small method just to download the mod:

const fn = (id) => fetch("https://api.ageofempires.com/api/v1/mods/Download", {"credentials": "include", "headers": { "Content-Type": "application/json" }, "body": JSON.stringify({id, boolValue: true}), "method": "POST", "mode": "cors"}).then(r => r.json()).then(r => {location.href = r.value.downloadUrl}).catch(e => console.log(e));

This is a thin wrapper around the fetch call from OP. Basically I just manually entered the IDs from the mods since they were all accessible on the subscribed page. So I entered the above in the console, pressed enter, then did something like this for each mod I wanted: fn(12345) where 12345 is the ID of the mod you want.

Tnx. This method is working.

Brother, I have been trying for an hour. What am i doing wrong. image_2024-04-04_005119671

You didn't follow the instructions very well.

So I entered the above in the console, pressed enter, then did something like this for each mod I wanted: fn(12345) where 12345 is the ID of the mod you want.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment