diff --git a/package-lock.json b/package-lock.json index 66e1892a..4efe9437 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", + "warframe-public-export-plus": "^0.1.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" @@ -3893,6 +3894,11 @@ "warframe-worldstate-data": "^2" } }, + "node_modules/warframe-public-export-plus": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.1.0.tgz", + "integrity": "sha512-a76Be2pwPjKrin67zMux5L9U6zt9bhEtyy723tM2czGGcOZYWp1XdCZY684q3zPytWS0SmEia0C/h/4EiadBnQ==" + }, "node_modules/warframe-riven-info": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/warframe-riven-info/-/warframe-riven-info-0.1.0.tgz", diff --git a/package.json b/package.json index 87a35cf0..3f4b4f0e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "express": "^5.0.0-beta.3", "mongoose": "^8.1.1", "warframe-items": "^1.1261.19", + "warframe-public-export-plus": "^0.1.0", "warframe-riven-info": "^0.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1" diff --git a/src/controllers/custom/getItemListsController.ts b/src/controllers/custom/getItemListsController.ts index c0345716..b2f970bc 100644 --- a/src/controllers/custom/getItemListsController.ts +++ b/src/controllers/custom/getItemListsController.ts @@ -1,6 +1,7 @@ import { RequestHandler } from "express"; -import { MinItem, warframes, weapons, items } from "@/src/services/itemDataService"; +import { MinItem, warframes, weapons, items, getEnglishString } from "@/src/services/itemDataService"; import badItems from "@/static/json/exclude-mods.json"; +import ExportArcanes from "@/node_modules/warframe-public-export-plus/ExportArcanes.json"; interface ListedItem { uniqueName: string; @@ -19,13 +20,20 @@ function reduceItems(items: MinItem[]): ListedItem[] { } const getItemListsController: RequestHandler = (_req, res) => { + const mods = reduceItems(items.filter(item => item.category == "Mods")); + for (const arcane of ExportArcanes) { + mods.push({ + uniqueName: arcane.uniqueName, + name: getEnglishString(arcane.name) + }); + } res.json({ warframes: reduceItems(warframes), weapons: reduceItems(weapons.filter(item => item.productCategory != "OperatorAmps")), miscitems: reduceItems( items.filter(item => item.category == "Misc" || item.category == "Resources" || item.category == "Fish") ), - mods: reduceItems(items.filter(item => item.category == "Mods" || item.category == "Arcanes")), + mods, badItems }); }; diff --git a/src/services/itemDataService.ts b/src/services/itemDataService.ts index 2aafbcc5..51ad3b68 100644 --- a/src/services/itemDataService.ts +++ b/src/services/itemDataService.ts @@ -2,6 +2,7 @@ import { getIndexAfter } from "@/src/helpers/stringHelpers"; import { logger } from "@/src/utils/logger"; import Items, { Buildable, Category, MinimalItem, Warframe, Weapon } from "warframe-items"; import badItems from "@/static/json/exclude-mods.json"; +import dict_en from "@/node_modules/warframe-public-export-plus/dict.en.json"; export type MinWarframe = Omit; export type MinWeapon = Omit; @@ -129,3 +130,7 @@ export const getItemByName = (name: string) => { const item = items.find(item => item.name === name); return item; }; + +export const getEnglishString = (key: string) => { + return dict_en[key as keyof typeof dict_en] ?? key; +};