diff --git a/CHANGELOG.md b/CHANGELOG.md index 6312c27..ecc93cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.1.30 + +feat: use /api/v3/salmon/weapon + ## 0.1.29 feat: add fail_reason for salmon run diff --git a/src/constant.ts b/src/constant.ts index edeaaf0..626b8b4 100644 --- a/src/constant.ts +++ b/src/constant.ts @@ -1,7 +1,7 @@ import type { StatInkPostBody, VsHistoryDetail } from "./types.ts"; export const AGENT_NAME = "s3si.ts"; -export const S3SI_VERSION = "0.1.29"; +export const S3SI_VERSION = "0.1.30"; export const NSOAPP_VERSION = "2.3.1"; export const WEB_VIEW_VERSION = "1.0.0-433ec0e8"; export const S3SI_LINK = "https://github.com/spacemeowx2/s3si.ts"; diff --git a/src/dict/stat.ink.ts b/src/dict/stat.ink.ts deleted file mode 100644 index a10d308..0000000 --- a/src/dict/stat.ink.ts +++ /dev/null @@ -1,19 +0,0 @@ -const SOURCE = ` -kuma_slosher 23900, grizzco_slosher 熊先生印章泼桶 Bär-Schwapper Grizzco Slosher Grizzco Slosher Derramatic Don Oso Derramatic Don Oso Seau M. Ours SA Seau M. Ours Cie Secchiostro Ursus Beer & Co-morser Ведроган «Потапыч Inc.» クマサン印のスロッシャー 熊先生商會潑桶 Grizzco Slosher -kuma_blaster 20900, grizzco_blaster 熊先生印章爆破枪 Bär-Blaster Grizzco Blaster Grizzco Blaster Devastador Don Oso Lanzamotas Don Oso Blaster M. Ours SA Blasteur M. Ours Cie Blaster Ursus Beer & Co-blaster Бластер «Потапыч Inc.» クマサン印のブラスター 熊先生商會爆破槍 Mr. 베어표 블래스터 -kuma_stringer 27900, grizzco_stringer 熊先生印章猎鱼弓 Bär-Stringer Grizzco Stringer Grizzco Stringer Arcromatizador Don Oso Arcromatizador Don Oso Transperceur M. Ours SA Transperceur M. Ours Cie Calamarco Ursus Beer & Co-spanner Тетиватор «Потапыч Inc.» クマサン印のストリンガー 熊先生商會獵魚弓 Mr. 베어표 스트링거 -kuma_charger 22900, grizzco_charger 熊先生印章蓄力狙击枪 Bär-Konzentrator Grizzco Charger Grizzco Charger Cargatintas Don Oso Cargatintas Don Oso Fusil M. Ours SA Fusil M. Ours Cie Splatter Ursus Beer & Co-lader Сплатган «Потапыч Inc.» クマサン印のチャージャー 熊先生商會蓄力狙擊槍 Grizzco Charger -kuma_shelter 26900, grizzco_brella 熊先生印章防空伞 Bär-Pluviator Grizzco Brella Grizzco Brella Paratintas Don Oso Paratintas Don Oso Para-encre M. Ours SA Para-encre M. Ours Cie Sparasole Ursus Beer & Co-plenzer Зонтган «Потапыч Inc.» クマサン印のシェルター 熊先生商會防空傘 Mr. 베어표 셸터 -`; - -export const KEY_DICT = new Map(); -for (const line of SOURCE.split(/\n/)) { - const [key, ...names] = line.split(/\t/); - for (let name of names) { - name = name.trim(); - if (KEY_DICT.has(name) && KEY_DICT.get(name) !== key) { - console.log(`Conflict: ${name} => ${KEY_DICT.get(name)} and ${key}`); - } - KEY_DICT.set(name, key); - } -} diff --git a/src/exporters/stat.ink.ts b/src/exporters/stat.ink.ts index 345678a..ad92e83 100644 --- a/src/exporters/stat.ink.ts +++ b/src/exporters/stat.ink.ts @@ -37,7 +37,6 @@ import { urlSimplify, } from "../utils.ts"; import { Env } from "../env.ts"; -import { KEY_DICT } from "../dict/stat.ink.ts"; const COOP_POINT_MAP: Record = { 0: -20, @@ -47,6 +46,7 @@ const COOP_POINT_MAP: Record = { }; class StatInkAPI { + statInk = "https://stat.ink"; FETCH_LOCK = new Mutex(); cache: Record = {}; @@ -67,8 +67,8 @@ class StatInkAPI { const fetch = this.env.newFetcher(); return await (await fetch.get({ url: type === "VsInfo" - ? "https://stat.ink/api/v3/s3s/uuid-list" - : "https://stat.ink/api/v3/salmon/uuid-list", + ? `${this.statInk}/api/v3/s3s/uuid-list` + : `${this.statInk}/api/v3/salmon/uuid-list`, headers: this.requestHeaders(), })).json(); } @@ -76,7 +76,7 @@ class StatInkAPI { async postBattle(body: StatInkPostBody) { const fetch = this.env.newFetcher(); const resp = await fetch.post({ - url: "https://stat.ink/api/v3/battle", + url: `${this.statInk}/api/v3/battle`, headers: { ...this.requestHeaders(), "Content-Type": "application/x-msgpack", @@ -108,7 +108,7 @@ class StatInkAPI { async postCoop(body: StatInkCoopPostBody) { const fetch = this.env.newFetcher(); const resp = await fetch.post({ - url: "https://stat.ink/api/v3/salmon", + url: `${this.statInk}/api/v3/salmon`, headers: { ...this.requestHeaders(), "Content-Type": "application/x-msgpack", @@ -156,12 +156,16 @@ class StatInkAPI { } } + getSalmonWeapon = () => + this._getCached( + `${this.statInk}/api/v3/salmon/weapon?full=1`, + ); getWeapon = () => - this._getCached("https://stat.ink/api/v3/weapon?full=1"); + this._getCached(`${this.statInk}/api/v3/weapon?full=1`); getAbility = () => - this._getCached("https://stat.ink/api/v3/ability?full=1"); + this._getCached(`${this.statInk}/api/v3/ability?full=1`); getStage = () => - this._getCached("https://stat.ink/api/v3/stage"); + this._getCached(`${this.statInk}/api/v3/stage`); } export type NameDict = { @@ -479,10 +483,9 @@ export class StatInkExporter implements GameExporter { async mapCoopWeapon( { name, image }: { name: string; image: Image | null }, ): Promise { - const weaponMap = await this.api.getWeapon(); - const weapon = - weaponMap.find((i) => Object.values(i.name).includes(name))?.key ?? - KEY_DICT.get(name); + const weaponMap = await this.api.getSalmonWeapon(); + const weapon = weaponMap.find((i) => Object.values(i.name).includes(name)) + ?.key; if (!weapon) { if (this.isRandomWeapon(image)) {